Soucis avec header location suite à un formulaire
11 messages
• Page 1 sur 1
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Soucis avec header location suite à un formulaire
Bonjour,
J'ai un petit soucis qui me casse la tête depuis un petit moment concernant une redirection avec "header location" lié à un formulaire. Mon formulaire à la base suivante :
Quelque soit les modifications que j'effectue, soit la redirection s'effectue sans prendre en compte les erreurs du formulaire, soit les erreurs sont pris en compte et la redirection ne s'effectue pas
Habituellement j'y arrive sans problème mais là ...
Des idées ?
Merci
J'ai un petit soucis qui me casse la tête depuis un petit moment concernant une redirection avec "header location" lié à un formulaire. Mon formulaire à la base suivante :
- Code: Tout sélectionner
<?php
session_start();
//Ici je récupère des infos transmit d'une autre page par le biais d'une sessions
if(isset($_POST["envoyer"]))
{
//ici récupération du contenue du formulaire avec mis en forme (stripcslashes, htmlspecialchars, etc...)
//ici gestion des erreurs blindé de if et de else if
if($code_postal==''){$erreur_code_postal='<div class="erreur"> Veuillez insérer un code postal.</div>';}
else if(!is_numeric($code_postal)){$erreur_code_postal_numerique='<div class="erreur"> Le code postal ne peut comporter que des chiffres.</div>';}
//etc....
//etc...
if($prix!='' AND !is_numeric($prix)){$erreur_prix_numerique='<div class="erreur"> Le prix ne peut comporter que des chiffres.</div>';}
else
{
//ici connexion à la bd+enregistrement
$result = mysql_query("INSERT INTO TOTO VALUES( .....
//fermeture de la connexion
if (!$result)
{
die('Un problème est survenu lors de l\'enregistrement.' . mysql_error());
}
else
{
//on redirige
header('location:ma-page.php');
exit;
}
//on ferme le 1er else
}
//On ferme isset($_POST["envoyer"]))
}
?>
<!--ici le formulaire-->
Quelque soit les modifications que j'effectue, soit la redirection s'effectue sans prendre en compte les erreurs du formulaire, soit les erreurs sont pris en compte et la redirection ne s'effectue pas
Habituellement j'y arrive sans problème mais là ...
Des idées ?
Merci
-

e-kiwi - Modérateur

- Messages: 15618
- Inscription: 23 Déc 2003
Re: Soucis avec header location suite à un formulaire
if($prix!='' AND !is_numeric($prix))
{
$erreur_prix_numerique='<div class="erreur"> Le prix ne peut comporter que des chiffres.</div>';}
else
{
...
}
ton insert n'est executé que si prix va bien. il peut y avoir des erreurs partout avant, il s'en fiche, vu qu'il est juste conditionné que le prix. ça serait pas ça ton problème ?
{
$erreur_prix_numerique='<div class="erreur"> Le prix ne peut comporter que des chiffres.</div>';}
else
{
...
}
ton insert n'est executé que si prix va bien. il peut y avoir des erreurs partout avant, il s'en fiche, vu qu'il est juste conditionné que le prix. ça serait pas ça ton problème ?
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: Soucis avec header location suite à un formulaire
Merci de ta réponse e-kiwi
,
Effectivement , à partir du moment ou $prix est mal remplit (non vide et autre que des caractères numériques), toutes les erreurs apparaissent.
Du coup, comment y remédier? Par une succession de "else if" dans la gestion des erreurs ?
Effectivement , à partir du moment ou $prix est mal remplit (non vide et autre que des caractères numériques), toutes les erreurs apparaissent.
Du coup, comment y remédier? Par une succession de "else if" dans la gestion des erreurs ?
-

zeb - WRInaute accro

- Messages: 4569
- Inscription: 5 Déc 2004
Re: Soucis avec header location suite à un formulaire
c'est super brouillon ton code Tryan, faut tabuler et c'est de suite plus clair.
Sinon une solution simple via une variable qui te donne un état des traitement d'erreur (il y a sûrement plus logique mais disons que pour faire simple et rapide) :
Sinon une solution simple via une variable qui te donne un état des traitement d'erreur (il y a sûrement plus logique mais disons que pour faire simple et rapide) :
- Code: Tout sélectionner
<?php
session_start();
//Ici je récupère des infos transmit d'une autre page par le biais d'une sessions
if(isset($_POST["envoyer"])){
//ici récupération du contenue du formulaire avec mis en forme (stripcslashes, etc...)
//ici gestion des erreurs
$erreur = false;
if($code_postal==''){
$erreur_code_postal='<div class="erreur"> Veuillez insérer un code postal.</div>';
$erreur = true;
}
if(!is_numeric($code_postal)){
$erreur_code_postal_numerique='<div class="erreur"> Le code postal (...) chiffres.</div>';
$erreur = true;
}
//etc....
//etc...
if($prix!='' AND !is_numeric($prix)){
$erreur_prix_numerique='<div class="erreur"> Le prix (...) chiffres.</div>';
$erreur = true;
}
if(!$erreur){
// si pas d'erreur
//ici connexion à la bd+enregistrement
$result = mysql_query("INSERT INTO TOTO VALUES( .....");
//fermeture de la connexion
if (!$result){
die('Un problème est survenu lors de l\'enregistrement.' . mysql_error());
}else{
//on redirige
header('location:ma-page.php');
exit;
}
}
}
?>
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: Soucis avec header location suite à un formulaire
Merci zeb, je vais essayer cette approche mais je ne comprend toujours pas pourquoi mon code ne fonctionne pas puisque habituellement ça fonctionne ..?
Pour la tabulation, j'ai jamais comprit son fonctionnement sous Notepad++ ...
Pour la tabulation, j'ai jamais comprit son fonctionnement sous Notepad++ ...
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: Soucis avec header location suite à un formulaire
re,
Je viens de tester et toutes les erreur sont prises en comptes mais l'enregistrement ainsi que la redirection ne s'effectue pas. J'ai changé la redirection par un simple texte et rien ne s'affiche ...c'est énervement .!!
Je viens de tester et toutes les erreur sont prises en comptes mais l'enregistrement ainsi que la redirection ne s'effectue pas. J'ai changé la redirection par un simple texte et rien ne s'affiche ...c'est énervement .!!
- retza
- WRInaute discret

- Messages: 58
- Inscription: 16 Fév 2005
Re: Soucis avec header location suite à un formulaire
tryan, juste pour savoir, l'insertion en Bdd fonctionne ?
Parce que tu fais un test sur $erreur, qui peux être soit "vide", soit "True", mais jamais "False"
Essaye de l'initialiser au début du script : $erreur=false;
Sinon, essaye avec un espace aprés les ':' de location => header ('location: ma-page.php'); (de mémoire, j'ai déjà des soucis à cause d'une mauvaise écriture de ce header)
Voila, si ça peut te donner 2-3 pistes....
A+
Parce que tu fais un test sur $erreur, qui peux être soit "vide", soit "True", mais jamais "False"
Essaye de l'initialiser au début du script : $erreur=false;
Sinon, essaye avec un espace aprés les ':' de location => header ('location: ma-page.php'); (de mémoire, j'ai déjà des soucis à cause d'une mauvaise écriture de ce header)
Voila, si ça peut te donner 2-3 pistes....
A+
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: Soucis avec header location suite à un formulaire
salut retza,
Avec les modifications de @zeb, je n'ai aucune insertion en bd. Les erreurs sont détectées -> le formulaire est donc OK mais rien ne se passe (pas d'enregistrement, pas de redirection).
C'est à dire ?
Sinon, certains éléments sont envoyés par sessions depuis mon 1er formulaire. Ces sessions permettent de montrer/cacher certains élément de mon formulaire de cette façon :
Cela peut il interagir sur le soucis que je rencontre ?
Avec les modifications de @zeb, je n'ai aucune insertion en bd. Les erreurs sont détectées -> le formulaire est donc OK mais rien ne se passe (pas d'enregistrement, pas de redirection).
Essaye de l'initialiser au début du script : $erreur=false;
C'est à dire ?
Sinon, certains éléments sont envoyés par sessions depuis mon 1er formulaire. Ces sessions permettent de montrer/cacher certains élément de mon formulaire de cette façon :
- Code: Tout sélectionner
<?php
if($_POST["categorie"]==1 OR $_SESSION["categorie"]==1){?>
Ici s'affiche une partie de mon formulaire
<?php
}
?>
Cela peut il interagir sur le soucis que je rencontre ?
-

