Problème de boucle

Résolu
develySIDE Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -  
develySIDE Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je réalise actuellement un bout code php pour une application web me permettant d'afficher le lien "mail" que si le mail à l'indice spécifié est renseigner dans la base de donnée, j'utilise une boucle while, je récupère mes données, mais lorsque je pose ma condition sur le champ de l'adresse mail, celui ci m'affiche systématiquement le champ mail, meme si celui ci n'est pas renseigner dans la base de donnée (valeur par defaut null), or je ne comprend pas pourquoi, puisqu'il y à un si _ sinon

voici le code :


while($a<$nb)                                      // on passe chaque ligne de résultat
{
$Nom_adherent = mysql_result($result,$a,"Nom_adherent");  // on récupère l'article
$Id_Adh = mysql_result($result,$a,"Id_Adh");  // on récupère l'article

$Num_adherent = mysql_result($result,$a,"Num_Adherent");  // on récupère l'article

$Class_Type = mysql_result($result,$a,"Class_Type");  // on récupère l'article

$Date_adhesion = mysql_result($result,$a,"Date_adhesion");

$Date_adh = DateMysqltoFr($Date_adhesion,'fr');

$Mail_adh = mysql_result($result,$a,"Email");
      
echo ("<td> <a href='Recherche_header_Adherent.php?id=$Nom_adherent&Num=$Num_adherent&CT=$Class_Type'>$Nom_adherent</a></td>");

echo ("<td><a href='Recherche_header_Adherent.php?id=$Nom_adherent&Num=$Num_adherent&CT=$Class_Type'>$Num_adherent</a></td>");

echo ("<td><a href='Recherche_header_Adherent.php?id=$Nom_adherent&Num=$Num_adherent&CT=$Class_Type'>$Date_adh</a></td>");
      
If (empty($Mail_adh))
{ 

echo "<td><a href='Historique_liste_adh.php?adh=$Id_Adh'>Cacher</a><br><a href='readhesion.php?Id_Adh=$Id_Adh'>Courrier</a></td>";

}
else
{
echo "<td><a href='Historique_liste_adh.php?adh=$Id_Adh'>Cacher</a><br><a href='readhesion.php?Id_Adh=$Id_Adh'>Courrier</a><br><a href='mail.php?Id_Adh=$Id_Adh'>Mail</a></td>";

}
      
echo ("</tr>");
$a++;
}


Si vous pouviez m'aider à comprendre, car à l'heure actuelle je ne vois toujours pas (après 4heure de réflexion)

Merci d'avance !

EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

1 - Tu utilises l'ancienne extension MYSQL.
je t'invite à lire ceci :
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top

Puis à passer à PDO ( ou mysqli )
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli

https://www.commentcamarche.net/faq/27489-pdo-une-autre-facon-d-acceder-a-vos-bases-de-donnees

2 - Je te conseille d'écrire tes IF ELSE de la façon suivante :
if ($a === $b) {
   bar();
} elseif ($a > $b) {
  $foo->bar($arg1);
} else {
  BazClass::bar($arg2, $arg3);
}

Voir la norme PSR2 : https://www.php-fig.org/psr/psr-2/


3 - Nous ne savons pas ce que contiennent tes variables.
Peux tu faire un ECHO de ta variable $Mail_adh et nous le montrer ?

0
develySIDE Messages postés 50 Date d'inscription   Statut Membre Dernière intervention  
 
Je ne peux passé en pdo car l’hébergeur est trop ancien, navré, j'ai réussit à résoudre mon problème, je l'explique au cas ou certain aurai le même:

grace à var_dump($Mail_adh);
j'ai pue voir que la longueur de la chaine était de 1, malgré qu'elle n'affiche rien, aussi j'ai poser une condition sur la longueur, et non sur le contenu de la variable

Merci beaucoup pour votre aide en tout cas
0