Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

If =?windows-1252?Q?imbriques?

1 réponse
Avatar
BPF
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>';
}
}
?>

1 réponse

Avatar
Olivier Miakinen

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.

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 ».

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

}
else {
echo '<script>';
echo 'alert("Message déjà transmis !");';
echo '</script>';
}


LE CODE QUI EST LÀ : {
// 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>';
}
}
?>