login  Naam:   Wachtwoord: 
Registreer je!
 Forum

variable automatisch genereren in lus (Opgelost)

Offline html_user - 09/04/2012 10:32 (laatste wijziging 09/04/2012 10:39)
Avatar van html_userLid Ik probeer een formulier te maken waar je eerst zelf moet kiezen hoeveel keuzes er zijn. Je selecteert dit aantal uit een drop down lijstje. Deze worden dan verwerkt in php en roept het aantal input velden op dat de gebruiker gekozen heeft.

Mijn probleem zit bij het automatisch genereren van de variable voor elk input veld. Ik gebruik nu 'i' zoals je kunt zien in mijn code. Ik laat deze input velden ook valideren door een lus die dan normaal dezelfde 'i' heeft maar dit werkt niet. Ik krijg de waarden niet in de database.

Mijn code voor de input velden te maken:
  1. <td> Hoeveel keuzes kunner<br /> er gemaakt worden? </td>
  2. <td> <select name="keuze">
  3. <option value="2">2</option>
  4. <option value="3">3</option>
  5. <option value="4">4</option>
  6. <option value="5">5</option>
  7. <option value="6">6</option>
  8. <option value="7">7</option>
  9. <option value="8">8</option>
  10. <option value="9">9</option>
  11. <option value="10">10</option>
  12. </select> <input type="submit" name="zendkeuze" value="Maak keuze"/></td>
  13. </tr>
  14. <?php
  15.  
  16. if(isset($_POST['zendkeuze'])) {
  17.  
  18. for($i = 1; $i <= $_POST[keuze]; $i++) {
  19. echo"<tr><td> Keuze $i: </td> <td> <input type='text' name='keuze $i ' id='text' name='keuze $i ' </td></tr>";
  20. }
  21. }
  22. ?>


Mijn code die het verwerkt:
(Ik heb wel enkele delen weggelaten om het overzichtelijker te maken, er zit dus nu wel een syntax error in.)
  1. <?php
  2.  
  3. for($i = 1; $i <= $_POST[keuze]; $i++) {
  4.  
  5. if( $_POST["keuze $i"] == ""){
  6. $error[] = "<b> Er is niets ingevuld bij keuze $i.</b> ";
  7. }
  8.  
  9. }
  10.  
  11. //Errors moeten hier worden weergegeven --> Sitemasters
  12.  
  13. // -- Geen errors gevonden in de ingevulde gegevens!
  14. else{
  15.  
  16. $sql = mysql_query("INSERT INTO plan (optie1, optie2, optie3, optie4, optie5, optie6, optie7, optie8, optie9, optie10)
  17. VALUES ('".$_POST['keuze1']."','".$_POST['keuze2']."','".$_POST['keuze3']."','".$_POST['keuze4']."','".$_POST['keuze5']."','".$_POST['keuze6']."','".$_POST['keuze7']."','".$_POST['keuze8']."','".$_POST['keuze10']."','".$_POST['keuze10']."')");
  18.  
  19.  
  20. }
  21. ?>

10 antwoorden

Gesponsorde links
Offline icemar - 09/04/2012 11:02 (laatste wijziging 09/04/2012 11:03)
Avatar van icemar Lid Ik zie dat er diverse dingen verkeerd staan.
Heb ze aangepast en dan zou het beter moeten gaan.

  1. <td> Hoeveel keuzes kunner<br /> er gemaakt worden? </td>
  2. <td>
  3. <form method="post" >
  4. <select name="keuze">
  5. <option value="2">2</option>
  6. <option value="3">3</option>
  7. <option value="4">4</option>
  8. <option value="5">5</option>
  9. <option value="6">6</option>
  10. <option value="7">7</option>
  11. <option value="8">8</option>
  12. <option value="9">9</option>
  13. <option value="10">10</option>
  14. </select> <input type="submit" name="zendkeuze" value="Maak keuze"/>
  15. </form></td>
  16. </tr>
  17. <?php
  18.  
  19. if(isset($_POST['zendkeuze'])) {
  20. // form toevoegen
  21. echo '<form method="post" >';
  22.  
  23. for($i = 1; $i <= $_POST[keuze]; $i++) {
  24.  
  25. // hier spaties verwijderen echo"<tr><td> Keuze $i: </td> <td> <input type='text' name='keuze $i ' id='text' name='keuze $i ' </td></tr>";
  26. echo"<tr><td> Keuze $i: </td> <td> <input type='text' name='keuze $i' id='text' name='keuze $i' </td></tr>";
  27. }
  28. //opslaanknop toevoegen
  29. echo '<input type="submit" name="opslaan" value="opslaan"/>
  30. </form>';
  31. }
  32.  
  33. for($i = 1; $i <= $_POST[keuze]; $i++) {
  34. if( $_POST["keuze $i"] == ""){
  35. $error[] = "<b> Er is niets ingevuld bij keuze $i.</b> ";
  36. }
  37. }
  38.  
  39. //Errors moeten hier worden weergegeven --> Sitemasters
  40.  
  41. // -- Geen errors gevonden in de ingevulde gegevens!
  42. else{
  43.  
  44. $sql = mysql_query("INSERT INTO plan (optie1, optie2, optie3, optie4, optie5, optie6, optie7, optie8, optie9, optie10)
  45. VALUES
  46. ('".$_POST['keuze_1']."','".$_POST['keuze_2']."','".$_POST['keuze_3']."','".$_POST['keuze_4']."','".$_POST['keuze_5']."','".$_POST['keuze_6']."','".$_POST['keuze_7']."','".$_POST['keuze_8']."','".$_POST['keuze_9']."','".$_POST['keuze_10']."')");
  47. // stond 2x keuze 10 in
  48.  
  49. }


suc6 er mee
Offline html_user - 09/04/2012 11:43 (laatste wijziging 09/04/2012 11:55)
Avatar van html_user Lid Ik heb mijn fouten veranderd maar het werkt nog steeds niet ik denk dat het aan iets anders ligt. Misschien aan de controles die ik uitvoer(het verwerkende gedeelte). Als je het formulier eens test zie je dat hij steeds een error geeft op keuze 1 en keuze 2. Ook al is er geen error en als er een error is op keuze 3, 4, 5,... Wordt deze niet weergegeven.


Hierbij heel mijn code en ook de online versie van het programma.

Voorbeeld online
Het bericht Plaatsen:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html>
  3. <head>
  4. <title>Socializ - Home</title>
  5. <link rel="stylesheet" href="Planner.css" type="text/css" />
  6.  
  7. </head>
  8.  
  9. <body>
  10.  
  11. <div id="content"> <!-- Hierin zit alles de page en de balkuit -->
  12.  
  13. <div id="page">
  14. <img src="/Afbeeldingen/background_blauw.png" id="bheader" />
  15. <div id="werkblad">
  16. <?php
  17. if(!isset($_POST['nieuwb'])) {
  18. ?>
  19. <form name="nieuwb" method="post" action="">
  20. <table>
  21. <tr>
  22. <td> Naam Bericht: </td><td> <input type="text" name="naamb" id="naamb" /></td>
  23. </tr><tr>
  24. <td> Omschrijving </td> <td> <textarea name="omschrijving" id="omschrijving" > </textarea></td>
  25. </tr><tr>
  26. <td> Plaats: </td><td> <textarea name="plaats" id="plaats"> </textarea> </td>
  27. </tr><tr>
  28. <td> Hoeveel keuzes kunner<br /> er gemaakt worden? </td>
  29. <td> <select name="keuze">
  30. <option value="2">2</option>
  31. <option value="3">3</option>
  32. <option value="4">4</option>
  33. <option value="5">5</option>
  34. <option value="6">6</option>
  35. <option value="7">7</option>
  36. <option value="8">8</option>
  37. <option value="9">9</option>
  38. <option value="10">10</option>
  39. </select> <input type="submit" name="zendkeuze" value="Maak keuze"/></td>
  40. </tr>
  41. <?php
  42.  
  43. if(isset($_POST['zendkeuze'])) {
  44. // form toevoegen
  45. echo '<form method="post" >';
  46.  
  47. for($i = 1; $i <= $_POST[keuze]; $i++) {
  48.  
  49. echo"<tr><td> Keuze $i: </td> <td> <input type='text' name='keuze $i' id='text' name='keuze $i' </td></tr>";
  50. }
  51. echo "</form>";
  52. }
  53. ?>
  54. <tr>
  55. <td>Geplaatst door:</td> <td> <input type="text" name="persoon" id="persoon" /> </td>
  56. </tr><tr>
  57. <td><input type="submit" name="nieuwb" id="nieuwb" value="Bericht Plaatsen" /></td>
  58. </tr>
  59. </table>
  60. </form>
  61. <?php
  62. }
  63. else{
  64. include'nieuwbverw.php';
  65. }
  66. ?>
  67. </div>
  68. <br /><br />
  69. <img src="/Afbeeldingen/Socializ-Groen.png" id="bfooter" />
  70. </div>
  71. </div>
  72.  
  73. </body>
  74. </html>
  75.  
  76. </body>
  77. </html>


Het verwerkende gedeelte:
  1. <?php
  2. //beveiliging: gebruiker ingelogd?
  3. if(!isset($_COOKIE['Planner'])) { //cookie bestaat niet
  4. header("Location:http://www.planner.screebit.com/Start.php");
  5. }
  6.  
  7. include'sql_planner.php';
  8.  
  9. $error = array();
  10. //naam ingevuld?
  11. if($_POST['naamb'] == "") {
  12. $error[] = 'Er is geen naam voor je agenda ingevuld.';
  13. }
  14. //aantal karakters omschrijving klopt?
  15. $karakters_o = strlen($_POST['omschrijving']);
  16. if($karakters_O >= 400){
  17. $error[] = "<b>De omschrijving mag max. 400 tekens bevatten.</b><br/>";
  18. }
  19. //aantal karakters plaats klopt?
  20. $karakters_p = strlen($_POST['plaats']);
  21. if($karakters_p >= 250){
  22. $error[] = "<b>De plaats mag niet langer zijn dan 250 tekens</b>";
  23. }
  24.  
  25.  
  26.  
  27. for($i = 1; $i <= $_POST[keuze]; $i++) {
  28.  
  29. if( $_POST["keuze $i"] == ""){
  30. $error[] = "<b> Er is niets ingevuld bij keuze $i.</b> ";
  31. }
  32.  
  33. }
  34.  
  35.  
  36. $fouten = sizeof($error); // aantal errors tellen
  37. if($fouten != 0) { // Er is minstens 1 error
  38. echo 'Het bericht kon niet geplaatst worden omwille van de volgende reden(en):';
  39. echo '<ul>';
  40. for($t = 0; $t < $fouten; $t++) {
  41. echo '<li>'.$error[$t].'</li>';
  42. }
  43. }
  44.  
  45. // -- Geen errors gevonden in de ingevulde gegevens!
  46. else{
  47.  
  48. $date = date("d.m.y /o/m H:i") ;
  49. $naamgroep = $inhoud = $_COOKIE['Planner'];
  50.  
  51. $sql = mysql_query("INSERT INTO plan (naamgroep, naamb, omschrijving, datum, plaats, optie1, optie2, optie3, optie4, optie5, optie6, optie7, optie8, optie9, optie10)
  52. VALUES ( '". $naamgroep ."', '".$_POST['naamb']."', '".$_POST['omschrijving']."', '". $date ."','".$_POST['plaats']."','".$_POST['keuze1']."','".$_POST['keuze2']."','".$_POST['keuze3']."','".$_POST['keuze4']."','".$_POST['keuze5']."','".$_POST['keuze6']."','".$_POST['keuze7']."','".$_POST['keuze8']."','".$_POST['keuze9']."','".$_POST['keuze10']."')");
  53.  
  54. header('Location: http://www.planner.screebit.com/Start.php');
  55.  
  56. }
  57.  
  58. $sql = mysql_query("INSERT INTO agenda (naam, wachtwoord)
  59. VALUES ('".$_POST['naam']."','".($_POST['password1'])."')");
  60.  
  61.  
  62. ?>


Alvast bedankt
Html_user
Offline icemar - 09/04/2012 12:44
Avatar van icemar Lid Als de keuze velden leeg zijn wordt er dan een null in gezet of ??
ik denk dat daar het probleem ligt.
Offline html_user - 09/04/2012 16:56
Avatar van html_user Lid Ik controleer gewoon even door te zeggen:

if($keuze == ""){

}

voor de rest doe ik niets

Heb je een simpel voorbeeldje van wat je juist bedoelt?

Alvast bedankt!
Offline icemar - 09/04/2012 17:33
Avatar van icemar Lid Hoe is je database tabel opgezet ?
Offline html_user - 09/04/2012 18:16
Avatar van html_user Lid Ah er is geen standaardwaarde opgegeven. Moet dit??
Offline icemar - 09/04/2012 19:13
Avatar van icemar Lid Ik denk het wel aangezien als je het leeg is deze null moet worden of zo iets.
Maar ik kan niet zien aan welke voorwaarde deze tabel heeft.
Offline html_user - 09/04/2012 22:15
Avatar van html_user Lid Ik weet niet juist hoe ik de code van mijn database oproep omdat ik deze simpel gemaakt heb met php myadmin. Ik heb wel ingesteld:
Standaardwaarde = geen
Null = nee

Maar volgens mij zit er ook al een probleem bij het controleren van de variabelen want dit doet hij ook niet correct.

Offline icemar - 11/04/2012 20:52
Avatar van icemar Lid Je krijgt $_post["keuze_1"] terug en geen $_post["keuze1"] 
Bedankt door: html_user
Offline html_user - 13/04/2012 22:51
Avatar van html_user Lid Bedankt voor je hulp maar ik heb besloten
om het toch anders aan te pakken want ik
geraak er helemaal niet uit. 

Toch bedankt,
html_user
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.221s