Redirection sous condition
Résolu/Fermé
AAAL
Messages postés
5
Date d'inscription
samedi 8 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2011
-
8 janv. 2011 à 23:52
Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 - 16 janv. 2011 à 17:48
Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 - 16 janv. 2011 à 17:48
A voir également:
- Redirection sous condition
- Excel cellule couleur si condition texte - Guide
- Condition et excel - Guide
- Excel soustraction avec condition ✓ - Forum Excel
- Couleur texte avec la fonction si - Forum Excel
- Google sheet masquer ligne sous condition ✓ - Forum Excel
5 réponses
Bilow
Messages postés
1014
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
9 janv. 2011 à 00:05
9 janv. 2011 à 00:05
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 ? ;)
ghuysmans99
Messages postés
2496
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
339
9 janv. 2011 à 00:08
9 janv. 2011 à 00:08
<?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"; ?>
Bilow
Messages postés
1014
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
9 janv. 2011 à 00:10
9 janv. 2011 à 00:10
C'est pas mal non plus. Mais un peu de texte serait mieux, tu ne trouves pas ? ;)
ghuysmans99
Messages postés
2496
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
339
Modifié par ghuysmans99 le 9/01/2011 à 00:15
Modifié par ghuysmans99 le 9/01/2011 à 00:15
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 ...
AAAL
Messages postés
5
Date d'inscription
samedi 8 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2011
9 janv. 2011 à 01:10
9 janv. 2011 à 01:10
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
Bilow
Messages postés
1014
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
9 janv. 2011 à 01:22
9 janv. 2011 à 01:22
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.
:)
AAAL
Messages postés
5
Date d'inscription
samedi 8 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2011
9 janv. 2011 à 01:13
9 janv. 2011 à 01:13
Dans le code de ghuysmans99, il n'y a pas d'accolade "{" après la condition if, aurai-je mis cela en trop???
ghuysmans99
Messages postés
2496
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
339
9 janv. 2011 à 01:17
9 janv. 2011 à 01:17
Je ne les ai pas mises vu qu'il n'y a qu'une ligne dans le bloc conditionnel.
Bilow
Messages postés
1014
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
9 janv. 2011 à 01:19
9 janv. 2011 à 01:19
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
ghuysmans99
Messages postés
2496
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
339
9 janv. 2011 à 01:25
9 janv. 2011 à 01:25
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 } ?>
Bilow
Messages postés
1014
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
9 janv. 2011 à 11:27
9 janv. 2011 à 11:27
Oui, c'est beaucoup plus simple. Et après "traitement des données", tu mets "Demande envoyée" aisni que les remerciements de merci.php;
Bilow
Messages postés
1014
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
16 janv. 2011 à 17:48
16 janv. 2011 à 17:48
De rien ;)