login  Naam:   Wachtwoord: 
Registreer je!
 Forum

2x submitten??

Offline roy - 23/06/2007 14:17 (laatste wijziging 23/06/2007 16:26)
Avatar van royPHP gevorderde Beste,

Na het submitten moet er een nieuw record worden toegevoegd.

Waarom gebeurd dat in onderstaande code niet?
de insert wordt niet uitgevoerd, de tweede submit werkt niet...

Hoe kan ik dit oplossen??

Groeten,
Roy


  1. <?php
  2. include("../connect.php");
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  8. <title>Untitled Document</title>
  9. </head>
  10.  
  11. <body>
  12. <?PHP
  13. if(isset($_POST['submit'])) {
  14.  
  15. echo "".$_POST['menu']."";
  16.  
  17. if(isset($_POST['submit2'])) {
  18. //$commentaar = $_POST['commentaar'];
  19.  
  20. $insert = "INSERT INTO nieuwtjes (Datum, Tijd, Titel, Bericht) VALUES
  21. ('".date("Y-m-d")."', '".date("H:i")."', '".$_POST['menu']."', '$content')";
  22. mysql_query($insert) OR die ("Kon geen verbinding maken met MySQL_2");
  23. // header("location:index.php?middle=accountmaken");
  24. echo "Het nieuwtje is met succes toegevoegd!<BR>";
  25. echo "Je kan hieronder meteen een nieuw nieuwtje toevoegen.";
  26. } else {
  27.  
  28. ?>
  29. <form action="<? echo $_SERVER['PHPSELF']; ?>" method="post" enctype="multipart/form-data" name="addpost" id="addpost">
  30. <textarea name="content" cols="85" rows="15"></textarea>
  31. <input type="submit" value="Toevoegen" name="submit2">
  32. </form>
  33. <?
  34. }
  35. }
  36. else {
  37. ?>
  38. <form method="post" action="<? echo $_SERVER['PHPSELF']; ?>"> <label>
  39. <select name="menu">
  40. <?PHP
  41. $sql = "SELECT * FROM submenu"; // dit is dus de query om de producten op te halen
  42. $query = mysql_query($sql) or die (mysql_error()."<br>in file ".__FILE__." on line ".__LINE__);
  43. while($menu = mysql_fetch_array($query)) {
  44.  
  45. echo "<option value=\"".$menu['id']."\">".$menu['submenu']."</option>";
  46. }
  47. ?>
  48. </select>
  49. <input type="submit" value="Toevoegen" name="submit">
  50. </form> <?
  51. }
  52. ?>
  53. </body>
  54. </html>

11 antwoorden

Gesponsorde links
Offline Godlord - 23/06/2007 15:39 (laatste wijziging 23/06/2007 15:40)
Avatar van Godlord PHP gevorderde 1. Kies een beschrijvende titel.
2. Heb je wel een mySQL connectie open?
3. Probeer eens met
  1. <?php
  2. ?>


Kijken wat ie dan zegt.
Offline roy - 23/06/2007 15:44 (laatste wijziging 23/06/2007 16:27)
Avatar van roy PHP gevorderde dat is allemaal goed... heb ik afzonderlijk getest..

Ik denk dat het komt omdat ik twee submit buttons met een if opvang..

Maar ik weet niet hoe het anders moet.
Offline Rens - 23/06/2007 16:29
Avatar van Rens Gouden medaille

