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:
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:
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> |