En gros je souhaite pouvoir afficher un message à l'attention de l'utilisateur comme par exemple "Connexion réussie", "Tel champ doit être renseigné" etc.
J'ai choisi d'utiliser des variables de session mais lorsque je veux afficher leur contenu je m'aperçois qu'il est vide après une redirection. Lorsque je déclare ma variable et que je l'affiche dans le même script tout va bien, mais si je la déclare et que je fais une redirection derrière, le message ne s'affiche pas, comme s'il n'y avait pas de session.
Je mets bien un session_start(); au début de chaque script.
Voici le code php qui génère le message (le tableau $err contient le cas échéant des messages d'erreurs, générés en amont lors de la validation du formulaire) :
//-- si on a détecté des erreurs
if (isset($err)) {
if (count($err) > 1) {
$_SESSION['error'] = "<p>".count($err)." erreurs ont été détectées :</p>\n<ul>\n";
foreach ($err as $ch) {
$_SESSION['error'] .= "<li>$ch</li>\n";
}
$_SESSION['error'] .= "</ul>\n";
}
else $_SESSION['error'] = "<p>$err[0]</p>";
}
//-- pas de redirection, le formulaire sera affiché plus bas dans le même fichier
//-- sinon on enregistre
if (!isset($err)) {
$nom = mysql_real_escape_string($nom);
$auteur = mysql_real_escape_string($auteur);
$sql = "INSERT INTO ma_table (id, nom, annee, mois, auteur, pays, langue, fichier)
VALUES('', '$nom', '$annee', '$mois', '$auteur', '$pays', '$langue', '$fic')";
$rs = @mysql_query($sql);
if (!$rs) {
$_SESSION['error'] = "<p>La requête \"<em>$sql</em>\" a généré : <strong>".mysql_error()."</strong></p>";
}
else $_SESSION['succes'] = "<p>Rapport enregistré.</p>";
//-- on redirige pour afficher le message sur la prochaine page.
header('Location: index.php');
}
et le code qui est censé afficher les messages :<?php
if (isset($_SESSION['error'])) {
$msg = $_SESSION['error'];?>
<div id="message" class="error">
<?php echo $msg; ?>
</div>
<?php
unset($_SESSION['error']);
}
if (isset($_SESSION['succes'])) {
$msg = $_SESSION['succes'];?>
<div id="message" class="succes">
<?php echo $msg; ?>
</div>
<?php
unset($_SESSION['succes']);
}
?>
C'est sans doute tout bête mais je ne vois pas...Merci d'avance pour toute aide !