Crew algemeen
Jij submit je eerst formulier.
Daarna vervallen die $_POST waardes.
Dus zodra jij op de 2e submitknop drukt, geeft het volgende false:
  1. if(isset($_POST['submit'])) {
Offline roy - 23/06/2007 16:32 (laatste wijziging 23/06/2007 16:32)
Avatar van roy PHP gevorderde is er een manier om dit op te lossen?
zodat hij ook de eerste onthoud?
Offline Rens - 23/06/2007 16:33
Avatar van Rens Gouden medaille

Crew algemeen
Je zou het tijdelijk in een sessie/cookie kunnen zetten...
Offline roy - 23/06/2007 16:34
Avatar van roy PHP gevorderde hoe gaat dat eruit zien dan?
als ik het tijdelijk in een sessie wil zetten?

moet ik dan alleen:

if(isset($_POST['submit']))

in een sessie zetten?
Offline Rens - 23/06/2007 16:39
Avatar van Rens Gouden medaille

Crew algemeen
  1. <?PHP
  2. // checken of het eerste formulier gesubmit en afgehandeld is
  3. if(!IsSet($_SESSION['formDeelEen']))
  4. {
  5. // nee
  6. // We gaan kijken of het eerste formulier gesubmit is
  7. if($_SERVER['REQUEST_METHOD'] == "POST")
  8. {
  9. // ja
  10. // we gaan hier het eerste formulier afhandelen
  11.  
  12. // let er wel op dat we nu een sessie aangemaken genaamd formDeel Een
  13. // hij zal nu geset worden
  14. // en dus geeft de eerste check false
  15. $_SESSION['formDeelEen']['naam'] = $_POST['naam'];
  16. // enz.
  17. } else
  18. {
  19. // laat je eerste formulier zien
  20. }
  21. } else
  22. {
  23. // hier kun je dan hetzelfde doen als het vorige
  24. // kun je net zovaak herhalen als je zelf wilt
  25. }
  26. ?>


Snap je wat ik bedoel?
Offline roy - 23/06/2007 16:57
Avatar van roy PHP gevorderde Ja ik begrijp het redelijk,
maar waar komt mijn tweede formulier dan?
Offline Rik - 23/06/2007 16:58
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Kleine opmerking bij de post van Rens: vergeet session_start() niet! 

Verder vindt ik het een beetje onduidelijk wat je script nou precies moet doen:
- Je komt op de pagina, er is nog geen formulier verstuurd, dus je krijgt een formulier waarmee je een submenu kan kiezen en toevoegen
- Dat verstuur je en het tweede formulier is nog niet verzonden dus je krijgt dan het tweede formulier te zien
- Als je in dat formulier een 'nieuwtje' typt en verstuurd wordt het niet toegevoegd omdat het eerste formulier al niet meer verzonden is

Kan je die twee formulieren niet samen voegen?
Offline Rens - 23/06/2007 18:20
Avatar van Rens Gouden medaille

Crew algemeen
@Roy:
Je hebt het stukje:
  1. } else
  2. {
  3. // hier kun je dan hetzelfde doen als het vorige
  4. // kun je net zovaak herhalen als je zelf wilt
  5. }

Daar kun je dan bijna dezelfde check weer ingooien als die er al staat, alleen dan voor het 2e formulier.
Offline roy - 24/06/2007 17:54 (laatste wijziging 24/06/2007 20:58)
Avatar van roy PHP gevorderde heej Rens/of iemand anders,

het werkt bijna!, ik weet alleen niet waar ik de afhandeling voor formulier twee moet plaatsen.... het is een update query.

Ik heb nu dit:
  1. <?php
  2. include("../connect.php");
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  8. <title>Untitled Document</title>
  9. </head>
  10.  
  11. <body>
  12. <?PHP
  13. if(!IsSet($_SESSION['formDeelEen']))
  14. {
  15. if($_SERVER['REQUEST_METHOD'] == "POST")
  16. {
  17. ?>
  18. <form action="<? echo $_SERVER['PHPSELF']; ?>" method="post" enctype="multipart/form-data" name="addpost" id="addpost">
  19. <textarea name="content" cols="85" rows="15"> <?PHP
  20. $sql = "SELECT * FROM tekst WHERE menu=$menu"; // dit is dus de query om de producten op te halen
  21. $query = mysql_query($sql) or die (mysql_error()."<br>in file ".__FILE__." on line ".__LINE__);
  22. while($menu = mysql_fetch_array($query)) {
  23.  
  24. echo $menu['bericht'];
  25. }
  26. ?></textarea>
  27.  
  28. <input type="submit" value="Toevoegen" name="submit">
  29.  
  30. </form>
  31. <?
  32. $_SESSION['formDeelEen']['naam'] = $_POST['naam'];
  33. } else
  34. {
  35. ?>
  36. <form action="<? echo $_SERVER['PHPSELF']; ?>" method="post" enctype="multipart/form-data" name="addpost" id="addpost">
  37. <select name="menu">
  38. <?PHP
  39. $sql = "SELECT * FROM menu"; // dit is dus de query om de producten op te halen
  40. $query = mysql_query($sql) or die (mysql_error()."<br>in file ".__FILE__." on line ".__LINE__);
  41. while($menu = mysql_fetch_array($query)) {
  42.  
  43. echo "<option value=\"".$menu['id']."\">".$menu['naam']."</option>";
  44. }
  45. ?>
  46. </select>
  47. <input type="submit" value="Toevoegen" name="submit">
  48. </form>
  49.  
  50. <?
  51. }
  52. } else
  53. {
  54.  
  55. }
  56. ?>


Wil je nog een aanwijzing geven?

Groeten,
Roy

ps:
  1. <? $_SESSION['formDeelEen']['naam'] = $_POST['naam']; ?>

wat is $_POST['naam']; waar komt deze vandaan?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.248s