Page 1 sur 1

Problème avec if

Posté : 21 août 2007, 22:31
par Invité
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>";

}

}

Posté : 22 août 2007, 00:19
par Ryle
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()

Posté : 22 août 2007, 08:01
par Invité
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 :?

Posté : 22 août 2007, 08:05
par zeus
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 ;)

Posté : 22 août 2007, 09:32
par santaclos
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 ;)