Multidesk.be » Forums » PHP » Lus (foreach) (gesloten)

Helpinformatie
Dit onderwerp werd gesloten.
Het is bijgevolg niet mogelijk er nog op te reageren.
  • Pagina
  • 1 van 1
  • RSS
  • Eerste ongelezen reactie
  • Plaats een reactie
  • Abonneer mij
  • Onderwerp sluiten
0 gasten lezen dit onderwerp.
^ Onderwerp geschreven door Gast_1557 op zondag 20 april 2008 om 23:03:18.
Gast_1557 heeft nog geen avatar toegevoegd
Multiviteit: 560
Get Low
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Hoi allemaal,

ik ben al heel erg lang bezig geweest om een lus voor elkaar te krijgen met foreach functie maar lukt niet kan iemand me helpen?

Dit is mijn heel code
PHP
  1. <?php
  2. /*
  3. // sessie starten
  4. // creren databaseconnectie
  5. // check of naam is ingevuld als naam niet is ingevuld toon dan invoerveld
  6. als naam is ingevuld toon tafelkeuze
  7. als keuze is gemaakt doe rekensommetjes met willekeurige factor en onthou resultaat
  8. -als 10 sommetjes zijn geweest: geef resultaat en sla reesultaat op in database.
  9. -sal in database op huidige datum en tijd.
  10. toon knop (of link) waarmee resultaten uit de database gehaald kunnen worden
  11.  
  12. programmeer-tools:
  13. db_connect()
  14. mt_rand() of suffle()
  15. sql: SELECT * FROM [tabel] WHERE ...
  16. INSERT INTO[tabel] ...
  17.  
  18. functie maken!!
  19. */
  20.  
  21. //include ("connect.inc.php");
  22.  
  23. if (!isset($_GET['submit']))
  24. {
  25. show_form_naam();
  26. }
  27. else
  28. {
  29. toon_tafel_keuze();
  30. }
  31.  
  32.  
  33. //function
  34. function show_form_naam()
  35. {
  36. //toon html-formuliertje waarin gebruiker zijn naam kan opgeven
  37. <form name='form' method='get' action='".$_SERVER['PHP_SELF']."'>
  38. <input type='text' name='naam' value='".$_GET['naam']."'> : Naam
  39. <br>
  40. <input type='text' name='achternaam' value='".$_GET['achternaam']."'> : Achternaam
  41. <br>
  42. <select name='tafels'>
  43. <option>Kies tafel</option>
  44. <option VALUE='1'>1</option>
  45. <option VALUE='2'>2</option>
  46. <option VALUE='3'>3</option>
  47. <option VALUE='4'>4</option>
  48. <option VALUE='5'>5</option>
  49. <option VALUE='6'>6</option>
  50. <option VALUE='7'>7</option>
  51. <option VALUE='8'>8</option>
  52. <option VALUE='9'>9</option>
  53. <option VALUE='10'>10</option>
  54. </select>
  55. <br>
  56. <input type='submit' name='submit' value='Begin!'>
  57. <br>
  58. </form>";
  59. }
  60.  
  61. function sommetjes()
  62. {
  63. //toon 10 verschillende, willekeurige sommetjes met de gekozen tafel
  64. //Naam en achternaam weergeven
  65. echo $naam." ".$achternaam."<br> \n";
  66.        
  67.         //Het weergeven en uitreken van tafels
  68.         $tafels = $_GET['tafels'];
  69.         $nummer = range(1,10); //array maken getal van 1 tot 10
  70.         shuffle($nummer); //getal doorelkaar goeien
  71.        
  72.         for ($i=0; $i<10; $i++) { //variabele nr$ heeft waarde 1 door ++ gaat de waard omhoog
  73.                 $resultaat = $nummer[$i]*$tafels; //variabele $resultaat is een invoer veld
  74.                 $vaule = $nummer[$i];
  75.                 echo $nummer[$i]." X ".$tafels." = "."<input type='text' size='5' name='".$nummer[$i]."' value='".$value."'>"."<br> \n";
  76.         }
  77.         echo "<form name='form' method='get' action='".$_SERVER['PHP_SELF']."'>
  78.         <input type='submit' name='klaar' value='Klaar!'>
  79.         </form>";
  80. }
  81.  
  82.  
  83. function toon_tafel_keuze()
  84. {
  85. //toont html-formuliertje met dropdown keuze 10 tafels
  86. //Variabel maken van $_GET
  87. $naam = $_GET['naam'];
  88. $achternaam = $_GET['achternaam'];
  89. $tafels = $_GET['tafels'];
  90.  
  91. //Sessievariabelen waarden toekennen
  92. $_SESSION['naam'] = $naam;
  93. $_SESSION['achternaam'] = $achternaam;
  94. $_SESSION['tafels'] = $tafels;
  95.  
  96. //Controle over de 3 inputvelden: naam, achternaam, tafels
  97. if($_SESSION['naam'] == "")
  98. {
  99.         echo "<br /><FONT COLOR='red' />Vul a.u.b. uw naam in"."<br> \n";
  100. }
  101. if($_SESSION['achternaam'] == "")
  102. {
  103.         echo "<br /><FONT COLOR='red' />Vul a.u.b. uw achternaam in"."<br> \n";
  104. }
  105. if($_SESSION['tafels'] == "" || !is_numeric($_SESSION['tafels']))
  106. {
  107.         echo "<br /><FONT COLOR='red' />Kies a.u.b. een Tafel die u wilt oefenen"."<br> \n";
  108. }
  109. //Laatste control om ervoor te zorgen dat de foutmelding boven de pagina word weergegeven
  110. if ($_SESSION['naam'] == "" || ($_SESSION['achternaam'] == "" || !is_numeric($_SESSION['tafels'])))
  111. {
  112. show_form_naam();
  113. }
  114.  
  115. else
  116. {
  117. sommetjes();
  118. }
  119. }
  120.  
  121. ?>
  122.  