IllusionPerdu - WRInaute discret

- Messages: 141
- Inscription: 11 Mar 2006
Re: Soucis avec header location suite à un formulaire
Avec le code de Zeb ça devrais fonctionner sauf si eventuellemnt il y a un problème d'insertion dans la base de donnée, ou un header (ou simplement un echo) qui a déjà été envoyer avant et qui interfère avec celui là...
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: Soucis avec header location suite à un formulaire
Ouai bhin la c'est un mystère pour moi
:
Voila à quoi ressemble ma page en plus court :
Résultat, pas d'enregistrement, pas de redirection.
Voila à quoi ressemble ma page en plus court :
- Code: Tout sélectionner
<?php
session_start();
//Ici je récupère des infos transmit d'une autre page par le biais d'une sessions
if(isset($_POST["envoyer"])){
//ici récupération du contenue du formulaire avec mis en forme (stripcslashes, etc...)
//ici gestion des erreurs
$erreur = false;
if($code_postal==''){
$erreur_code_postal='<div class="erreur"> Veuillez insérer un code postal.</div>';
$erreur = true;
}
if(!is_numeric($code_postal)){
$erreur_code_postal_numerique='<div class="erreur"> Le code postal (...) chiffres.</div>';
$erreur = true;
}
//etc....
//etc...
if($prix!='' AND !is_numeric($prix)){
$erreur_prix_numerique='<div class="erreur"> Le prix (...) chiffres.</div>';
$erreur = true;
}
if(!$erreur){
// si pas d'erreur
//ici connexion à la bd+enregistrement
$result = mysql_query("INSERT INTO TOTO VALUES( .....");
//fermeture de la connexion
if (!$result){
die('Un problème est survenu lors de l\'enregistrement.' . mysql_error());
}else{
//on redirige
header('location:ma-page.php');
exit;
}
}
}
?>
<html>
<head>
***
</head>
<body>
<?php
//On donne un nom au numéro des régions
if($_POST["region"]==1 OR $_SESSION["region"]==1){
$nom_region='<span class="region">Alsace</span><br/>';
}
$nom_departement ='<span class="departement">'.$departement.'</span><br/>';
if($_POST["categorie"]==1 OR $_SESSION["categorie"]==1){
$nom_categorie='<span class="categorie">Voitures</span><br/>';
}
?>
<form name="listes" action="#" method="post">
<?php
if($_POST["categorie"]==1 OR $_SESSION["categorie"]==1){?>
<?php echo $erreur_annee_voiture;?>
<span class="espace">Année :
<select name="annee_voiture">
<option value="">«Choisissez»</option>
<option value="2010" <?php if($annee_voiture==2010){echo "selected='selected'";}?>>2010</option>
<option value="2009" <?php if($annee_voiture==2009){echo "selected='selected'";}?>>2009</option>
</select>
</span>
<?php}?>
<?php echo $erreur_prix_numerique;?>
<label>Prix :</label>
<input name="prix" size="10" maxlength="8" value="" type="text">
<?php
if($_POST["categorie"]==1 OR $_SESSION["categorie"]==1){?>
<?php echo $erreur_km_voiture;?>
<label>km :</label>
<input name="prix" size="10" maxlength="8" value="" type="text">
<?php}?>
<input class="boutton" name="envoyer" value="Continuer" type="submit"/>
</form>
</body>
</html>
Résultat, pas d'enregistrement, pas de redirection.
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: Soucis avec header location suite à un formulaire
Je sais que tout le monde s'en fou mais j'ai trouvé le pourquoi du comment
!
Etant donné que certaines partie de mon formulaire s'ouvre en fonction $_POST["categorie"] ou de $_SESSION["categorie"] :
Il faut alors que je gère les erreurs au cas par cas en fonction de la catégorie sélectionné :
Etant donné que certaines partie de mon formulaire s'ouvre en fonction $_POST["categorie"] ou de $_SESSION["categorie"] :
- Code: Tout sélectionner
<?php
if($_POST["categorie"]==1 OR $_SESSION["categorie"]==1){?>
<?php echo $erreur_km_voiture;?>
<label>km :</label>
<input name="prix" size="10" maxlength="8" value="" type="text">
<?php}?>
Il faut alors que je gère les erreurs au cas par cas en fonction de la catégorie sélectionné :
- Code: Tout sélectionner
if($_POST["categorie"]==1 AND $annee_voiture==0){
$erreur_annee_voiture='<div class="erreur"> Veuillez sélectionner l\'année de votre véhicule.</div>';
$erreur = true;
}
11 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- header location Vs Header refresh ?
- Header Location
- header("Location: xxx") + header("Status: HTT
- UR / header location et Duplicate
- Header location et référencement
- Probleme setcookie et header(location)
- Fonction header location inopérante
- header("Location ou 301 moved ?
- redierction php : header location ou require ?
- [AJAX] Comment gérer les header('location:..');
- Test HTTP header
Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée. - Test de lien (type de redirection)
Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs).
Qui est en ligne
Utilisateurs parcourant ce forum: enams90 et 0 invités
