Bonjour,

Je me permet d'écrire un post, je galère depuis plusieurs jours mais en vain
Voila je rencontre un petit problème avec mon code.

Ce que je fais

Je développe un petit espace membre et pour le moment j'en suis à l'inscription.
Et au dessus de mon formulaire je veux afficher toutes les erreurs de mon formulaire.
Pour cet exemple je vérifie que le nom et le prénom
Grâce à une classe que j'ai mise au point, si tout cela fonctionnerai (mais comme sa marche pas ><), ce serait censé m'afficher mes alertes flash.
Le problème :
Sa m'affiche qu'une seule erreur et non plusieurs

Ma class :

<?php

class FlashMessages {

    // On construit la fonction
    public function __construct() {
        // Créer le tableau de session s'il n'existe pas déjà
        if(!isset($_SESSION['flash_message']))
        {
            $_SESSION['flash_message'] = array(
                'type' => null,
                'message' => null
            );
        }
    }
    // On sauvegarde les messages en session
    public function AjoutMessage($type, $message)
    {
        $_SESSION['flash_message'] = array(
            'type' => $type,
            'message' => $message
        );
    }
    // Affichage
    public function Affichage() {
        if (isset($_SESSION['flash_message']['type']) AND isset($_SESSION['flash_message']['message'])) {
            // On définit le type du message flash à travers une variable
            $type = $_SESSION['flash_message']['type'];
            // On définit le message flash à travers une variable
            $message = $_SESSION['flash_message']['message'];
            ?>
                <div class="alertForm--<?php echo $type; ?>">
                    <ul>
                        <?php for($i = 0; $i < count($message); $i++): ?>
                            <li>
                                <strong><?php echo $_SESSION['flash_message']['message']; unset($_SESSION['flash_message']['type']); ?></strong>
                            </li>
                        <?php endfor; ?>
                    </ul>
                </div>
            <?php
        } else {
            return false;
        }
    }
}

Voici mon Html

<div class="indexOfPage">
    <div id="Content--Inner">
        <ul class="indexOfPage--Group">
            <li class="indexOfPage--GroupList">
                <?php echo REGISTERPAGE; ?>
            </li>
        </ul>
    </div>
</div>
<div class="formGroup">
    <div id="Content--Inner">
        <ul class="formGroup--Row">
            <li class="formGroup--RowList">
                <?php
                    $SessionMessage = new FlashMessages();
                    $SessionMessage->Affichage();
                ?>
                <form method="POST" action="#">
                    <div class="champForm">
                        <label><?php echo PRENOM; ?></label>
                        <input type="text" name="prenom" class="formControl">
                    </div>
                    <div class="champForm">
                        <label><?php echo NOM; ?></label>
                        <input type="text" name="nom" class="formControl">
                    </div>
                    <div class="champForm">
                        <label><?php echo ADRESSEEMAIL; ?></label>
                        <input type="email" name="adresse_email" class="formControl">
                        <span style="font-size: 13px; font-style: italic; font-weight: 300;"><?php echo ALERTREGISTEREMAIL; ?></span>
                    </div>
                    <div class="champForm">
                        <button type="submit" name="form_inscription" class="buttonControl"><?php echo ONGLETACCOUNT1; ?></button>
                    </div>
                </form>
            </li>
            <li class="formGroup--RowList">
                <a class="accountFacebook"><i class="fa fa-facebook"></i><?php echo REGISTERFACEBOOK; ?></a>
                <a class="accountGooglePlus"><i class="fa fa-google-plus"></i><?php echo REGISTERGOOGLEPLUS; ?></a>
            </li>
        </ul>
    </div>
</div>

Je vous promet que je suis désespérer :/
Je vous remercie des réponses que vous pourriez 'apporter.
Bonne soirée :)

2 réponses


Playzer
Auteur
Réponse acceptée

Sujet résolu

Playzer
Auteur

Bonjour,

J'ai tout refait au propre et simplifier les choses, tout cela fonctionne (il y a toujours un mais) mais, lors de l'affichage j'aimerais afficher une div (lors du foreach) histoire que sa me liste toute mes erreurs.

Une erreur par div, donc pour 2 erreurs, deux div.

Voici ma class :

<?php

    class FlashMessages {
        public function setFlash($message, $type = 'Error') {
            $_SESSION['flash'][$message] = [
                'type' => $type,
                'message' => $message
            ];
        }

        public function displayMessages() {
            if (isset($_SESSION['flash'])) {
                ?>
                    <?php
                        foreach ($_SESSION['flash'] as $flash) {
                            ?>
                                <div class="alertNotify--Error">
                                    <div class="notifyContent--Left">
                                        <span></span>
                                    </div>
                                    <div class="notifyContent--Right">
                                        <strong><?php echo $flash['message']; ?></strong>
                                    </div>
                                </div>
                            <?php
                        }
                        unset($_SESSION['flash']);
                    ?>
                <?php

            }
        }
    }

?>

Au moment du foreach, si je fais juste :

<?php echo $flash['message']; ?>

Sa me liste bien mes erreurs mais quand j'ai apporter la div, sa m'affiche q'une seule erreur.

Quelqu'un saurait pourquoi svp ?

Merci.