Problème avec if

Invité
Invité n'ayant pas de compte PHPfrance

21 août 2007, 22:31

Bonjour,

Le code ci-dessous me permet d'afficher les anniveraires du jour. J'ai rajouté un if afin que si il n'y a pas d'anniveraire, cela me l'indique.

Si je ne mets pas le if, il m'afiche bien le ou les anniversaires

Si je mets le if, il m'affiche qu'un anniversaire même si plusieurs personnes sont nés le même jour.

Comment cela se fait-il ?
$formatdate = date("m-d");
$annee = date("Y");

$requete ="SELECT

DISTINCT

member_lastname as nom,
member_firstname as prenom,
member_id as id,
DATE_FORMAT(member_date_birth, '%d/%m/%Y') as datefr

FROM member

WHERE member_date_birth like '%-$formatdate' ORDER BY member_date_birth ASC ";   

$result = mysql_query($requete) or die ("probleme " .mysql_error()); 
$row = mysql_fetch_array($result); 

echo "<table width=\"350\" border=\"1\" cellspacing=\"5\" align=\"center\" class=\"noir\">";
echo "<td><center><b>Anniversaire(s) du jour</b><br>";

$naissance = $row['datefr'];
$annee_naissance = substr($naissance, 6 ,4);
$age = ($annee - $annee_naissance);

$prenom = $row['prenom'];
$nom = $row['nom'];
$id = $row['id'];

 while($row = mysql_fetch_array($result))
{ 

if ($row == 0)
{ 
echo "Pas d'anniversaire"; 

}

else {

echo "$prenom $nom</a> ($age ans)<br>";

}

}

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 août 2007, 00:19

La fonction mysql_fetch_array() retourne un array .... un tableau ne pouvant être égal à zéro, ton if n'est pas bon. Par ailleurs, si tu rentre dans le while, c'est que tu as au moins un enregistrement de trouvé.

Il te faut donc soit utiliser un compteur ou un flag pour savoir si tu rentre dans le while, soit récupérer le nombre d'enregistrement avec un COUNT(*) ou un mysql_num_rows()
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

22 août 2007, 08:01

La fonction mysql_fetch_array() retourne un array .... un tableau ne pouvant être égal à zéro, ton if n'est pas bon. Par ailleurs, si tu rentre dans le while, c'est que tu as au moins un enregistrement de trouvé.

Il te faut donc soit utiliser un compteur ou un flag pour savoir si tu rentre dans le while, soit récupérer le nombre d'enregistrement avec un COUNT(*) ou un mysql_num_rows()
Merci pour ton aide.

J'ai essayé mais je n'y arrive toujours pas :?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 août 2007, 08:05

Qu'est-ce que tu as essayé ? ;)

Tu n'auras pas de code tout fait et la solution de Ryle est la bonne solution.
Essayes donc de l'implémenter et reviens nous voir quand tu es bloqué ou quand tu as une question sur le fonctionnement de ton application ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 26 Messages

22 août 2007, 09:32

tu fais un mysql_num_rows() de ton $result et que si $result egal zero tu n'affiche rien sinon tu fais ton while en gros c'est ca ;)