Problème POST PHP

Résolu
M_Tufux Messages postés 85 Statut Membre -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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. M_Tufux Messages postés 85 Statut Membre
       
      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
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > M_Tufux Messages postés 85 Statut Membre
         
        Tu peux poster le code complet de ta page ??
        0
  2. M_Tufux Messages postés 85 Statut Membre
     
    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
  3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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. M_Tufux Messages postés 85 Statut Membre
       
      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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Dans tes balises OPTIONS .. tu n'as pas de VALUE .. faudra les ajouter.
      0
    3. M_Tufux Messages postés 85 Statut Membre
       
      Bien vu, mais ça ne résout toujours pas le problème :/
      0
    4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      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. M_Tufux Messages postés 85 Statut Membre
       
      Je suis en localhost avec WAMP.
      url: http://localhost/ninp/Form.php
      0