bij mij gaat het over dit stukje code:
PHP
  1.  
  2. function sommetjes()
  3. {
  4. //toon 10 verschillende, willekeurige sommetjes met de gekozen tafel
  5. //Naam en achternaam weergeven
  6. echo $naam." ".$achternaam."<br> \n";
  7.        
  8.         //Het weergeven en uitreken van tafels
  9.         $tafels = $_GET['tafels'];
  10.         $nummer = range(1,10); //array maken getal van 1 tot 10
  11.         shuffle($nummer); //getal doorelkaar goeien
  12.        
  13.         for ($i=0; $i<10; $i++) { //variabele nr$ heeft waarde 1 door ++ gaat de waard omhoog
  14.                 $resultaat = $nummer[$i]*$tafels; //variabele $resultaat is een invoer veld
  15.                 $vaule = $nummer[$i];
  16.                 echo $nummer[$i]." X ".$tafels." = "."<input type='text' size='5' name='".$nummer[$i]."' value='".$value."'>"."<br> \n";
  17.         }
  18.         echo "<form name='form' method='get' action='".$_SERVER['PHP_SELF']."'>
  19.         <input type='submit' name='klaar' value='Klaar!'>
  20.         </form>";
  21. }
  22.  

hierin, maat hij namelijk de gewenste tafel en vervolgens moet je de tafel gaan invullen bij
PHP
  1. echo $nummer[$i]." X ".$tafels." = "."<input type='text' size='5' name='".$nummer[$i]."' value='".$value."'>"."<br> \n";
  2.  

Moet hij gaan controleren over de volgende punten:
-Is de tafel ingevuld
-Is het numeric

Wat ik eigenlijk probeer te maken is eigenlijk dit idee:
PHP
  1.  
  2. // voorbeeld
  3.  
  4. if ( $_SERVER['REQUEST_METHOD'] == 'GET' )
  5. {
  6.   // fouten bijhouden
  7.   $aErrors = array();
  8.  
  9.   // er is kennelijk een formulier gepost
  10.   if ( isset( $_GET['klaar'], $_GET['tafels'] ) )
  11.   {
  12.     // bekijk elke uitkomst
  13.     foreach( $_GET['uitkomsten'] as $iAantal => $iUitkomst )
  14.     {
  15.       // check of de uitkomst klopt (maak daar dan maar een functie van)
  16.       if ( !checkUitkomst( $iTafel, $iAantal, $iUitkomst ) )
  17.       {
  18.         // uitkomst was verkeerd
  19.         $aErrors[] = $iAantal;
  20.       }
  21.     }
  22.   }
  23.   if ( sizeof( $aErrors ) > 0 )
  24.   {
  25.     // er waren fouten, doe er iets mee
  26.     // ....
  27.   }
  28. }
  29.  

Die code is niet van mij ik heb het ergens van een andere forum gekregen alleen ik snap dr niks van. kan iemand me hiermee aub helpen???

Alvast Bedankt
Ciaao_O_
^ Reactie #1 geschreven door fawkes op maandag 21 april 2008 om 16:57:52.
fawkes' avatar
Multiviteit: 230
-
-
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Allereerst is het misschien handig dit te veranderen:
PHP
  1. <?php
  2. // regel 24
  3. if (!isset($_GET['submit']))
  4.   /* naar */
  5. if (empty($_GET['submit']))
  6.  
  7. // regel 99
  8. if($_SESSION['naam'] == "")
  9.   /* naar */
  10. if(empty($_SESSION['naam']))
  11.  
  12. // regel 103
  13. if($_SESSION['achternaam'] == "")
  14.   /* naar */
  15. if(empty($_SESSION['achternaam']))
  16.  
  17. // regel 103
  18. if($_SESSION['tafels'] == "" || !is_numeric($_SESSION['tafels']))
  19.   /* naar */
  20. if(empty($_SESSION['tafels']) || !is_numeric($_SESSION['tafels']))
  21.  
  22. // regel 112
  23. if ($_SESSION['naam'] == "" || ($_SESSION['achternaam'] == "" || !is_numeric($_SESSION['tafels'])))
  24.   /* naar */
  25. if (empty($_SESSION['naam']) || (empty($_SESSION['achternaam']) || !is_numeric($_SESSION['tafels'])))
  26.  
  27. ?>
Dit is handiger werken dan met = "" of met !isset.

maar voor de rest snap ik niet echt wat je met de foreach wilt.
Moet de foreach die je nu hebt uitgelegd worden, of moeten wij helpen zodat je een eigen foreach kan maken.

Misschien is het ook wel handig om de uitleg van foreach te lezen op verschillende sites.
Deze is misschien erg handig:
http://nl.php.net/foreach

maar voor de rest snap ik niet zo heel goed waarbij ik je kan helpen.

groeten,,
-
^ Reactie #2 geschreven door Simon op maandag 21 april 2008 om 21:08:39.
Simon's avatar
Multiviteit: 3742
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Jij gebruikt momenteel een for-lus.
Een foreachlus om een array te doorlopen. Je kan dus inderdaad de array $nummer doorlopen met een foreachlus, maar dit zal op hetzelfde neerkomen zoals met je for-lus nu.

Ik heb geprobeerd om te begrijpen wat je bedoeling is en hieronder je for-lus omgevormd naar een foreach-lus die hetzelfde doet. Ik ga er wel van uit dat je een typefout gemaakt hebt op regel 15 ($vaule) en dat de waarde voor die variabele eigenlijk $resultaat moest zijn, anders doe je er niets mee.

PHP
  1. <?php
  2.  
  3. //Het weergeven en uitreken van tafels
  4. $tafels = $_GET['tafels'];
  5. $nummers = range(1,10); //array maken getal van 1 tot 10
  6. shuffle($nummers); //getal doorelkaar goeien
  7.      
  8. //de nummers doorlopen en voor elk getal in de array een invulveld weergeven
  9. foreach( $nummers as $getal )
  10. {
  11.         $resultaat = $getal * $tafels;
  12.         $value = $resultaat;
  13.        
  14.         //invulveld weergeven
  15.         echo $getal. ' X ' .$tafels. ' = <input type="text" size="5" name="' .$getal. '" value="' .$value. '">
  16.         <br />';
  17. }
  18.  
  19. ?>

^ Reactie #3 geschreven door Wheeldigger op maandag 21 april 2008 om 21:32:31.
Wheeldigger's avatar
Multiviteit: 10173
Moderator
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
De 2e code in je eerste post, regel 15; vaule.... wat Simon zegt, moet dat geen value zijn?
^ Reactie #4 geschreven door Simon op dinsdag 22 april 2008 om 19:10:03.
Simon's avatar
Multiviteit: 3742
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
In principe zou vaule ook werken, maar dan moet je in de volgende regels geen value gebruiken natuurlijk :). En van de twee kiezen :).
^ Reactie #5 geschreven door Gast_1557 op woensdag 23 april 2008 om 14:45:43.
Gast_1557 heeft nog geen avatar toegevoegd
Multiviteit: 560
Get Low
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Hye guys thanks allemaal maar ik heb het opgelost door gebruik te maken van de for functie.
ik laat effe voorbeeldje zien.
PHP
  1.  
  2. function controleren_resultaat()
  3. {
  4. echo "<form name='form' method='get' action='".$_SERVER['PHP_SELF']."'>";
  5. //variabele gemaakt van de Sessions naam, achternaam, datum
  6. $naam = $_SESSION['naam'];
  7. $achternaam = $_SESSION['achternaam'];
  8. $datum = date("Ymd");
  9.  
  10. //variabele maken van de hidden velds die bij sommetjs zijn gemaakt
  11. $tafels = $_GET['tafels'];
  12. $nummer2 = $_GET['indeling'];
  13.  
  14. //Forlus $i is 0 en $i mag niet groter zijn dan 0 en waarde bij optellen elke keer
  15. for ($i=0; $i<10; $i++){
  16.  
  17. //table gemaakt voor de uitkomst wat je hebt ingevuld
  18. echo "<table border=0>";
  19.  
  20. //de uitkomst tafels en jou antwoord
  21. echo $nummer2[$i]."&nbsp; X ".$tafels."&nbsp; = ".$_GET['invoer'][$i];
  22.  
  23. $resultaat = $nummer2[$i]*$tafels;
  24.  
  25. //als jou antwoord is gelijk aan $resultaat
  26. if($_GET['invoer'][$i] == $resultaat)
  27. {
  28. //voor de goed antwoord
  29. echo "<td><tr><FONT COLOR='#0000FF' />"."&nbsp;".Goed."</td></tr>";
  30. $control = "Gehaald";
  31. }
  32. else
  33. {
  34. //voor slechte antwoord
  35. echo "<td><tr><FONT COLOR='#FF0033' />"."&nbsp;".Fout."</td></tr>";
  36. $control = "Gezakt";
  37. }
  38.  
  39. {
  40. //connect met de database
  41. $db = mysql_connect("localhost", "root", "")
  42.  
  43. //als connect niet mogelijk is dan laat error zien
  44. or die("kan niet verbinden: ".mysql_error());
  45.  
  46. //selecteer de database opdracht4 uit de connect($db)
  47. mysql_select_db("opdracht4", $db);
  48. //sql code uitvoeren
  49. $sql = "INSERT INTO opdracht4 (naam, achternaam, resultaat, datum, tafel, antwoord)
  50. VALUES('".$naam."','".$achternaam."','".$control."','".$datum."','".$tafels."','".$_GET['invoer'][$i]."')";
  51.  
  52. //als mysql niet bestaat
  53. if(!mysql_query($sql)) {
  54. echo "uitvoeren van de query is mislukt";
  55. }
  56. else
  57. {
  58. //weergeven van de resulaat
  59. echo "&nbsp;"."Het antwoord is"."&nbsp;".$resultaat;
  60.  
  61. }
  62.  
  63. }
  64.  
  65. }
  66. echo "<input type='submit' name='resultaten' value='Resultaten!'>";
  67. echo "</form>";
  68. }
  69.  

Opmerking van de crew

Bedankt voor de informatie (thumbsup)!

Deze kan op slot ;).
  • Pagina
  • 1 van 1
  • RSS
  • Eerste ongelezen reactie
  • Plaats een reactie
  • Abonneer mij
  • Onderwerp sluiten