In een cursus die ik volg staat dit script:

Tafel.php

<?
//we gaan eerst uit de url halen om welke tafel het hier gaat
//surf daarom naar www.jouwsite.nl/tafels.php?tafel=10 om de tafel van 10 uit te rekenen (en pas de url naar je eigen situatie aan)

$tafel=$_GET['tafel'];

//even laten weten om welke tafel het gaat :
echo "tafel van ".$tafel."";

//dan het getal waar we nu zijn even op 0 zetten
$gedaan="0";

//gezien we tot 10x*tafel* willen uitrekenen laten we hem 10x loopen
while ($gedaan<=10) {

//het antwoord uitrekenen
$uitkomst = $tafel * $gedaan;

//de som echo'en
echo "".$tafel." keer ".$gedaan." is ".$uitkomst."<br>";
//vergeet de br aan het einde niet ;)

//1tje bij gedaan optellen
$gedaan++;

//en de while loop afsluiten
}
?>


Aan die code wil ik een form plakken..

Ik dacht aan zoiets:

form.php

<?
if (empty($_GET['post'])) {

?>
<form action="tafels.php?tafel=(het nummer)" method="post">
<input type="text" name="tafel">
<input type="submit" value="verstuur">
</form>
<?
}else{
// het script ofzo?
}
?>


Hoe krijg ik dit werkend?
Dat hij aan elkaar werkend word?
Bij mij lukt het niet.. Al van alles geprobeerd hij blijft steeds niks weergeven.
Als je van de method die je nu als POST hebt GET maakt, dan worden de waardes verstuurd als GET's, aangezien je tafel-veld dezelfde naam heeft als de GET die wordt opgevraagd in het andere script hoef je in je formuliertje alleen van "post", "get" te maken.
Ik heb em nu zo:

<?
if (empty($_GET['post'])) {

?>
<form action="tafels.php?tafel=(het nummer)" method="get">
<input type="text" name="tafel">
<input type="submit" value="verstuur">
</form>

<?
}else{
$tafel=$_GET['tafel'];

echo "tafel van ".$tafel."";


$gedaan="0";


while ($gedaan<=10) {



$uitkomst = $tafel * $gedaan;


echo "".$tafel." keer ".$gedaan." is ".$uitkomst."<br>";



$gedaan++;


}
}
?> 


en hij werkt nog niet helemaal kijk: http://www.lipdesign.nl/tafel.php
@Vincent: Lees de commentaar regels ook even door.
<?php
// Start gewoon met <?php en niet met <?
// Als de server geen shorttags ondersteunt heb je namelijk een probleem

// Zet tijdens het testen ALTIJD errorhandling aan
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

// Input ALTIJD checken
if(isset($_GET['tafel']) and is_numeric($_GET['tafel']))
{
// Indien de check okee is kan je de variabele gebruiken
$tafel=$_GET['tafel'];
}
else
{
// Bij niet okee stop je er zelf een getal in (random 1-10)
$tafel = rand(1, 10);
}

// Gebruik bij echo ENKELE quotes, zodat je de html-dubbele-quotes niet hoeft te escapen
// En gebruik spaties om het overzichtelijker te maken
// Gebruik geen zinloze quotes zoals echo "" . $var; ...... gewoon echo $var;
echo 'Tafel van ' . $tafel . '<br/><br/>';

// Getallen moeten NIET tussen quotes
$gedaan = 0;

while ($gedaan <= 10) // Zelf zou ik een for() gebruiken maar okee
{
// Het antwoord uitrekenen hoeft niet in een aparte $var, dat kan direct
echo $gedaan . ' keer ' . $tafel . ' is ' . $gedaan * $tafel . '<br>';
// Verhogen
$gedaan++;
}

// Maak het formulier
echo '<br/>';
echo '<form action="" method="get">';
echo 'Geef een getal in: <input type="text" name="tafel">';
echo '<input type="submit" value="verstuur">';
echo '</form>';

?>
Een FORM kan je ook onder PHP gebruiken. In zo'n geval hoef je PHP niet eerst af te sluiten, hierbij moet je wel slashes gebruiken:

<?
if (empty($_GET['post'])) {

echo "<form action=\"tafels.php?tafel=(het nummer)\" method=\"post\">
<input type=\"text\" name=\"tafel\">
<input type=\"submit\" value=\"verstuur\">
</form>";

}
else
{
$tafel=$_GET['tafel'];

echo "tafel van ".$tafel."";

$gedaan="0";

while ($gedaan<=10) {
$uitkomst = $tafel * $gedaan;
echo "".$tafel." keer ".$gedaan." is ".$uitkomst."<br>";
$gedaan++;

}
}
?>

// EDIT
Ik zie wel dat je bij de Action van het FORM TafelS hebt staan; moet dit geen Tafel zijn, aangezien je het aan het begin van dit topic hebt over:

In een cursus die ik volg staat dit script:

Tafel.php
@Dennis: Tip: Lees ook even het commentaar bij mijn vorige post door.
@Santhe:
Dankje wel.. meteen wat bijgeleerd :)
maar je zei dit: while ($gedaan <= 10) // Zelf zou ik een for() gebruiken maar okee
Daar komt meteen een nieuwe vraag naar boven.. die ik al een tijd had:
Wanneer gebruik je nou: while
wanneer: for
en wanneer foreach?

@Dennis:
Bedankt hij werkt goed :)
alleen dit:
tafels.php?tafel=(het nummer)
moet volgens mij:
tafels.php?tafel=
zo want hij gaat anders raar doen ;)
Foreach:
Voor elke item in de aangegeven array execute deze code.
*Dus als je met arrays werkt.
For loop:
De for loop is gewoon een while loop met een beetje meer code toegevoegd.
*Je kunt kiezen: For loop of while loop
While loop:
De functie van de while loop is om een taak te doen over een lange tijd als de aangegeven conditie statement true is.
*Iets doen als een statement true is (tabellen uit database halen bijvoorbeeld)
Do while:
Een do while loop is een iets bewerkte versie van while loop. Aan de ander hand, een do while loop is altijd één keer geëxecuted in zijn blok van code. Dit is omdat de conditie statement niet is gechecked totdat het desbetreffende code één keer is uitgevoerd.
*Kun je kiezen: Do while loop of while loop.

Bron: www.Tizag.com
Eigenlijk zit de oplossing al in de benaming.

While - Zolang er nog iets komt ga je door. Bijvoorbeeld bij het opvragen uit de database. Je weet niet hoeveel er is gevonden maar je wilt alles zien.
Foreach - Voor elk ... Is heel goed te gebruiken in combinatie met array's. Je kan dan heel eenvoudig elke waarde bekijken.
For - Dat ligt eigenlijk al vast. Iets 10 keer doen dan gebruik je for(). Voor 1 t/m 10 doe dit of doe dat.
@GaMer13: Bedankt voor de vertaling ! + Santhe: Ik denk dat ik het begrijp alleen 1 vraagje.. wat is de letterlijke betekenis van execute?
Uitvoeren...
[edit]
Als het het hele werkwoord betreft, anders is het meer "voer uit"
[/edit]

Reageren