login  Naam:   Wachtwoord: 
Registreer je!
 Forum

submit word ongewenst opnieuw uitgevoert

Offline Qhead - 29/03/2005 22:45 (laatste wijziging 29/03/2005 22:49)
Avatar van QheadHTML interesse hallo,

ik ben bezig met een site in php te ontwerpen, en ben hiervoor bezig een nieuwsscript te maken. bij de admin-sectie word er de mogelijkheid aangeboden om news te posten. nu wil ik met een preview gaan werken via 2 submit buttons, zodat bij een klik op de ene de preview weergegeven word ( met eventuele verbeteringen ), en met een klik op de andere gepost word. het probleem is echter dat, na 1x klikken op de submit knop, als ik terug ga naar de post-pagina er opnieuw de actie posten word uitgevoerd ( met lege variabelen ). weet iemand de fout hiervan ? hier is m'n code:

  1. if($_POST['submit'] = "ok") {
  2. //mysql query
  3. }else {
  4. //preview
  5. ?>
  6. <html>
  7. <body>
  8. <form action="index.php?id=12&page=1">
  9. //ik ga de bbcodes ed weglaten, dus enkel de 2 submit buttons plaatsen:
  10. <input value="Preview" type="submit" name="preview">
  11. <?php
  12. if ($_POST['titel'] != "") { // als het titelveld niet leeg is de 2e submit knop tonen
  13. echo "<input value='Post' type='submit' name='ok'>";
  14. }
  15. ?>
  16. </form>
  17. </body>
  18. </html>
  19. <?php
  20. }
  21. ?>


greetz

4 antwoorden

Gesponsorde links
Offline CelestialCelebi - 29/03/2005 22:47 (laatste wijziging 29/03/2005 22:50)
Avatar van CelestialCelebi PHP gevorderde Als het waar is dat $_POST['submit'] de waarde "ok" krijgt, dan ....

Waarschijnlijk wil jij dit:

Als het waar is dat $_POST['submit'] de waarde "ok" BEVAT, dan....

Maak er dus == van voor een vergelijking.


EDIT: Je begint pas he? Zet dan meteen de error_reporting op E_ALL en leer GOED scripten!! Aub, doe dit.
Veel mensen beginnen met PHP en leren niet goed te scripten door codes zoals jij te gebruiken (kijken wat er in $_POST['submit'] zit terwijl die alleen bestaat als het formulier is verstuurd).

Je moet ook nog kijken of $_POST['submit'] bestaat, met de functie (of eigenlijk language construct, maar je kunt 'm niet zonder haken aanroepen..) isset().

  1. <?php
  2. error_reporting(E_ALL); // ALLE fouten laten zien, liever nog dit in php.ini in te stellen, zodat je het niet in elk script hoeft te zetten
  3. if(isset($_POST['submit']) && $_POST['submit'] == 'ok')
  4. {
  5. // hier posten
  6. }
  7. elseif(isset($_POST['submit']) && $_POST['submit'] == 'preview')
  8. {
  9. // hier preview laten zien
  10. }
  11. else
  12. {
  13. // formulier
  14. }
  15. ?>


Ik hoop dat je mijn raad opvolgt..
Offline Qhead - 29/03/2005 22:50 (laatste wijziging 29/03/2005 22:51)
Avatar van Qhead HTML interesse bij een == doet hij helemaal niets :?
maargoed, ik zal het nog eens proberen 

edit: getest, nu added hij helemaal niets meer 
Offline dasdan - 29/03/2005 23:24
Avatar van dasdan HTML interesse je kan met een hidden field 'actie' werken,
en afhankelijk van de waarde iets anders tonen.


  1. if(!isset($_POST['actie'])){
  2. $volgendeactie = 'preview';
  3. $preview = false;
  4. toonform($preview);
  5. }else if($_POST['actie'] == 'preview'){
  6. $volgendeactie = 'submit';
  7. $preview = true;
  8. toonform($preview);
  9. }else if($_POST['actie'] == 'submit' ){
  10. sumitform(); //sql
  11. toon_dank_u_dasdan();
  12. }
  13.  
  14.  
  15. function toonform($preview = false){
  16. if ($preview == false){
  17. ....
  18. }else{
  19. ....
  20. }
  21.  
  22. }
  23.  
  24.  
  25.  
  26.  
  27. <form method="post" action="<?php print $_SERVER['PHP_SELF']?>">
  28.  
  29. <p>
  30. <input type="hidden" name="actie" value="<?php print $volgendeactie?>" />
  31. </p>
Offline Qhead - 30/03/2005 17:47
Avatar van Qhead HTML interesse ik heb 't opgelost met 'n
if(isset($_POST['ok'])) {
//mysql query
}else{
//form ed
}

maar toch bedankt ...
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.187s