Erreur IF

Eléphant du PHP | 86 Messages

25 janv. 2006, 20:12

Bonsoir, voici mon code :
 <?
$sql = "SELECT * FROM lao_membre";
$req = mysql_query($sql) or die ("Erreur Recupération infos".mysql_error());
while($contenu = mysql_fetch_array ($req))
{
echo "<tr>";
echo "<td height='17' class='table_light' width='18'>&nbsp;</td>";
if ($contenu[pays] == 'France')
{
	print "<td class='table_light' width='4'><img src='../../_img/_profile/fr.gif'></td>";
	}
	else if ($contenu[pays] == 'Angleterre')
	{
	print "<td class='table_light' width='4'><img src='../../_img/_profile/uk.gif'></td>";
	}
	else if ($contenu[pays] == 'Belgique')
	{
	print "<td class='table_light' width='4'><img src='../../_img/_profile/be.gif'></td>";
	}
	else if ($contenu[pays] == 'Allemagne')
	{
	print "<td class='table_light' width='4'><img src='../../_img/_profile/de.gif'></td>";
	}
	else if ($contenu[pays] == 'Suisse')
	{
	print "<td class='table_light' width='4'><img src='../../_img/_profile/ch.gif'></td>";
	}
	else if ($contenu[pays] == 'Espagne')
	{
	print "<td class='table_light' width='4'><img src='../../_img/_profile/es.gif'></td>";
	}
	else
	{
	print "<td class='table_light' width='4'></td>";
	}
echo "<td class='table_light' width='123'><a href='index.php?p=joueur_detail&id=$contenu[id]'>".$contenu[pseudo]."</a></td>";
echo "<td class='table_light' width='120'>".$contenu[prenom]."</td>";
//
	$sql2 = "SELECT id,nom FROM lao_teams WHERE id = '".$contenu['id_team']."'";
	$req2 = mysql_query($sql2) or die ("Erreur Recupération infos".mysql_error());
	while($team = mysql_fetch_array ($req2)) {
		if ($team[nom] == '') {
		echo "<td class='table_light' width='127'>Aucun</td>";
		}
		else {
		echo "<td class='table_light' width='127'>".$team[nom]."</td>";
		}
	}
//
echo "<td class='table_light' width='97'>1er Janvier 2006</td>";
echo "<td class='table_light' width='47'><a href='mailto:$contenu[email]'><img src='_img/_mini/outlook.gif' width='15' heigh='15' border='0'></a></td>";
echo "<td class='table_light' width='11'><a href='http://$contenu[web]'><img src='_img/_mini/ie.gif' border='0'></a></td>";
echo "<td class='table_light' width='9'></td>";
}
?>
JE vous l'ai donné en entier pour le contexte :)

Voici la ligne qui plante :
//
	$sql2 = "SELECT id,nom FROM lao_teams WHERE id = '".$contenu['id_team']."'";
	$req2 = mysql_query($sql2) or die ("Erreur Recupération infos".mysql_error());
	while($team = mysql_fetch_array ($req2)) {
		if ($team[nom] == '') {
		echo "<td class='table_light' width='127'>Aucun</td>";
		}
		else {
		echo "<td class='table_light' width='127'>".$team[nom]."</td>";
		}
	}
//
Lorque j'ai une équipe il me l'affiche bien, seulement lorsque je n'en ai pas, il me supprime ma colonne et décale toutes mes données à gauche.
J'ai déja essayé d'afficher "Aucun" si pas de team ou d'utiliser isset ou empty
IMPOSSIBLE... :cry:
Si quelqu'un a une idée de pourquoi cela plante :D

MErci à tous...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 janv. 2006, 20:23

Salut,

avant d'en venir au problème, pour le contexte :wink: , tu pourrai astucieusement remplacer tous ces "ifelse" par un switch()

ou encore encore plus court, renommer les images avec l'intitulé au complet. "Angleterre.gif" au lieu de "uk.gif" qui qui permettrait de remplacer tous ces tests par un affichage simple:
print "<td class='table_light' width='4'><img src='../../_img/_profile/".$contenu['pays'].".gif' alt=".$contenu[pays]." /></td>"; 
Maintenant le problème:

Tu allignes toutes ces cellules sur une seule ligne ?
vu va avoir une sacrée barre de défilement :x

verifi ce test:
if ($team['nom'] == '')
la valeur par défaut est "" (vide) ou null pour ce champ dans le cas où il n'y a pas de nom ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 86 Messages

25 janv. 2006, 20:56

Tu allignes toutes ces cellules sur une seule ligne ?
vu va avoir une sacrée barre de défilement
oui sur une seule ligne ca donne ca :
Pays | Pseudo | Prénom| Equipe | Inscrit le | E-mail | Web
C'est pas si long :)
la valeur par défaut est "" (vide) ou null pour ce champ dans le cas où il n'y a pas de nom ?
Non en fait j'ai dans ma table lao_membre un champ id_team
Si le joueur appartient à une team il y a l'id de celle ci sinon le champ est vide.
Ensuite une fois récupéré ce n° je récupère le nom.
J'ai déja essayé
if ($team['nom'] == '0') 
mais cela n'a rien donné car mon champ est vide à défaut... :roll:
Merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 janv. 2006, 00:20

Donc tu n'as pas vraiment besoin d'une 2eme boucle dans ce code puisque la requete sur "lao_teams" ne rapporte que zéro ou un résultat.
$sql2 = "SELECT id,nom FROM lao_teams WHERE id = '".$contenu['id_team']."'";
$req2 = mysql_query($sql2) or die ("Erreur Recupération infos".mysql_error());
   
$num_rows = mysql_num_rows($req2); //compte le nombre de résultats retournés
 
if($num_rows != 0) // si un résultat, donc appartient à une team
{
   $team = mysql_fetch_array ($req2);
   echo "<td class='table_light' width='127'>".$team[nom]."</td>";
}
else //pas de team 
   echo "<td class='table_light' width='127'>Aucun</td>";

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 86 Messages

28 janv. 2006, 19:21

ah wééé !!! :oops:

Merci beaucoup @++ all