Redirection sous condition
Résolu
AAAL
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
Bilow Messages postés 1014 Date d'inscription Statut Membre Dernière intervention -
Bilow Messages postés 1014 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Quelqu'un peut-il m'indiquer pourquoi mon code "header" ne fonctionne pas? Ou bien un autre moyen pour envoyer l'internaute sur une page si la condition est remplie?
En vous remerciant.
<?php
if (!empty($nom) AND !empty($tel) AND !empty($email) AND !empty($date)){
header('Location: merci.php');
echo "Demande envoyée";
} else {
echo "Une erreur s'est produite, merci de bien vouloir renseigner les champs obligatoires"
?>
Quelqu'un peut-il m'indiquer pourquoi mon code "header" ne fonctionne pas? Ou bien un autre moyen pour envoyer l'internaute sur une page si la condition est remplie?
En vous remerciant.
<?php
if (!empty($nom) AND !empty($tel) AND !empty($email) AND !empty($date)){
header('Location: merci.php');
echo "Demande envoyée";
} else {
echo "Une erreur s'est produite, merci de bien vouloir renseigner les champs obligatoires"
?>
A voir également:
- Redirection sous condition
- Excel cellule couleur si condition texte - Guide
- Excel condition ou - Guide
- Excel copier une cellule si condition ✓ - Forum Excel
- Excel verrouiller cellule sous condition ✓ - Forum Excel
- Nbval avec condition ✓ - Forum Excel
5 réponses
Salut !
En utilisant header("Location: merci.php"), tu passe le relais à merci.php, et ton script PHP n'aura plus rien à dire.
Dès que tu appelles header() avec "Location", les informations envoyées au client proviendront de merci.php et pas de ta page actuelle. Donc, "demande envoyée" ou "une erreur s'est produite" ne surviendra jamais sur la page (sauf si header() renvoi une erreur).
Pour corriger ce problème, il faudra que tu voies ce que tu veux faire avec merci.php ; Que contient cette page ? Ou plutôt, à quoi sert-elle ? Si c'est pour remercier l'utilisateur, tu n'as simplement pas besoin d'écrire "Demande envoyée". Et si la condition if() renvoi false, alors "une erreur s'est produite" apparaîtra, et le code s'arrête la.
Tu as compris ? ;)
En utilisant header("Location: merci.php"), tu passe le relais à merci.php, et ton script PHP n'aura plus rien à dire.
Dès que tu appelles header() avec "Location", les informations envoyées au client proviendront de merci.php et pas de ta page actuelle. Donc, "demande envoyée" ou "une erreur s'est produite" ne surviendra jamais sur la page (sauf si header() renvoi une erreur).
Pour corriger ce problème, il faudra que tu voies ce que tu veux faire avec merci.php ; Que contient cette page ? Ou plutôt, à quoi sert-elle ? Si c'est pour remercier l'utilisateur, tu n'as simplement pas besoin d'écrire "Demande envoyée". Et si la condition if() renvoi false, alors "une erreur s'est produite" apparaîtra, et le code s'arrête la.
Tu as compris ? ;)
<?php $nom = $_GET['nom']; $tel = $_GET['tel']; $email = $_GET['email']; _date = $_GET['date']; if (!empty($nom) && !empty($tel) && !empty($email) && !empty($date)) header('Location: merci.php'); else echo "Une erreur s'est produite, merci de bien vouloir renseigner les champs obligatoires"; ?>
Pas faux, ça :)
Les champs que tu veux récupérer ne sont pas mis directement dans des variables mais dans un tableau, il faut donc aller les chercher. Là il les prend en GET (on peut les voir dans la barre d'adresse) mais tu n'as qu'à remplacer $_GET par $_POST si tu les veux en POST. Mais il y a un autre problème : tu demandes des données mais tu n'en fais rien ...
Les champs que tu veux récupérer ne sont pas mis directement dans des variables mais dans un tableau, il faut donc aller les chercher. Là il les prend en GET (on peut les voir dans la barre d'adresse) mais tu n'as qu'à remplacer $_GET par $_POST si tu les veux en POST. Mais il y a un autre problème : tu demandes des données mais tu n'en fais rien ...
Si j'ai une prmeiere page contenant mon formulaire :
<form method="post" action="envoi.php" name="formulaire">
qui collecte mes données
$nom=$_POST['nom'];
$tel=$_POST['tel'];
$email=$_POST['email'];
$event=$_POST['event'];
...
Puis une page envoi.php qui en vérifie certaines, si elles sont ok je souhaite allez vers la page merci.php (d'où mon header location) sinon j'echo un message d'erreur.
Mon probléme reside dans la redirection
<?php
if (!empty($nom) AND !empty($tel) AND !empty($email) AND !empty($date)){
header('Location: merci.php');
echo "Demande envoyée"; .......
En effet si la redirection fonctionnait je n'aurai pas "Demande..." affichée !
Merci
<form method="post" action="envoi.php" name="formulaire">
qui collecte mes données
$nom=$_POST['nom'];
$tel=$_POST['tel'];
$email=$_POST['email'];
$event=$_POST['event'];
...
Puis une page envoi.php qui en vérifie certaines, si elles sont ok je souhaite allez vers la page merci.php (d'où mon header location) sinon j'echo un message d'erreur.
Mon probléme reside dans la redirection
<?php
if (!empty($nom) AND !empty($tel) AND !empty($email) AND !empty($date)){
header('Location: merci.php');
echo "Demande envoyée"; .......
En effet si la redirection fonctionnait je n'aurai pas "Demande..." affichée !
Merci
Si tu gères la récupération des variables, qui, ici, est inexistante, alors on passe au problème de la redirection.
Lorsque tu éxécutes ton code, tu obtiens "Demande envoyée" ??? Dans ce cas, en toute première ligne de code, rajoute : error_reporting(E_ALL); Cela affichera toutes les erreurs dans les moindres recoins, parce que je soupçconne qu'il y en aie.
A part ca, tu pourrais nous faire un récapitulatif général de ce que tu souhaites faire ? Je n'ai pas trop bien compris le système final que tu souhaites obtenir.
:)
Lorsque tu éxécutes ton code, tu obtiens "Demande envoyée" ??? Dans ce cas, en toute première ligne de code, rajoute : error_reporting(E_ALL); Cela affichera toutes les erreurs dans les moindres recoins, parce que je soupçconne qu'il y en aie.
A part ca, tu pourrais nous faire un récapitulatif général de ce que tu souhaites faire ? Je n'ai pas trop bien compris le système final que tu souhaites obtenir.
:)
Dans le code de ghuysmans99, il n'y a pas d'accolade "{" après la condition if, aurai-je mis cela en trop???
Ne t'inquiète pas, il vaut toujours mieux mettre des accolades. Dans ce cas, dans le if, il n'y avait qu'une ligne, donc il n'en n'a pas mis et cela fonctionne. Mais à partir du moment où cela porte à confusion ou bien que cela dérange ou bogue...
Bref, je te conseille fortement de mettre des accolades, comme tu l'as appris. Et au final, cela ne change rien dans l'éxécution du script ;)
Bref, je te conseille fortement de mettre des accolades, comme tu l'as appris. Et au final, cela ne change rien dans l'éxécution du script ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Fais tout dans la même page, ça sera plus facile ... Voilà un canevas, tu n'as qu'à ajouter le traitement des données et les champs du formulaire :
<?php if (isset($_GET['action'])) { if (isset($_POST['nom']) && isset($_POST['tel']) && isset($_POST['email']) && isset($_POST['event'])) { //traitement des données (mail, db, etc.) } else { ?>Une erreur s'est produite, merci de bien vouloir renseigner les champs obligatoires. <a href="?retour">Retour</a><?php } } else { ?><form method="post" action="?action=go">tes champs ici</form><?php } ?>