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 :

Affichage des messages d'erreurs d'un formulaire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Par défaut Affichage des messages d'erreurs d'un formulaire
    Bonjour,

    J'ai un formulaire d'inscription et je veux afficher les erreurs à la suite comme ceci :

    Votre pseudo n'est pas valide
    Votre email n'est pas valide
    Vous devez rentrer un mot de passe valide
    etc...

    actuellement, la dernière erreur écrase la précédente (logique), alors j'ai bien tenté de mettre un . devant le = comme ceci :

    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
    <?php
    require_once 'inc/functions.php';
    session_start();
     
    if (!empty($_POST)) {
        require_once 'inc/db.php';
     
        if (empty($_POST['username']) || !preg_match('/^[a-zA-Z0-9_]+$/', $_POST['username'])) {
            $_SESSION['flash']['danger'] .= "Votre pseudo n'est pas valide (alphanumérique)";
        }
     
        if (empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
            $_SESSION['flash']['danger'] .= "Votre email n'est pas valide";
        }
     
        if (empty($_POST['password']) || $_POST['password'] != $_POST['password_confirm']) {
            $_SESSION['flash']['danger'] .= "Vous devez rentrer un mot de passe valide";
        }
     
        if (empty($_SESSION['flash'])) {
     
            // pas d'erreur donc Création du compte..................
        }
    }
     
    require 'inc/header.php';
     
    require 'view/register.php';
     
    require 'inc/footer.php';
    si je ne remplis aucun champ, ça fonctionne, mais si, par exemple, je remplis le pseudo et pas les autres champs, j'ai deux messages d'erreur :
    Notice: Undefined index: flash
    Notice: Undefined index: danger

    voici mon code qui affiche les erreurs (dans la page header.php)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        <?php if(isset($_SESSION['flash'])): ?>
            <?php foreach($_SESSION['flash'] as $type => $message): ?>
                <div class="alert alert-<?= $type; ?>">
                    <?= $message; ?>
                </div>
            <?php endforeach; ?>
            <?php unset($_SESSION['flash']); ?>
        <?php endif; ?>
    Pourquoi j'utilise les sessions pour l'affichage des erreurs ?
    Car parfois dans mon appli j'ai besoin d'afficher (les) l'erreur sur une autre page..

    quelle est la solution selon vous ?

    Merci pour votre aide.

  2. #2
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Le problème vient de ce que tu n'initialises pas $_SESSION['flash']['danger'] puisque tu fais une concaténation dans $_SESSION['flash']['danger'] qui n'existe pas.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    2 solutions :

    1/ la tienne (en initialisant comme Badaze le conseille) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $_SESSION['flash']['danger'] = '';
    if( ... )
    {
      $_SESSION['flash']['danger'] .= '...................<br />'; // <br /> pour passage à la ligne
    }
    if( ... )
    {
      $_SESSION['flash']['danger'] .= '...................<br />';
    }
    // affichage
    if( !empty($_SESSION['flash']['danger']) ) { 
       echo '<p>'.$_SESSION['flash']['danger'].'</p>';
    }

    2/ Avec un array :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $_SESSION['flash']['danger'] = array();
    if( ... )
    {
      $_SESSION['flash']['danger'][] = '...................';
    }
    if( ... )
    {
      $_SESSION['flash']['danger'][] = '...................';
    }
    // affichage
    $_SESSION['flash']['danger'] = ( !empty($_SESSION['flash']['danger']) )? '<ul><li>' . implode( '</li><li>', $_SESSION['flash']['danger'] ) . '</li></ul>' : ''; // sous forme de liste (par exemple)
    if( !empty($_SESSION['flash']['danger']) ) { 
       echo $_SESSION['flash']['danger'];
    }

  4. #4
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Par défaut
    Badaze : La solution fonctionne mais le <br /> à la fin me pose problème.. :/ il y a t'il un moyen de le mettre plutôt dans mon code d'affichage directement ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        <?php if(isset($_SESSION['flash'])): ?>
            <?php foreach($_SESSION['flash'] as $type => $message): ?>
                <div class="alert alert-<?= $type; ?>">
                    <?= $message; ?>
                </div>
            <?php endforeach; ?>
            <?php unset($_SESSION['flash']); ?>
        <?php endif; ?>
    Jreaux62 : j'ai un message d'erreur.. Warning: implode(): Argument must be an array in C:\wamp64\www\site5\inc\header.php on line 60

    Merci

  5. #5
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Pour le <br/>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        <?php if(isset($_SESSION['flash'])): ?>
            <?php foreach($_SESSION['flash'] as $type => $message): ?>
                <div class="alert alert-<?= $type; ?>">
                    <?= $message; ?><br/>
                </div>
            <?php endforeach; ?>
            <?php unset($_SESSION['flash']); ?>
        <?php endif; ?>

  6. #6
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Par défaut
    non j'ai les messages d'erreur sur une seule ligne..

Discussions similaires

  1. Affichage des messages d'erreur sur mon serveur
    Par philippe57460 dans le forum Langage
    Réponses: 4
    Dernier message: 25/06/2008, 09h23
  2. Réponses: 12
    Dernier message: 27/09/2007, 09h33
  3. Affichage des message d'erreurs avec Struts
    Par stujava dans le forum Struts 1
    Réponses: 4
    Dernier message: 13/08/2007, 22h12
  4. affichage des message d erreures
    Par Philcmoi dans le forum JSF
    Réponses: 6
    Dernier message: 05/08/2007, 20h18
  5. [PostgreSQL] eviter l'affichage des messages d'erreur
    Par Gandalf dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/03/2007, 11h15

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