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 :

SESSION FLASH formulaire simple


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2017
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2017
    Messages : 78
    Points : 36
    Points
    36
    Par défaut SESSION FLASH formulaire simple
    Bonjour,

    Je suis face à un problème.

    J'ai un petit formulaire simple, Pseudo>Email>Message, si il y a des erreurs, alors il me retourne juste au dessus l'erreur grâce à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php if(!empty($errors)): ?> 
                <div class="alert alert-danger">   
                    <?php foreach($errors as $error): ?>
                         <?= $error; ?><br>
                    <?php endforeach; ?>
                </div>
    <?php endif; ?>
    Par contre là ou j'ai un problème, c'est que mon formulaire est en milieu de page.... et quand il y a des erreurs, alors il remonte tout en haut de la page....je voudrais qu'il revienne au niveau des erreurs de mon form... j'ai bien mis mon ID sur le <form> pour qu'il revienne là, mais, je ne sais pas ou mettre un header('Location') pour les erreurs....

    J'arrive à le faire pour le message de succés, sauf que le message de succés c'est sous form d'un $_SESSION['flash'], et ensuite j'ai mon header('Location: #1'); mais je n'arrive pas à le faire avec les erreurs...

    Je pourrais faire les erreurs avec mon système de $_SESSION flash mais le problème c'est qu'il va me retourner qu'une seule erreur à la fois, et non pas toute.... sauf si vous avez une solution....

    Si vous avez une solution pour faire un système de $_SESSION['flash']['success'] et un $_SESSION['flash']['erreur'] avec tous les messages qui s'affichent, je suis preneur...

    Cordialement.

    Voici le code de ma page index.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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
     
     
    <?php
    session_start();
    	require 'db/database.php';
     
     
    /* ON RECUPERE LES COMMENTAIRES */
     
    	$commentaires = $db->query("SET NAMES utf8");
    	$commentaires = $db->query('SELECT pseudo,time, message FROM commentaires ORDER BY id DESC');
    	$coms = $commentaires->fetchAll();
     
     
    if(!empty($_POST)) {
    $errors = array();
     
    if(empty($_POST['pseudo'])) {
      $errors['pseudo'] = "Vous devez rentrer un pseudo valide";
    } else {
      $req = $db->prepare('SELECT id FROM commentaires WHERE pseudo = ?');
      $req->execute([$_POST['pseudo']]);
    }
     
    if(empty($_POST['email'])) {
      $errors['email'] = "Vous devez rentrer un email valide";
    } else {
      $req = $db->prepare('SELECT id FROM commentaires WHERE email = ?');
      $req->execute([$_POST['email']]);
    }
     
    if(empty($_POST['message'])) {
      $errors['message'] = "Vous devez rentrer un message valide";
    } else {
      $req = $db->prepare('SELECT id FROM commentaires WHERE message = ?');
      $req->execute([$_POST['message']]);
    }
     
    if(empty($errors)){
     
      $insertmsg = $db->prepare('INSERT INTO commentaires(pseudo, email, message) VALUES(?, ?, ?)');
      $insertmsg ->execute(array($_POST["pseudo"], $_POST["email"], $_POST["message"]));
      // ENVOI D'UN EMAIL POUR NOTIFICATION ADMIN //
      $_SESSION['flash']['success'] = "Le commentaire à bien été posté.";
      header('Location: #1');
      die();
    }
    }
     
    ?>
     
    <?php include 'partials/header.php'; ?>
     
     
    	<h1 class="text-logo">Poster un commentaire</h1>
    		<form id="1" class="form-accueil-contact" action="index.php" method="POST">
     
     
            <?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; ?>
     
     
            <?php if(!empty($errors)): ?> 
                <div class="alert alert-danger">   
                    <?php foreach($errors as $error): ?>
                         <?= $error; ?><br>
                    <?php endforeach; ?>
                </div>
            <?php endif; ?>
     
     
     
            	<div class="form-group">
                <label>Pseudo</label>
    					  <input type="text" class="form-control" name="pseudo">	
    					</div>
     
    		      <div class="form-group">
                <label>E-mail</label>
                <input type="text" class="form-control" name="email">  
              </div>
     
     
              <div class="form-group">
                <label>Message</label>
                <textarea type="text" class="form-control" name="message"></textarea> 
              </div>
     
              <div class="form-group">
                <button class="bouton bouton-success" type="submit" class="form-bouton"><span class="glyphicon glyphicon-send"> ENVOYER</span></button>
              </div>
     
     
     
    		<div class="text-titre-commentaires">Commentaires</div>
     
    <!-- ON AFFICHE LES COMMENTAIRES -->
     
    				<?php
    					foreach ($coms as $c) {
    			                echo '<tr>';
    							echo '<td><img class="avatar-accueil-commentaires" src="images/icons/avatar.png"><span class="label-accueil-commentaires">' . $c['pseudo'] . '</span></td><br>';
    							echo '<td><span class="time-accueil-commentaires">' . $c['time'] . '</span></td><br><br>';
    							echo '<td><div class="separateur"></div></td>';
    							echo '<td><span class="message-accueil-commentaires">' . $c['message'] . '</span></td><br><br><br><br>';
    							echo '</td>';
    							echo '</tr>';
    					}
    				?>
     
    		</form>
     
    	<br><br><br><br><br><br><br><br><br><br>
     
    </div> <!-- FIN div WRAPPER -->
     
     
     
     
    </body>
    </html>

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2017
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2017
    Messages : 78
    Points : 36
    Points
    36
    Par défaut
    Et bien problème resolu.....


    J'ai juste remplacé les foreach dans mon index.php par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
          <?php if(array_key_exists('errors', $_SESSION)): ?>
            <div class="alert alert-danger">
              <?= implode('<br>', $_SESSION['errors']); ?>
            </div>
          <?php endif; ?>
     
     
          <?php if(array_key_exists('success', $_SESSION)): ?>
            <div class="alert alert-success">
              Votre commmentaire à bien été posté.
            </div>
          <?php endif; ?>
    Et dans ma page du traitement 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
     
     
     
    <?php 
     
    $errors = [];
    $success = [];
     
    if(!array_key_exists('pseudo', $_POST) || $_POST['pseudo'] == '') {
      $errors['name'] = "Vous n'avez pas renseigné votre pseudo";
    }
     
    if(!array_key_exists('email', $_POST) || $_POST['email'] == '') {
      $errors['email'] = "Vous n'avez pas renseigné votre email";
    }
     
    if(!array_key_exists('message', $_POST) || $_POST['message'] == '') {
      $errors['message'] = "Vous n'avez pas renseigné votre message";
    }
     
    session_start();
     
    if(!empty($errors)) {
      $_SESSION['errors'] = $errors;
      header('Location: index.php#1');
    } else {
      //$insertmsg = $db->prepare('INSERT INTO commentaires(pseudo, email, message) VALUES(?, ?, ?)');
      //$insertmsg ->execute(array($_POST["pseudo"], $_POST["email"], $_POST["message"]));
      $_SESSION['success'] = 1;
      header('Location: index.php#1');
    }
     
    ?>
    Quand je fais des erreurs elles s'affichent bien en flash et revient à l'ID 1 (donc au niveau de mon form) et pareil pour le message de success !

    Cordialement.

Discussions similaires

  1. [CS3] Formulaire simple dreamweaver
    Par Fabienwer dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 29/01/2008, 18h53
  2. Pb session après formulaire à deux boutons
    Par Lolie11 dans le forum Langage
    Réponses: 11
    Dernier message: 06/06/2007, 15h42
  3. Réponses: 2
    Dernier message: 18/01/2007, 21h38
  4. [FLASH MX2004] Simple utilisation d'un combobox
    Par Rei Itchido dans le forum Flash
    Réponses: 5
    Dernier message: 17/05/2006, 10h39
  5. Réponses: 32
    Dernier message: 20/03/2006, 14h23

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