login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Variabele overdragen

Offline maestro - 25/09/2004 15:23
Avatar van maestroHTML gevorderde Ik zit met het volgende probleem: ik wil hetgeen in een formulier is ingevuld, opslaan in een variabele en verder in een script op dezelfde pagina gebruiken. Ik gebruik hiervoor
  1. <form action="<?php print ("$PHP_SELF"); ?>" method="post">
Om aan mijn script wijs te maken of er al iets ingevuld is en op de verzendknop is gedrukt, heb ik hetvolgende script:
  1. <?php
  2. if (!isset($stage))
  3. {
  4. ?>
  5. <form action="<?php print ("$PHP_SELF"); ?>" method="post">
  6. <input type="text" name="mijn_variabele"><br><br>
  7. <input type="hidden" name="stage" value="1">
  8. <input type="submit" value="verzend">
  9. </form>
  10. <?php
  11. }
  12. elseif ($stage == 1)
  13. {
  14. //stuk script waar de waarde van $mijn_variabele gebruikt wordt
  15. }
  16. ?>

Het probleem is nu natuurlijk dat in het stuk waar $stage == 1 waar is, de variabele $mijn_variabele geen waarde heeft.
Hoe kan ik toch de waarde van $mijn_variabele overdragen naar de rest van het script? Of is er geen andere mogelijkheid dan de waarde over te dragen naar een nieuwe pagina en het script daar uit te voeren?

9 antwoorden

Gesponsorde links
Offline Thomas - 25/09/2004 15:33
Avatar van Thomas Moderator Heb je al geprobeerd te werken met superglobals ($_POST enzo) ?
Offline maestro - 25/09/2004 16:26
Avatar van maestro HTML gevorderde ok thanx.

Nu kan ik weer verder.
Offline maestro - 25/09/2004 17:53
Avatar van maestro HTML gevorderde Of toch niet...
Wat ik tot nu toe heb:

  1. <?php
  2. if (!isset($stage))
  3. {
  4. ?>
  5. <form action="<?php print ("$PHP_SELF"); ?>" method="post">
  6. <input type="text" name="mijn_variabele_1"><br><br>
  7. <input type="hidden" name="stage" value="1">
  8. <input type="submit" value="verzend">
  9. </form>
  10. <?php
  11. }
  12. elseif ($stage == 1)
  13. {
  14. $_GET[$mijn_variabele_1];
  15. //stuk script waar de waarde van $mijn_variabele_1 gebruikt wordt; tot hier toe alles OK
  16. ?>
  17. <form action="<?php print ("$PHP_SELF"); ?>" method="post">
  18. <input type="text" name="mijn_variabele_2"><br><br>
  19. <input type="hidden" name="stage" value="2">
  20. <input type="submit" value="verzend">
  21. </form>
  22. <?php
  23. }
  24. elseif ($stage == 2)
  25. {
  26. //opvragen van $mijn_variabele_1 en $mijn_variabele_2
  27. $_GET[$mijn_variabele_1];
  28. $_GET[$mijn_variabele_2];
  29. //$mijn_variabele_2 is overgedragen maar $mijn_variabele_1 niet!!
  30. }
  31. ?>


Probleem dus: $mijn_variabele_1 wordt niet meegenomen naar het gedeelte $stage == 2.

Hoe moet het dan wel?
Offline numlockrond - 25/09/2004 18:12 (laatste wijziging 25/09/2004 18:13)
Avatar van numlockrond Onbekend 1. Variabelen buiten quotes en als je superglobals kunt gebruiken, moet je ze ook overal gebruiken: print("$PHP_SELF") »» print($_SERVER['PHP_SELF'])

2. in je form staat method="post", dus moet je ook $_POST gebruiken en niet $_GET

3. Het is $_POST['mijn_variabele_1'] en niet $_POST[$mijn_variabele_1]

4. In het stuk waar $stage == 1 moet je $_POST['mijn_variabele_1'] in een hidden field zetten:
  1. <input type="hidden" name="mijn_variabele_1" value="<?php echo $_POST['mijn_variabele_1']; ?>">
