Discussion:
If =?windows-1252?Q?imbriques?
(trop ancien pour répondre)
BPF
2007-06-14 05:54:33 UTC
Permalink
Bonjour,

Je me retrouve avec des IF/ELSE imbriqués, même si le script fonctionne,
il ne correspond pas exactement au résultat souhaité.
Quand je suis dans le Else qui affiche le message (Message déjà transmis
!), il ne faudrait pas que le Else du niveau supérieur ne soit traité
dans ce cas sinon j'ai l'autre boîte de dialogue (le message de
remerciement) qui s'affichent à la suite.
Après la première boîte il faudrait sortir du test parent pour ne pas
avoir la deuxième boîte.
Je pense que ma structure de IF / ELSE imbriqué n'est peut-être pas adapté.
Si vous avez des idées, je suis débutant en PHP.

Voici mon code :

if(isset($_POST['nom']) AND isset($_POST['message']))
{
if($_POST['nom'] != NULL AND $_POST['message'] != NULL)
{
// On filtre le HTML pour la sécurité
$nom = htmlentities ($_POST['nom'], ENT_QUOTES);
$message = htmlentities ($_POST['message'], ENT_QUOTES);

// On nettoie les données (sauts de ligne en trop--).
$nom = trim(ucfirst($nom));
$message = trim(ucfirst($message));

// Avant de mettre le message dans la table on vérifie si elle existe !
$dern_msg1 = mysql_query('SELECT message FROM guestbook ORDER BY id
DESC LIMIT 0,1');
$dern_msg = mysql_fetch_assoc($dern_msg1);

// Si tous les champs sont remplis.
if($dern_msg['message'] != $message)
{
// On définit la requête d'insertion.
$insert = "INSERT INTO guestbook VALUES('','$nom','$message','$date')";

// On exécute l'insertion des données dans la table.
$query = mysql_query($insert) OR die("Impossible d'ajouter le message
! ");
}
else {
echo '<script>';
echo 'alert("Message déjà transmis !");';
echo '</script>';
}
// On affiche un message de remerciement au visiteur.
echo '<script>';
echo 'alert("Votre message nous a été transmis avec succès ! Merci !");';
echo '</script>';
}
else // sinon on affiche un message d'erreur et on redirige.
{
echo '<script>';
echo 'alert("Tous les champs obligatoires ne sont pas remplis !");';
echo 'javascript:history.back(1);';
echo '</script>';
}
}
?>
Olivier Miakinen
2007-06-14 17:08:37 UTC
Permalink
Post by BPF
Je me retrouve avec des IF/ELSE imbriqués, même si le script fonctionne,
il ne correspond pas exactement au résultat souhaité.
Quand je suis dans le Else qui affiche le message (Message déjà transmis
!), il ne faudrait pas que le Else du niveau supérieur ne soit traité
dans ce cas
C'est bien le cas, si le code est tel que tu nous le montres.
Post by BPF
sinon j'ai l'autre boîte de dialogue (le message de
remerciement) qui s'affichent à la suite.
Ah oui, mais ce n'est donc pas le « else » du niveau supérieur (message
comme quoi il manque des champs) qui est exécuté. C'est juste du code
que tu aurais dû placer dans le troisième « if ».
Post by BPF
if(isset($_POST['nom']) AND isset($_POST['message']))
{
if($_POST['nom'] != NULL AND $_POST['message'] != NULL)
{
[...]
// Si tous les champs sont remplis.
if($dern_msg['message'] != $message)
{
// On définit la requête d'insertion.
$insert = "INSERT INTO guestbook VALUES('','$nom','$message','$date')";
// On exécute l'insertion des données dans la table.
$query = mysql_query($insert) OR die("Impossible d'ajouter le message ! ");
METTRE ICI
Post by BPF
}
else {
echo '<script>';
echo 'alert("Message déjà transmis !");';
echo '</script>';
}
LE CODE QUI EST LÀ : {
Post by BPF
// On affiche un message de remerciement au visiteur.
echo '<script>';
echo 'alert("Votre message nous a été transmis avec succès ! Merci !");';
echo '</script>';
}
Post by BPF
}
else // sinon on affiche un message d'erreur et on redirige.
{
echo '<script>';
echo 'alert("Tous les champs obligatoires ne sont pas remplis !");';
echo 'javascript:history.back(1);';
echo '</script>';
}
}
?>
Continuer la lecture sur narkive:
Loading...