Problème POST PHP

Résolu
Bonjour,

J'ai un formulaire qui contenant certains champs obligatoires. Lorsque je le validais sans ne rien remplir, un var_dump affichait le contenu vide de tous les input. En revanche, lorsque je validais le formulaire plein, le var_dump n'affichait plus rien.

Pour tester, j'ai mis des valeurs par défaut dans les values, puis ai supprimé la gestion d'erreur, donc plus aucun champ n'était obligatoire. Résultat après validation : Le var_dump n'affichait rien, idem que lorsque je remplissais les champs à la main (ce qui est un peu logique).

Est-ce quelqu'un pourrait m'aider SVP? Pourquoi est-ce que les variables POST n'existent que lorsque le formulaire contient une erreur?

PS: La méthode utilisée est POST. Voici la balise d'ouverture du formulaire
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">

3 réponses

  1. Modérateur
    Bonjour,

    Commence par mettre le action de ton form à vide :
    <form action="" method="POST">
    


    Puis dans ta page (au tout début) ajoute un
    print_r($_POST);
    


    Bien entendu, si tu es en local, tu passes bien par le LOCALHOST ?

    0
    1. Bonjour,

      Merci pour ta réponse. Voici le résultat du var_dump après validation du formulaire sans gestion d'erreur

      array (size=0)
      empty
      0
    2. Modérateur
      @M_TufuxTu peux poster le code complet de ta page ??
      0
  2. Yep, j'espère que ce sera assez lisible

    <?php
     include('head.php');
     var_dump($_POST);
     /*************************************************
    
    
    *
    **
    ***
    ****
    *****
    ******
    ******* DECLARATION DES VARIABLES D'ERREUR ******* **************************************************/ //Variables texte => Messages d'erreurs $ErreurOF2 = ""; $ErreurArticle = ""; $ErreurNom = ""; $ErreurRebuts = ""; $ErreurPB  = ""; $ErreurMachine  = ""; $ErreurMatiere  = ""; $ErreurConcerne = ""; $ErreurCommentaire  = ""; $ErreurGlobale  = ""; $berreur = false;  /********************************************************** ************ DECLARATION DES VARIABLES TABLEAU ************ **********************************************************/ $TabNom   = ExtraireListe("noms", "NomPrenom"); $TabConcerne  = ExtraireListe("concerne", "cause");   /********************************************************* ******* DECLARATION DES VARIABLES DE CONCATENATION ******* *********************************************************/ $OF   = ""; $Concerne  = "";  /************************************************ **************** GESTION D'ERREUR *************** ************************************************/ if(isset($_POST['valide'])){  //Erreurs OF2  if(!is_numeric($_POST['of2']) && !empty($_POST['of2']) ||  is_numeric($_POST['of2']) && is_float($_POST['of2']) ||  empty($_POST['of2'])){   //Ecriture message d'erreur OF2   $ErreurOF2 = "Veuillez insérer une valeur numérique entière";   $berreur = true;  }    //Erreurs Article  if(!is_numeric($_POST['article']) && !empty($_POST['article']) ||  is_numeric($_POST['article']) && is_float($_POST['article']) ||   substr($_POST['article'], 0, 1) == 0 ||  empty($_POST['article'])){   //Ecriture message d'erreur Article   $ErreurArticle = "Veuillez insérer une valeur numérique entière";   $berreur = true;  }    //Erreur contrôleuse  if($_POST['nom'] == "Sélectionner"){   $ErreurNom = "Veuillez choisir un nom";   $berreur = true;  }    //Erreurs Rebuts  $bRebuts = strpos($_POST['rebuts'], ".");  if(!empty($_POST['rebuts']) && (!is_numeric($_POST['rebuts']) || is_float($_POST['rebuts'])) || $bRebuts != false){   $ErreurRebuts = "Veuillez entrer une valeur numérique entière";   $berreur = true;  }    //Erreurs Pièces bonnes  $bPB = strpos($_POST['pb'], ".");  if(!empty($_POST['pb']) && (!is_numeric($_POST['pb']) || is_float($_POST['pb'])) || $bPB != false){   $ErreurPB = "Veuillez entrer une valeur numérique entière";   $berreur = true;  }    //Erreurs Machine  $bMachine = strpos($_POST['machine'], ".");  if(!empty($_POST['machine']) && (!is_numeric($_POST['machine']) || is_float($_POST['machine'])) || $bMachine != false){   $ErreurMachine = "Veuillez entrer une valeur numérique entière";   $berreur = true;  }    //Erreurs Concerne  if(!isset($_POST['concerne'])){   $ErreurConcerne = "Veuillez choisir au moins une option";   $berreur = true;  }    //Erreur Commentaire => caractère '  $bCommentaire = strpos($_POST['commentaire'], "'");  if($bCommentaire != false){   $ErreurCommentaire = "Veuillez ne pas entrer d'apostrophe";   $berreur = true;  }    /***********************************************  **************** CONCATENATION *****************  ***********************************************/  //OF  $OF = "OF-".$_POST['of1']."-".$_POST['of2']."-001";    //Concerne  if(isset($_POST['concerne'])){   for($i=0;$i<count($_POST['concerne']);$i++){     $Concerne .= $_POST['concerne'][$i].'<br />';   }  }    /***********************************************  ****************** APPEL SQL *******************  ***********************************************/  if($berreur == false){   echo('<script>alert("Saisie OK");</script>');   Ajouter("problemes", $OF, $Concerne);  }  elseif($berreur == true){   echo('<script>alert("Erreur de saisie");</script>');   $ErreurGlobale = "Veuillez vous assurer que les champs soient remplis correctement";  }   } else{  var_dump($_POST); }?><!DOCTYPE HTML><html> <body>  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">  <input type="hidden" name="valide" />   <p>    <label>OF - </label>    <SELECT name="of1">     <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "001"){ echo('selected');}?>>001     <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "002"){ echo('selected');}?>>002     <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "003"){ echo('selected');}?>>003     <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "010"){ echo('selected');}?>>010     <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "020"){ echo('selected');}?>>020     <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "501"){ echo('selected');}?>>501     <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "602"){ echo('selected');}?>>602     <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "702"){ echo('selected');}?>>702     <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "703"){ echo('selected');}?>>703     <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "881"){ echo('selected');}?>>881     <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "991"){ echo('selected');}?>>991     <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "992"){ echo('selected');}?>>992     <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "993"){ echo('selected');}?>>993    </SELECT>    - <input type="text" name="of2" value="<?php if(isset($_POST['of2'])){ echo $_POST['of2'];} ?>" maxlength=5 /> - 001   <?php    if(!empty($ErreurOF2)){     echo $ErreurOF2;    }   ?>   </p>   <p>    <label>Article </label><input type="text" name="article" value="<?php if(isset($_POST['article'])){ echo $_POST['article'];} ?>" maxlength=6 />   <?php    if(!empty($ErreurArticle)){     echo $ErreurArticle;    }   ?>   </p>   <p>    <label>Contrôleuse/eur </label>    <SELECT name="nom">     <OPTION <?php if(!(isset($_POST["nom"])) && !empty($ErreurGlobale)){ echo('selected');}?>>Sélectionner     <?php            for($i=0; $i<count($TabNom); $i++){       if(isset($_POST['valide']) && $_POST['nom'] == $TabNom[$i][1] && !empty($ErreurGlobale)){        echo'<option value="'.$TabNom[$i][1].'" selected>'.$TabNom[$i][1].'</option>';       }       else{        echo'<option value="'.$TabNom[$i][1].'">'.$TabNom[$i][1].'</option>';       }      }           ?>    </SELECT>   <?php    if(!empty($ErreurNom)){     echo $ErreurNom;    }   ?>   </p>   <p>    <label>Rebuts </label><input type="text" name="rebuts" value="<?php if(isset($_POST['rebuts'])){ echo $_POST['rebuts'];} ?>" />   <?php    if(!empty($ErreurRebuts)){     echo $ErreurRebuts;    }   ?>   </p>   <p>    <label>Pièces bonnes </label><input type="text" name="pb" value="<?php if(isset($_POST['pb'])){ echo $_POST['pb'];} ?>" />   <?php    if(!empty($ErreurPB)){     echo $ErreurPB;    }   ?>   </p>   <p>    <label>Machine </label><input type="text" name="machine" value="<?php if(isset($_POST['machine'])){ echo $_POST['machine'];} ?>" />   <?php    if(!empty($ErreurMachine)){     echo $ErreurMachine;    }   ?>   </p>   <p>    <label>Matière </label><input type="text" name="matiere" value="<?php if(isset($_POST['matiere'])){ echo $_POST['matiere'];} ?>" />   </p>   <p>    <fieldset>     <legend>Concerne</legend>     <table>      <tbody>       <?php        for($i=0; $i<count($TabConcerne); $i++){         if($i % 3 == 0){          echo '<tr>';         }                  echo'<td><input type="checkbox" name="concerne[]" value="'.strtolower($TabConcerne[$i][1]).'">'.$TabConcerne[$i][1].'</td>';                  if($i == 2){          echo '</tr>';         }        }       ?>      </tbody>     </table>     <?php      if(!empty($ErreurConcerne)){       echo $ErreurConcerne;      }     ?>    </fieldset>   </p>   <p>    Commentaire : <br/>    <textarea name="commentaire"><?php if(isset($_POST['commentaire'])){ echo $_POST['commentaire'];} ?></textarea>   <?php    if(!empty($ErreurCommentaire)){     echo $ErreurCommentaire;    }   ?>   </p>   <p>    Date : <input type="text" name="date" value="<?php echo date('d/m/Y'); ?>" />   </p>   <?php    if(!empty($ErreurGlobale)){     echo $ErreurGlobale;    }   ?>   <br/>   <input type="button" value="Retour" onClick="javascript:document.location.href='index.php'" />   <input type="submit" value="Ajouter" /> </body></html>
    0
    1. Modérateur
      Bon...
      C'est pas vraiment ça ....
      Tu ne sais pas faire de retours à la ligne ?

      Voici le code en parti remis en forme ( afin de le rendre lisible ! )
      <?php
       include('head.php');
      
       var_dump($_POST);
      
      
      //Variables texte => Messages d'erreurs 
       $ErreurOF2 = "";
       $ErreurArticle = "";
       $ErreurNom = "";
       $ErreurRebuts = "";
       $ErreurPB  = "";
       $ErreurMachine  = "";
       $ErreurMatiere  = "";
       $ErreurConcerne = "";
       $ErreurCommentaire  = "";
       $ErreurGlobale  = "";
       $berreur = false;
        
      
       /********************************************************** ************ DECLARATION DES VARIABLES TABLEAU ************ *********************************************************
       */
       $TabNom   = ExtraireListe("noms", "NomPrenom");
       $TabConcerne  = ExtraireListe("concerne", "cause");
        
       
       /********************************************************* ******* DECLARATION DES VARIABLES DE CONCATENATION ******* ********************************************************
       */
       $OF   = "";
       $Concerne  = "";
        
       /************************************************ **************** GESTION D'ERREUR *************** ***********************************************
       */ 
       if(isset($_POST['valide'])){  //Erreurs OF2  
       if(!is_numeric($_POST['of2']) && !empty($_POST['of2']) ||  is_numeric($_POST['of2']) && is_float($_POST['of2']) ||  empty($_POST['of2'])){   //Ecriture message d'erreur OF2   $ErreurOF2 = "Veuillez insérer une valeur numérique entière";
         $berreur = true;
        }    //Erreurs Article  if(!is_numeric($_POST['article']) && !empty($_POST['article']) ||  is_numeric($_POST['article']) && is_float($_POST['article']) ||   substr($_POST['article'], 0, 1) == 0 ||  empty($_POST['article'])){   //Ecriture message d'erreur Article   $ErreurArticle = "Veuillez insérer une valeur numérique entière";
         $berreur = true;
        }    //Erreur contrôleuse  if($_POST['nom'] == "Sélectionner"){   $ErreurNom = "Veuillez choisir un nom";
         $berreur = true;
        }    //Erreurs Rebuts  $bRebuts = strpos($_POST['rebuts'], ".");
        if(!empty($_POST['rebuts']) && (!is_numeric($_POST['rebuts']) || is_float($_POST['rebuts'])) || $bRebuts != false){   
      	 $ErreurRebuts = "Veuillez entrer une valeur numérique entière";
         $berreur = true;
        }    //Erreurs Pièces bonnes  $bPB = strpos($_POST['pb'], ".");
        if(!empty($_POST['pb']) && (!is_numeric($_POST['pb']) || is_float($_POST['pb'])) || $bPB != false){   
      	 $ErreurPB = "Veuillez entrer une valeur numérique entière";
         $berreur = true;
        }    //Erreurs Machine  $bMachine = strpos($_POST['machine'], ".");
        if(!empty($_POST['machine']) && (!is_numeric($_POST['machine']) || is_float($_POST['machine'])) || $bMachine != false){   
      	 $ErreurMachine = "Veuillez entrer une valeur numérique entière";
         $berreur = true;
        }    //Erreurs Concerne  if(!isset($_POST['concerne'])){   $ErreurConcerne = "Veuillez choisir au moins une option";
         $berreur = true;
        }    //Erreur Commentaire => caractère '  $bCommentaire = strpos($_POST['commentaire'], "'");
        if($bCommentaire != false){   
      	 $ErreurCommentaire = "Veuillez ne pas entrer d'apostrophe";
         $berreur = true;
        }    
       /***********************************************  **************** CONCATENATION *****************  **********************************************
       */
       //OF  
       $OF = "OF-".$_POST['of1']."-".$_POST['of2']."-001";
       //Concerne   
       if(isset($_POST['concerne'])){   
        for($i=0;$i<count($_POST['concerne']);$i++){
      	 $Concerne .= $_POST['concerne'][$i].'<br />';
        }  
       }    
       /***********************************************  ****************** APPEL SQL *******************  **********************************************
       */
       if($berreur == false){   echo('<script>alert("Saisie OK");</script>');
           Ajouter("problemes", $OF, $Concerne);
        } elseif($berreur == true){
      		echo('<script>alert("Erreur de saisie");</script>');
         $ErreurGlobale = "Veuillez vous assurer que les champs soient remplis correctement";
        }   
      } else{
        var_dump($_POST);
      }?>
      <!DOCTYPE HTML><html> <body>  
       <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">  
       <input type="hidden" name="valide" />   <p>    <label>OF - </label>    
       <SELECT name="of1">    
        <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "001"){ echo('selected');}?>>001     
        <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "002"){ echo('selected');}?>>002     
        <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "003"){ echo('selected');}?>>003     
        <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "010"){ echo('selected');}?>>010     
        <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "020"){ echo('selected');}?>>020     
        <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "501"){ echo('selected');}?>>501     
        <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "602"){ echo('selected');}?>>602  
        <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "702"){ echo('selected');}?>>702  
        <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "703"){ echo('selected');}?>>703     
        <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "881"){ echo('selected');}?>>881     
        <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "991"){ echo('selected');}?>>991     
        <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "992"){ echo('selected');}?>>992     
        <OPTION <?php if(isset($_POST["of1"]) && $_POST["of1"] == "993"){ echo('selected');}?>>993    
       </SELECT>
       - <input type="text" name="of2" value="<?php if(isset($_POST['of2'])){ echo $_POST['of2'];} ?>" maxlength=5 /> - 001   
       <?php
        if(!empty($ErreurOF2)){     
         echo $ErreurOF2;
        }   
      	?>   
      	</p>   
      	<p>    
      	<label>Article </label>
      	<input type="text" name="article" value="<?php if(isset($_POST['article'])){ echo $_POST['article'];} ?>" maxlength=6 />   
      	<?php    
      	 if(!empty($ErreurArticle)){     
      	   echo $ErreurArticle;
         }
        ?>  
      	</p> <p>
      	<label>Contrôleuse/eur </label>   
      	<SELECT name="nom">     
      	<OPTION <?php if(!(isset($_POST["nom"])) && !empty($ErreurGlobale)){ echo('selected');}?>>Sélectionner     
      	<?php
      	for($i=0; $i<count($TabNom); $i++){
      		if(isset($_POST['valide']) && $_POST['nom'] == $TabNom[$i][1] && !empty($ErreurGlobale)){        
      		  echo'<option value="'.$TabNom[$i][1].'" selected>'.$TabNom[$i][1].'</option>';
      		}else{
      			echo'<option value="'.$TabNom[$i][1].'">'.$TabNom[$i][1].'</option>';
          }
      	}
      	?>    
      	</SELECT>   
      	<?php    
      	if(!empty($ErreurNom)){     
      	  echo $ErreurNom;
        }
      	?>
      	</p><p>
        <label>Rebuts </label><input type="text" name="rebuts" value="<?php if(isset($_POST['rebuts'])){ echo $_POST['rebuts'];} ?>" />   
      	<?php    
      	  if(!empty($ErreurRebuts)){
      			echo $ErreurRebuts;
          }?>
      		</p><p>
      		<label>Pièces bonnes </label><input type="text" name="pb" value="<?php if(isset($_POST['pb'])){ echo $_POST['pb'];
      } ?>" />   <?php    if(!empty($ErreurPB)){     echo $ErreurPB;
          }   ?>   </p>   <p>    <label>Machine </label><input type="text" name="machine" value="<?php if(isset($_POST['machine'])){ echo $_POST['machine'];
      } ?>" />   <?php    if(!empty($ErreurMachine)){     echo $ErreurMachine;
          }   ?>   </p>   <p>    <label>Matière </label><input type="text" name="matiere" value="<?php if(isset($_POST['matiere'])){ echo $_POST['matiere'];
      } ?>" />   </p>   <p>    <fieldset>     <legend>Concerne</legend>     <table>      <tbody>       <?php        for($i=0;
       $i<count($TabConcerne);
       $i++){         if($i % 3 == 0){          echo '<tr>';
               }                  echo'<td><input type="checkbox" name="concerne[]" value="'.strtolower($TabConcerne[$i][1]).'">'.$TabConcerne[$i][1].'</td>';
                        if($i == 2){          echo '</tr>';
               }        }       ?>      </tbody>     </table>     <?php      if(!empty($ErreurConcerne)){       echo $ErreurConcerne;
            }     ?>    </fieldset>   </p>   <p>    Commentaire : <br/>    <textarea name="commentaire"><?php if(isset($_POST['commentaire'])){ echo $_POST['commentaire'];
      } ?></textarea>   <?php    if(!empty($ErreurCommentaire)){     echo $ErreurCommentaire;
          }   ?>   </p>   <p>    Date : <input type="text" name="date" value="<?php echo date('d/m/Y');
       ?>" />   </p>   <?php    if(!empty($ErreurGlobale)){     echo $ErreurGlobale;
          }   ?>   <br/>   <input type="button" value="Retour" onClick="javascript:document.location.href='index.php'" />   <input type="submit" value="Ajouter" /> </body></html>
      


      NB: je n'ai pas mis en forme la fin du code... je te laisse le plaisir de le faire.

      Pour ce qui est de ton problème .... je ne trouve pas la balise
       </form> 
      dans ton code....
      A mon avis ça vient de là.

      Bon après... y'a aussi des soucis dans ton code...
      - des accolades semblent manquer ou etre en trop ...
      - Il est préférable de récupérer les variables AVANT de les utiliser.
      typiquement... au lieu d'écrire 20 fois :
      if(isset($_POST["of1"]) && $_POST["of1"] ....
      

      tu fais :
      <?php
       // récupération "propre" des variables ( à mettre au début de ta page
       $of1 = isset($_POST['of1']) ? $_POST['of1'] : NULL;
       ?>
      


      Puis là où tu en as besoin :
      <OPTION <?php if($of1== "001"){ echo('selected');}?>>001     
      <OPTION <?php if($of1== "002"){ echo('selected');}?>>002     
      <OPTION <?php if($of1== "003"){ echo('selected');}?>>003     
      <OPTION <?php if($of1== "010"){ echo('selected');}?>>010     
      <OPTION <?php if($of1== "020"){ echo('selected');}?>>020     
      <OPTION <?php if($of1== "501"){ echo('selected');}?>>501     
      <OPTION <?php if($of1== "602"){ echo('selected');}?>>602  
      <OPTION <?php if($of1== "702"){ echo('selected');}?>>702  
      <OPTION <?php if($of1== "703"){ echo('selected');}?>>703     
      <OPTION <?php if($of1== "881"){ echo('selected');}?>>881     
      <OPTION <?php if($of1== "991"){ echo('selected');}?>>991     
      <OPTION <?php if($of1== "992"){ echo('selected');}?>>992     
      <OPTION <?php if($of1== "993"){ echo('selected');}?>>993    
      


      0
      1. yep, merci pour ta réponse et pour tes propositions d'amélioration.
        J'ai testé et cela ne provient pas du
        </form>
        .

        Le problème est donc toujours là. En ce qui concerne les accolades, s'il y avait une erreur, la page devrait m'afficher une erreur et ce n'est pas le cas.

        Qu'est-ce qui pourrait bien faire que l’initialisation des variables POST ne se fait pas :S ?
        0
      2. Modérateur
        Dans tes balises OPTIONS .. tu n'as pas de VALUE .. faudra les ajouter.
        0
      3. Bien vu, mais ça ne résout toujours pas le problème :/
        0
      4. Modérateur
        tu es en local ou sur un serveur ?
        Si local .. tu utilises quel logiciel ?
        Quelle est l'url qui apparait lorsque tu "submit" ton formulaire ?
        0
      5. Je suis en localhost avec WAMP.
        url: http://localhost/ninp/Form.php
        0