Offline maestro - 25/09/2004 18:38
Avatar van maestro HTML gevorderde Ik heb mijn script aangepast, maar het werkt nog steeds niet.
Offline numlockrond - 25/09/2004 18:49
Avatar van numlockrond Onbekend laat het eens zien dan...
Offline Duikboot - 25/09/2004 18:54
Avatar van Duikboot Grafische gevorderde Is wel zo handig ja om fouten op te sporen  
Offline maestro - 25/09/2004 19:00
Avatar van maestro HTML gevorderde ok komt ie:

  1. <?php
  2. if (!isset($stage) || $stage == 0)
  3. {
  4. ?>
  5. <p>Om een tabel toe te voegen aan een bestaande database, gelieve eerst aan te duiden aan welke database een tabel moet toegevoegd worden.</p><br><br>
  6. <form action="<?php print ($_SERVER['PHP_SELF']); ?>" method="post">
  7. <select name="db_naam[]" size="3">
  8. <option value="leeg" selected>- - - - -</option>
  9. <?php
  10. //opvragen van alle databasenamen
  11. mysql_connect ('localhost');
  12. $query = "SHOW DATABASES";
  13. $result = mysql_query ($query);
  14. //opmaken van een lijst van alle databases
  15. if (mysql_num_rows($result) > 0)
  16. {
  17. while ($DB = mysql_fetch_array($result))
  18. {
  19. echo ("<option value = \"$DB[0]\">$DB[0]</option>");
  20. }
  21. }
  22. ?>
  23. </select>
  24. <input type="hidden" name="$db_naam[0]" value="<?php echo ($_POST['$db_naam[0]']); ?>">
  25. <input type="hidden" name="stage" value="1"><br><br>
  26. <input type="submit" value="verzend">
  27. </form>
  28. <?php
  29. }
  30. elseif ($stage == 1)
  31. {
  32. $_POST['$db_naam[0]'];
  33. if ($db_naam[0] == "leeg")
  34. {
  35. ?>
  36.  
  37. <p>Gelieve een database te selecteren! Klik op 'terug' om een database te selecteren.</p>
  38. <form action="<?php print ($_SERVER['PHP_SELF']); ?>" method="post">
  39. <input type="hidden" name="$db_naam[0]" value="<?php echo ($_POST['$db_naam[0]']); ?>">
  40. <input type="hidden" name="stage" value="0">
  41. <input type="submit" value="Terug">
  42. </form>
  43.  
  44. <?php
  45. }
  46. else
  47. {
  48.  
  49. ?>
  50.  
  51. <p>U gaat nu een nieuwe tabel cre&euml;ren in <b><?php echo ($db_naam[0]); ?></b>. Gelieve een naam te kiezen voor de nieuwe tabel. Klik vervolgens op 'Verder'.</p>
  52. <form action="<?php print ($_SERVER['PHP_SELF']); ?>" method="post">
  53. <input name="tabel_naam">
  54. <input type="hidden" name="$db_naam[0]" value="<?php echo ($_POST['$db_naam[0]']); ?>">
  55. <input type="hidden" name="$tabel_naam[0]" value="<?php echo ($_POST['$tabel_naam[0]']); ?>">
  56. <input type="hidden" name="stage" value="2">
  57. <input type="submit" value="Verder">
  58. </form>
  59.  
  60. <?php
  61. }
  62. }
  63. elseif ($stage == 2)
  64. {
  65. $_POST['$db_naam[0]'];
  66. if (!$db_naam[0]) echo ("DB niet gevonden.");
  67. }
  68. $_POST['$tabel_naam[0]'];
  69. if (!$tabel_naam[0]) echo ("tabel niet gevonden.");
  70. ?>


Output: "DB niet gevonden"
Offline maestro - 25/09/2004 21:59
Avatar van maestro HTML gevorderde Ik heb er zelf al een deel van het probleem opgelost. Hieronder geef ik nog maar eens het verbeterde script. Het probleem is nu dat count($db_naam[0]) wel de waarde 1 geeft, dus de variabele is wel overgedragen, maar de inhoud wan de array krijg ik er niet uit. echo ($db_naam[0]) geeft niets terug.
  1. <?php
  2. if (!isset($stage) || $stage == 0)
  3. {
  4. ?>
  5. <p>Om een tabel toe te voegen aan een bestaande database, gelieve eerst aan te duiden aan welke database een tabel moet toegevoegd worden.</p><br><br>
  6. <form action="<?php print ($_SERVER['PHP_SELF']); ?>" method="post">
  7. <select name="db_naam[]" size="3">
  8. <option value="leeg" selected>- - - - -</option>
  9. <?php
  10. //opvragen van alle databasenamen
  11. mysql_connect ('localhost');
  12. $query = "SHOW DATABASES";
  13. $result = mysql_query ($query);
  14. //opmaken van een lijst van alle databases
  15. if (mysql_num_rows($result) > 0)
  16. {
  17. while ($DB = mysql_fetch_array($result))
  18. {
  19. echo ("<option value = \"$DB[0]\">$DB[0]</option>");
  20. }
  21. }
  22. ?>
  23. </select>
  24. <input type="hidden" name="stage" value="1"><br><br>
  25. <input type="submit" value="verzend">
  26. </form>
  27. elseif ($stage == 1)
  28. {
  29. $_POST['$db_naam[0]'];
  30. //controle of er een database is geselecteerd
  31. if ($db_naam[0] == "leeg")
  32. {
  33. ?>
  34.  
  35. <p>Gelieve een database te selecteren! Klik op 'terug' om een database te selecteren.</p>
  36. <form action="<?php print ($_SERVER['PHP_SELF']); ?>" method="post">
  37. <input type="hidden" name="stage" value="0">
  38. <input type="submit" value="Terug">
  39. </form>
  40.  
  41. <?php
  42. }
  43. else
  44. //invoeren van een naam voor de tabel
  45. {
  46.  
  47. ?>
  48.  
  49. <p>U gaat nu een nieuwe tabel cre&euml;ren in <b><?php echo ($db_naam[0]); ?></b>. Gelieve een naam te kiezen voor de nieuwe tabel. Klik vervolgens op 'Verder'.</p>
  50. <form action="<?php print ($_SERVER['PHP_SELF']); ?>" method="post">
  51. <input name="tabel_naam">
  52. <input type="hidden" name="db_naam[0]" value="<?php echo ($_POST['$db_naam[0]']); ?>">
  53. <input type="hidden" name="stage" value="2">
  54. <input type="submit" value="Verder">
  55. </form>
  56. <?php
  57. }
  58. }
  59. //controle of de database naam goed is overgebracht
  60. elseif ($stage == 2)
  61. {
  62. $_POST['$db_naam[0]'];
  63. echo (count($db_naam[0]) ."<br>");
  64. echo ($db_naam[0]);
  65. }
  66.  
  67. //vervolg van het script
  68. ?>


Kan iemand me please zeggen wat er fout gaat? Ik zit er al uren op te turen, maar ik geraak geen meter verder.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.245s