IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Redirection sur la page du formulaire


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Redirection sur la page du formulaire
    Coucou a tous,

    Tout est dans le titre je m'explique :

    Etant en première année en PHP, Je voudrais si l'utilisateur met des erreurs dans le formulaire après qu'il l'ait envoyé, qu'on recharge la page du formulaire avec les infos que l'utilisateur a déjà rentré (ce que j'ai pas encore fait) mais les erreurs qu'il a fait au dessus genre ce type d'erreur : le mail n'est pas valide,...
    Ce qui me pose le plus de soucis c'est quand j'envoi le formulaire,la redirection se dirige quand même vers la page de "résultat" et non la page du formulaire avec les erreurs quand je reviens dans la page précédente au contraire la ca me met le formulaire avec les erreurs mais je voudrais que ça soit fait automatiquement et pas que j'ai a faire page précédente comme ça avant d'envoyer "définitivement" le formulaire l'utilisateur rentre correctement tous les champs et la il appuie sur le bouton envoyé et ça s'envoi .
    Car je comprend pas très bien je redirige pourtant vers page5.php la où se trouve mon formulaire .
    J'ai également un petit soucis quand je recharge la page de résultat a partir de la barre d'adresse ca me met une erreur avec un stack similaire a ceci. (REGARDER LA MISE A JOUR en dessous)
    Nom : Capture7.PNG
Affichages : 120
Taille : 18,0 Ko


    Voici mes deux codes :

    Page5.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    <?php
        echo"
        <div class=\"container\">
            <div class=\"starter-template\">
            
            ";
    ?>
            <?php if(array_key_exists('errors',$_SESSION)) : ?>
                <div class="alert alert-danger">
                    <?= implode('<br>', $_SESSION['errors']) ?>
                </div>
            <?php unset($_SESSION['errors']); endif; ?>
     
    <?php
     
            echo"
            
            
                <form method=\"POST\" action=\"post_contact.php\">
                    <div class=\"row\">
                        <div class=\"col-md-6\">
                            <div class=\"form-group\">
                                <label for=\"Nom\">* Votre nom :</label>
                                <input type=\"text\" placeholder='Nom,prénom' name=\"Nom\" id=\"Nom\" class=\"form-control\"  required/>
                            </div>
                        </div>
                        <div class=\"col-md-6\">
                            <div class=\"form-group\">            
                                <label for=\"Email\">* Votre email :</label>
                                <br/>
                                <input type=\"text\" placeholder='Votre mail ici' name=\"Email\" id=\"Email\" class=\"form-control\"required/>
                                <br />
                            </div>
                        </div>
                        <div class=\"col-md-6\">
                            <div class=\"form-group\">            
                                <label for=\"Jesuis1\">Je suis :</label>
                                <br/>
                                <select name=\"Jesuis2\">
                                <option value=\"Part.\">Particulier</option>
                                <option value=\"Prof.\">Professionnel</option>
                                </select>
                                <br/>
                        </div> 
                            </div>
                        <div class=\"col-md-6\">
                            <div class=\"form-group\">       
                                <label for=\"message\">Votre Message :</label>
                                <br/>
                                <textarea id=\"Message\" name =\"Message\"placeholder='Votre message ici'></textarea>
                                <br/>
                            </div>
                        </div>       
                        <div class=\"col-md-6\">
                            <div class=\"form-group\">   
                                <input type=\"checkbox\" id=\"Newsletter\" name=\"Newsletter\" value=\"1\">
                                <label for=\"Newsletter\">Souhaitez-vous vous abonner à la newsletter ?</label>
                            </div>
                        </div>           
                                <button type =\"submit\" class=\"btn btn-primary\">Envoyer</button>
                    </div>
                </form>
                ";
            ?>
                <h2>Debug : </h2>
                <?=var_dump($_SESSION); ?>
    <?php
        echo"
            </div>
        </div>
            
        ";
        ?>
    <?php
    Et voici mon code concernant le traitement et la récupération des données
    post_contact.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    <?php
    /**
     * Created by PhpStorm.
     * User: theba
     * Date: 24/01/18
     * Time: 18:43
     */
     
    $errors = [];
     
     
    /* Ce qui a été fait avant
     * -------------------------------
     * if (filter_var($_POST['Email'], FILTER_VALIDATE_EMAIL))
    {
        echo "";
    }
    else
    {
        $errors['Email'] ='Cet email a un format non adapte.(mettez un arobase et un point)';
    }
    if(!array_key_exists('Email',$_POST)|| $_POST['Email'] == '')
    {
        $errors['Email']="Vous n'avez pas renseigne votre Email";
    }
    */
     
    // Si la personne veut recharger la page post_contact sans passer par le formulaire il aura ces erreurs : Mise a jour
     
    if(!array_key_exists('Email',$_POST)|| $_POST['Email'] == '' || !filter_var($_POST['Email'], FILTER_VALIDATE_EMAIL))
    {
        $errors['Email']= "Vous n'avez pas renseigne votre Email ou cet email a un format non adapte.(mettez un arobase et un point)";
    }
    if(!array_key_exists('Nom',$_POST)|| $_POST['Nom'] == '')
    {
        $errors['Nom']= "Vous n'avez pas renseigne votre Nom";
    }
    if(!array_key_exists('Message',$_POST)|| $_POST['Message'] == '')
    {
        $errors['Message']= "Vous n'avez pas renseigne votre Message";
    }
     
    // Si il n'y a pas d'erreurs alors on affiche si pas on réaffiche la page du formulaire
     
    if(!empty($errors))
    {
        session_start();
        $_SESSION['errors'] = $errors;
        $_SESSION['inputs'] = $_POST;
        header('Location : page5.php');
    }
    else
        {
            $nom=$_POST['Nom'];
            $email=$_POST['Email'];
            $jesuis=$_POST['Jesuis2'];
            $message=$_POST['Message'];
            if (isset($_POST['Newsletter'])) {
                $newsletter = 'Oui';
            }
            else {
                $newsletter = 'Non';
            }
            echo "Votre nom : ";
            echo $nom;
            echo "<br/>";
            echo "Votre email : ";
            echo $email;
            echo "<br/>";
            echo "Vous etes : ";
            echo $jesuis;
            echo "<br/>";
            echo "Votre message : ";
            echo $message;
            echo "<br/>";
            echo "Newsletter : ";
            echo $newsletter;
        }
     
        var_dump($errors)
    ?>

    Merci a vous tous de votre aide et désolé ma question si sa se trouve est bête a crever
    Mais ca fait un moment que je cherche après cette erreur
    PS : Attention seul les champs nom et email sont obligatoire.

    ----------------

    Mise a jour : après quelques recherche j'ai changé le début du post_contact.php et donc il me met plus d'erreur concernant le mail mais la redirection au niveau du formulaire me pose toujours problème... j'ai modifié le code dans l'exercice et mis se que j'ai mis avant en commentaire

  2. #2
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Salut,

    je ne suis pas certain d'avoir tout compris, mais la redirection est mal faite, les : doivent être collés à Location

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: page5.php');
    Aussi, petit détails qui me pique les yeux, pour l'affichage du code html, pourquoi le mettre dans un echo ? Visuellement illisible... et ça t'oblige à mettre des \ devant les guillemets.

    Dernier petit détail, tu peux remplacer tes vérifications de clé et de valeur !array_key_exists('Email',$_POST)|| $_POST['Email'] == '' par un simple !empty($_POST['Email'])

  3. #3
    Membre régulier Avatar de monaka
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2017
    Messages : 64
    Points : 107
    Points
    107
    Par défaut
    et pour compléter petit à petit

    J'ai également un petit soucis quand je recharge la page de résultat a partir de la barre d'adresse ca me met une erreur avec un stack similaire a ceci. (REGARDER LA MISE A JOUR en dessous)
    bin, c'est normal puisque ta page de résultat j'imagine tu parles page_contact.php lancé indépendamment de ton formulaire ne recevra aucune donnée

    Ce qui me pose le plus de soucis c'est quand j'envoi le formulaire,la redirection se dirige quand même vers la page de "résultat"
    puisque c'est cette page,disons ce fichier qui traite ton formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: page5.php');
    La rigueur vient toujours à bout de l'obstacle.
    Les détails font la perfection, et la perfection n'est pas un détail.

    J'avais une charrette tirée par des chevaux, mais j'ai acheté une voiture avec un moteur.
    Est-ce que je dois tout le temps rouler avec le moteur, ou est-ce que je peux atteler mes chevaux à la voiture de temps en temps ?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Super merci a vous deux je ne savais pas qu'au niveau du Location il fallait coller je vais dire les : sinon ca ne faisait pas la commande le php est sensible a la case si je m'en rappelle bien mais bon je ne savais pas que c'était aussi pointu : $
    Merci Geoffrey74 je vais modifié ça de suite merci beaucoup en tout cas pour ta patience et ton "enseignement" je vais dire enfin de m'avoir appris quoi
    Merci Monaka également
    Je reviens vers vous si j'ai un autre soucis mais normalement ca ne devrait plus posé aucun problème merci beaucoup a vous je vous souhaite une très bonne journée a vous deux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Formulaire de connexion et redirection sur la page précédente
    Par hackiles dans le forum Ruby on Rails
    Réponses: 6
    Dernier message: 13/06/2008, 14h17
  2. redirection sur nouvelle page
    Par kaygee dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/10/2007, 15h12
  3. Réponses: 1
    Dernier message: 20/01/2007, 14h06
  4. redirection sur une page
    Par fulgaro dans le forum Langage
    Réponses: 3
    Dernier message: 09/01/2006, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo