login  Naam:   Wachtwoord: 
Registreer je!
 Forum

2x formulier in script

Offline remy - 03/10/2004 19:56 (laatste wijziging 03/10/2004 20:06)
Avatar van remyPHP ver gevorderde ik heb nu 2x een formulier in mijn script staan, kan dit eigenlijk wel?
ik heb een formulier met radiobuttons om een bericht aan te vinken(in een admin dus) en als je dan op wijzig klikt komt en een textarea om het bericht aan te passen, als ik dan op wijzig klik om het bericht aan te passen slaat hij terug naar de berichten.

  1. <?php
  2. $file="gastenboek.htm";
  3. $fp=fopen($file, "r");
  4. $data=fread($fp, filesize($file));
  5. fclose($fp);
  6.  
  7. $array = explode("*", $data);
  8.  
  9. echo "<br>";
  10.  
  11. $start=0;
  12. $tweede=$_POST['admin']+1;
  13. $aantal = count_chars($data);
  14. echo "aantal berichten in gastenboek: ".$aantal[ord("*")];
  15. $eind=$aantal[ord("*")];
  16.  
  17. if(isset($_POST['verwijder'])=='admin')
  18. {
  19. while($start<$eind)
  20. {
  21. unset($array[$_POST['admin']]);
  22.  
  23. $berichten.=$array[$start]."<font color=white>*</font>";
  24. $start++;
  25.  
  26. }
  27.  
  28. $invoegen=$berichten;
  29. $file="gastenboek.htm";
  30. $fp=fopen($file, "w");
  31. fputs($fp,$invoegen);
  32. fclose($fp);
  33. echo "gelukt";
  34. }
  35. elseif(isset($_POST['wijzig'])=='admin') //<<<<<<<<<<<<<
  36. {
  37. if(isset($_POST['ja'])=='bericht')
  38. {
  39. while($start<$eind)
  40. {
  41. $deel1.=$array[$start]."*";
  42. $start++;
  43. if($start==$_POST['admin']) break;
  44. }
  45.  
  46. while($tweede<=$eind)
  47. {
  48. $deel2.=$array[$tweede]."*";
  49. $tweede++;
  50. if($tweede==$eind) break;
  51. }
  52. $invoegen=$deel1;
  53. $invoegen.=$_POST['bericht']."*";
  54. $invoegen.=$deel2;
  55.  
  56. $file="gastenboek.htm";
  57. $fp=fopen($file, "w");
  58. fputs($fp,$invoegen);
  59. fclose($fp);
  60. echo "gelukt";
  61. }
  62. else
  63. {
  64. echo "<form method=post action=admin.php>";
  65. echo "<textarea cols=25 rows=5 name=bericht>".$array[$_POST['admin']]."</textarea>";
  66. echo "<input type=submit name=ja value=wijzigen>";
  67. echo "</form>";
  68. }
  69.  
  70.  
  71. }
  72. else
  73. {
  74. echo "<form method=post action=admin.php>";
  75.  
  76. while($start<$eind)
  77. {
  78. echo $array[$start]. "<input type=radio name=admin value=$start>";
  79. $start++;
  80. }
  81. echo "<input type=submit name=verwijder value=verwijder>";
  82. echo "<input type=submit name=wijzig value=wijzig>";
  83. echo "</form>";
  84. }
  85. }
  86. ?>

[edit] het precieze probleem is dat het niet weggeschreven word, bij het sstukje dat begint bij elseif.

17 antwoorden

Gesponsorde links
Offline Thomas - 03/10/2004 20:32
Avatar van Thomas Moderator Je kan zoveel forms op je pagina stoppen als je wilt.
Als je ze maar op 1 of andere manier kunt onderscheiden zodat je weet welk form er verwerkt dient te worden. Je kan hiertoe bijvoorbeeld een hidden veld gebruiken die je in elke form een andere waarde geeft.
Bijvoorbeeld <input type="hidden" name="action" value="login" /> voor je login-form, <input type="hidden" name="action" value="vote" /> voor je poll-form et cetera.

Als je je pagina laad controleer je of er een form gesubmit is (if(isset($_POST['action'])) of if(isset($_POST['submit'])) of whatever) en zoja welke form (staat in $_POST['action']), zodat je weet welke form je moet verwerken.
Offline remy - 03/10/2004 20:40
Avatar van remy PHP ver gevorderde ik heb net gezocht op google en kwam erachter dat je de tag <form> ook een name kunt geven.

Kun je dit ook opvragen met bij if(isset($_POST['formname'])=='ja')
als formname de naam is van het formulier en ja de naam van de knop?
Offline Thomas - 03/10/2004 21:17
Avatar van Thomas Moderator Nope, dat is geen $_POST variabele wel ?
Offline Scott - 03/10/2004 21:32
Avatar van Scott Gouden medaille

PHP ver gevorderde
En anders gebruik je toch een hidden input ?
Offline Thomas - 03/10/2004 22:38
Avatar van Thomas Moderator Great plan Batman.

Dat stelde ik al voor...
Offline remy - 04/10/2004 16:36 (laatste wijziging 06/10/2004 19:32)
Avatar van remy PHP ver gevorderde ik snap het niet echt met die hidden inputs, ik heb de velden van de verschilldende formulieren toch al verschillende namen gegeven?
Hoe kan het dan dat hij be hidden inputs wel het verschil kan zien?:s
Offline twopeak - 06/10/2004 20:51 (laatste wijziging 06/10/2004 20:52)
Avatar van twopeak Gouden medaille

PHP ver gevorderde
ik geef mijn submit knoppen verschillende namen (aangezien <input type="submit" name="submit"... eigenlijk afgeraden wordt voor de duidelijkheid)
Ik heb namen als login_submit en formulier_submit
en in mijn php gaat het in het genre
if ($_post['formulier_submit']) {
...
}
if ($_post['login_submit']) {
...
}


wanneer je op de knop van een form klikt, zal de naam van de submit knop gebruikt wordt om onderscheid te maken tussen de forms. (let op, niet de value; die zichtbaar is, maar de naam die je gebruikers toch nooit zien)

dit is eigenlijk ongeveer wat Fangorn in de eerste reply zei!
En nee, de name van de form wordt niet meegestuurd! het nut van die name weet ik niet! ;)
Offline Metalhead - 06/10/2004 20:58
Avatar van Metalhead HTML gevorderde name van de form, die gebruik je toch als je JavaScript gebruikt om je Fromulier-waardes uit te lezen?
Offline remy - 09/10/2004 10:33
Avatar van remy PHP ver gevorderde maar ik heb bij de twee formulieren tog al verschillende namen, bij de ene formulier heb ik 2 knoppen met de namen 'verwijder' en 'wijzig', bij het andere formulier de naam 'ja'.
maar tog werkt het niet en spring hij steeds terug naar de beginpagina als ik op de knop 'ja' druk.
Offline SickBoy - 09/10/2004 10:44
Avatar van SickBoy MySQL beginner gebruik eens ' ' bij uw waarden in uw form

echo "<form method='post' action='admin.php'> ...
Offline remy - 09/10/2004 10:48 (laatste wijziging 09/10/2004 11:34)
Avatar van remy PHP ver gevorderde dat maakt voor het lezen van de waarden niets uit toch?
:|
[edit]ik gebruik wel een lus binnen een lus ik weet niet of dit wa uitmaakt?
Offline SickBoy - 09/10/2004 11:55
Avatar van SickBoy MySQL beginner bij sommige versies maakt dat wel uit 
Offline remy - 09/10/2004 11:59
Avatar van remy PHP ver gevorderde oow ik heb het ertussengezet maar nog helpt het niet, ik denk dat ik toch maar weer met die hidden inputs moet proberen, is er miss een voorbeeld script met iets waar twee formulieren instaan?
Offline Thomas - 09/10/2004 13:03
Avatar van Thomas Moderator elseif(isset($_POST['wijzig'])=='admin')

Wat zou dat moeten doen in hemelsnaam ?!

isset() geeft een boolean terug, en die wil je vergelijken met een string ?!

Dit doe je op meerdere plaatsen.

Gebruik:
elseif(isset($_POST['wijzig']) && $_POST['wijzig'] == "admin") in plaats van dat andere tenenkrommende ding.
Offline remy - 09/10/2004 13:11 (laatste wijziging 09/10/2004 13:12)
Avatar van remy PHP ver gevorderde uhm dat 'admin' kan idd weg, maar dit is niet mijn vraag eigenlijk;-)
ik snap het niet hoe het met die hidden inputs zit:'(
Offline Thomas - 09/10/2004 13:17
Avatar van Thomas Moderator Er zijn zat andere topics waar dit al in ter sprake is gekomen, maar omdat het blijkbaar te moeilijk is om hier naar te zoeken:

Hidden inputs zijn gewoon formulier-velden die verborgen zijn, zie het als extra (formulier)variabelen die je kunt gebruiken om extra gegevens mee te sturen die de gebruiker niet hoeft in te vullen, maar wel van belang zijn voor het script dat het formulier verwerkt.

Bijvoorbeeld: bij een reactiesysteem als deze word het nummer van het bericht meegegeven, zodat je weet bij welk bericht de reactie hoort.

Zo kun je dus in elk formulier een hidden veld stoppen (die in elk formulier dezelfde naam, maar een verschillende waarde heeft) die een form UNIEK maakt, zodat een of meerdere scripts die de forms kunnen verwerken kunnen BEPALEN of de form-input voor hun bedoeld is.
Offline remy - 09/10/2004 13:23
Avatar van remy PHP ver gevorderde okee ik zal doorzoeken;-)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.359s