Redirection alternative après l'envoi d'un formulaire

Rechercher

Redirection alternative après l'envoi d'un formulaire

Par phil693  -  7 reponses  -  Le 13/06/2015 12:57  -  Editer  - 

Bonjour,

j'aimerais savoir comment faire pour rediriger mon visiteur vers une page ou une autre apres l'envois d'un formulaire.

J'ai fait une liste déroulante, et les réponses contenue offres 2 possibilité de redirection.

j'ai essayé avec un if{($_POST['choix1']) {header('loaction:Destination1.php');}
else {header('loaction:Destination2.php');}

Tout ceci mis avant le prepare et execute de ma requête préparé.
Mais rien ne marche....?!

 

Réponses apportées à cette discussion

Par Cyrano  -  Le 13/06/2015 18:49  -  Haut de page  - 

Bonsoir,
Qu'est-ce qui ne fonctionne pas exactement ?

Présenté comme ça, je soupçonne certains essais qui n'ont aucune chance d'aboutir, mais les possibilités sont multiples et me lancer dans les spéculations serait une perte de temps.

Ce qui me semble le plus probable comme interprétation reste cependant que le traitement des données du formulaire se passe dans une de ces deux pages de renvoi : le cas échéant, ça ne peut pas fonctionner puisque les données s'arrêtent sur la page où se trouve la redirection. Et si la requête est sur une de ces deux pages à partir des données postées, il est normal que ça ne fonctionne pas.

Pour que ça fonctionne, il faudrait traiter d'abord les données du formulaire et ensuite seulement rediriger ailleurs pour un affichage alternatif selon le premier choix.
Mais le traitement doit impérativement avoir lieu avant la redirection.

 
Par phil693  -  Le 13/06/2015 20:15  -  Haut de page  - 

Bonjour Cyrano,
et merci pour ta réponse.

En fait, tt a l'heure je n'étais pas chez moi. Je n'avais pas mon code sous la main.

Donc le voici pour le moment(réduit au minimum)
J'ai essayé de cette maniére, et en mettant aussi ma condition avant la requete, mais rien ne marche. ça n'insert rien dans la table, et la redirection ne se fait pas...!

    $choix = ($_POST['choix']);        
    if(!empty($_POST['choix']))
    {

        {
            $insertcat = $bdd->prepare("INSERT INTO categorie(choix) VALUES(?)");
            $insertcat->execute(array($choix));
            if(isset($_POST['choix_1'], $_POST['choix_2'], $_POST['choix_3'])) { header('location:Destination1.php') ;}
            else(isset($_POST['choix_4'], $_POST['choix_5'], $_POST['choix_6'])) { header('location:Destination2.php') ;}
            //c'est sur ce if que ça bloque
            //j'ai essayé en mettant ce if juste avant la préparation de la requete, ça ne change absolument rien. Pas d'erreur ou d'améliorations
        }

    }
    else
    {
        $erreur = "Veuillez renseigner le champ !";
    }
 
Par Cyrano  -  Le 13/06/2015 21:10  -  Haut de page  - 

Alors il faut vérifier s'il y a des erreurs lors de l'exécution de la requête.

Il serait utile de jeter un coup d'oeil dans la documentation.

 
Par phil693  -  Le 13/06/2015 21:17  -  Haut de page  - 

Re mercie pour ta réponse Cyrano,

Je n'ai aucunes erreur qui s'affiche lors de l execution.

Voici mon code complet concernant cette partie

<?php
session_start();

try
{
    $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
    die('Erreur : ' . $e->getMessage());
}


    $choix = ($_POST['choix']);        
    if(!empty($_POST['choix']))
    {

        {
            $insertcat = $bdd->prepare("INSERT INTO categorie(choix) VALUES(?)");
            $insertcat->execute(array($choix));
            if(isset($_POST['choix_1'], $_POST['choix_2'], $_POST['choix_3'])) { header('location:Destination1.php') ;}
            else(isset($_POST['choix_4'], $_POST['choix_5'], $_POST['choix_6'])) { header('location:Destination2.php') ;}
            //c'est sur ce if que ça bloque
            //j'ai essayé en mettant ce if juste avant la préparation de la requete, ça ne change absolument rien. Pas d'erreur ou d'améliorations
        }

    }
    else
    {
        $erreur = "Veuillez renseigner le champ !";
    }

?>

 
Par Cyrano  -  Le 13/06/2015 21:25  -  Haut de page  - 

Ok, il reste à ajouter une ligne après l'insertion pour récupérer les erreurs s'il y en a...

 
Par phil693  -  Le 13/06/2015 21:31  -  Haut de page  - 

Haa...?
Désolé Cyrano, je débute en PHP, serait ce celle de la documentation ?

<?php
/* Provoke an error -- bogus SQL syntax */
$stmt = $dbh->prepare('bogus sql');
if (!$stmt) {
echo "\nPDO::errorInfo():\n";
print_r($dbh->errorInfo());
}
?>

 
Par Cyrano  -  Le 13/06/2015 22:51  -  Haut de page  - 

Est-ce que ça ne semble pas logique ?

Ne jamais oublier que la programmation, que ce soit en PHP u dans n'importe quel langage, la première règle est, a toujours été et restera toujours la logique.

La documentation montre des exemples d'utilisation. Bien entendu, les lignes de codes montrées ne correspondent jamais à son propre code, mais il y a généralement suffisamment de similarités pour qu'on puisse définir comment adapter les éléments montrés à son propre code.

Ici, on a un objet $insertcat : dans la doc, c'est l'objet $stmt : des noms différents, mais c'est la même chose. Ce objet dispose de méthodes incluant la méthode errorInfo()

Allez, il y a plus qu'à ;)

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |