Problème POST PHP
Résolu
M_Tufux
Messages postés
70
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 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
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">
A voir également:
- Problème POST PHP
- Easy php - Télécharger - Divers Web & Internet
- Brouillon post instagram - Guide
- Post it windows - Télécharger - Agendas & Calendriers
- Code post - Télécharger - Vie quotidienne
- Expert php pinterest - Télécharger - Langages
3 réponses
Bonjour,
Commence par mettre le action de ton form à vide :
Puis dans ta page (au tout début) ajoute un
Bien entendu, si tu es en local, tu passes bien par le LOCALHOST ?
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 ?
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>
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 ! )
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
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 :
tu fais :
Puis là où tu en as besoin :
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
yep, merci pour ta réponse et pour tes propositions d'amélioration.
J'ai testé et cela ne provient pas du
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 ?
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 ?
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