IF / ELSE ?

Eléphanteau du PHP | 36 Messages

10 août 2006, 10:22

Bonjour à tous,

En fait je voudrai utiliser une requête disant "Si le champ lien_article2 de ma table matchs est vide, il faut afficher cette image" et "Si le champ lien_article2 de ma table matchs a une donnée d'enregistrée, il faut afficher l'image avec le lien" d'où mon code ci-dessous :
				if( empty( $data['lien_article2']))
         echo "<td align=\"right\">
						<a href=\"../../../actualite/article_handball.php?newsid=$row[lien_article2]\" target=\"_parent\">
								<img border='1' src='../../../design/18_news.gif' >
						</a>
						</center>
				</td>"; 

else {
         echo "<td align=\"right\"><img border='1' src='../../../design/18_blank.gif' width='10' height='10'></center></td>"; 
 }
Donc là le résultat est que même si le champ 'lien_article2' n'a aucune donnée, une image avec le lien s'affiche tout de même donc je sais pas trop m'y prendre.

Voici à quoi renvois "$data"

Code : Tout sélectionner

$data = mysql_fetch_array($result);
Merci d'avance pour votre aide
Salutations
Johan DOLLET
www.chti-handball.com

Eléphant du PHP | 353 Messages

10 août 2006, 10:26

essaye ça =>
if($data['lien_article2']=="") 

Eléphanteau du PHP | 36 Messages

10 août 2006, 10:33

Non j'ai l'erreur suivante :

Code : Tout sélectionner

Undefined variable: data

Eléphant du PHP | 353 Messages

10 août 2006, 10:37

ok je viens de voir ;)

$data = mysql_fetch_array($result); => $data = mysql_fetch_assoc($result);

Eléphanteau du PHP | 36 Messages

10 août 2006, 10:41

non j'ai toujours la meme erreur, je t'envois ma requete :
        $query1="SELECT cldom.nom as cldom, clext.nom as clext, phpl_matchs.buts_dom, phpl_matchs.buts_ext,
                        phpl_journees.date_prevue, cldom.id as cliddom, 
clext.id as clidext, date_reelle,
                        dom.id as eqdom, ext.id as eqext, 
phpl_matchs.id as id_match, 
phpl_matchs.lien_article as lien_article2, phpl_journees.id_champ as champ
                FROM phpl_equipes as dom, phpl_equipes as ext, 
phpl_matchs, phpl_journees,
                     phpl_clubs as cldom, phpl_clubs as clext
                WHERE phpl_matchs.id_equipe_dom=dom.id
                        AND phpl_matchs.id_equipe_ext=ext.id
                        AND phpl_journees.id_champ='$champ'
                        AND phpl_journees.numero='$numero'
                        AND dom.id_club=cldom.id
                        AND ext.id_club=clext.id
                        AND phpl_matchs.id_journee=phpl_journees.id
                        AND cldom.nom!='exempte'
                        AND clext.nom!='exempte'
                        ORDER BY date_reelle asc";
        $result=mysql_query($query1) or die (mysql_error());

Eléphant du PHP | 353 Messages

10 août 2006, 10:46

je viens de faire tilt !! change le nom de ta variable $data !! et mets par exemple $donnee , je pense que $data est un nom réservé

Eléphanteau du PHP | 36 Messages

10 août 2006, 10:49

J'ai toujours le même problème

Code : Tout sélectionner

Notice: Undefined variable: donnee in d:\easyphp1-8\www\resultats\divisions\consult\fonctions.php on line 204
c'est peut etre parce que je travaille en local ?

Eléphant du PHP | 353 Messages

10 août 2006, 10:52

Puis je avoir un peu plus de détails de ton code ?

Car c'est étrange ... :roll:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 août 2006, 10:52

Quant tu executes la requete directement dans PhpMyAdmin, est-ce que tu as des résultats ?

D'une manière générale, il faut toujours tester si la requete a retourné des résultats
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

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

10 août 2006, 10:56

empty() et == "" sont exactement la même chose;

mysql_fetch_array() qui retourne un tableau avec des valeurs indexées et associative (0 => "toto", "champ" => "toto", 1 => "titi", "champ2" => "titi", ...) est une version plus complète que mysql_fetch_assoc qui ne retourne les valeurs associatives ("champ" => "toto", "champ2" => "titi", ...)

$data n'est pas plus un nom protégé que $for ou $if (même si c'est mieux de pas les utiliser) grace au dollar qui les distingues d'une commande.

Ce n'est donc pas par là qu'il faut chercher l'erreur ;)

- Que contient $data ? (print_r($data);)
- Est ce que ta requête renvoi toujours un résultat ? (if ($data = mysql_fetch_array($result) {...})
- La variable $data est elle visible lorsque tu fais ton test (en gros est ce que ton test a lieu dans une fonction ou un objet alors que $data n'y est pas déclaré comme global ?)

Eléphant du PHP | 353 Messages

10 août 2006, 10:57

je suis d'accord avec toi zeus , mais pq une erreur Undefined variable: data?

Meme si la requete ne retourne aucune valeur ! on ne devrait pas avoir ça !

on aurait une variable data vide et non pas inexistante !!

J'ai pas raison ???

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 août 2006, 10:59

Normalement, oui ... mais il faudrait voir le code depuis la récupération des données jusqu'a leur utilisation pour confirmer cette affirmation ;)
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 | 36 Messages

10 août 2006, 11:00

je viens d'envoyer la page sur mon serveur, voici le résultat : http://www.chti-handball.com/resultats/ ... &numero=26

En fait ce que j'ai fais c'est ajouter une colonne après chaque équipe extérieur et donc j'ai ajouté ce code
												if($donnee['lien_article2']=="") 
         echo "<td align=\"right\"><a href=\"../../../actualite/article_handball.php?newsid=$row[lien_article2]\" 
target=\"_parent\"><img border='1' src='../../../design/18_news.gif' 
></a></center></td>"; 

else {
         echo "<td align=\"right\"><img border='1' src='../../../design/18_blank.gif' width='10' height='10'></center></td>"; 
dans la dernière colonne...

Sur cette exemple, il n'y a que le match ARRAS - ROUEN qui a un article en cliquant sur la petite image ; les autres matches ont dans la BDD le champ "lien_article" vierge mais il y a quand même l'image qui s'affiche avec un lien ''NULL''

Je pense que là tu vois déjà un peu plus ce que je veux faire ?[/code]

Eléphanteau du PHP | 36 Messages

10 août 2006, 11:03

Voici le code :
        // cellule d'affichage des derniers résultats
        $color=0;
        $query1="SELECT cldom.nom as cldom, clext.nom as clext, phpl_matchs.buts_dom, phpl_matchs.buts_ext,
                        phpl_journees.date_prevue, cldom.id as cliddom, 
clext.id as clidext, date_reelle,
                        dom.id as eqdom, ext.id as eqext, 
phpl_matchs.id as id_match, phpl_matchs.lien_article as lien_article2, phpl_journees.id_champ as champ
                FROM phpl_equipes as dom, phpl_equipes as ext, 
phpl_matchs, phpl_journees,
                     phpl_clubs as cldom, phpl_clubs as clext
                WHERE phpl_matchs.id_equipe_dom=dom.id
                        AND phpl_matchs.id_equipe_ext=ext.id
                        AND phpl_journees.id_champ='$champ'
                        AND phpl_journees.numero='$numero'
                        AND dom.id_club=cldom.id
                        AND ext.id_club=clext.id
                        AND phpl_matchs.id_journee=phpl_journees.id
                        AND cldom.nom!='exempte'
                        AND clext.nom!='exempte'
                        ORDER BY date_reelle asc";
        $result=mysql_query($query1) or die (mysql_error());

                		// on fait une boucle qui va faire un tour pour chaque enregistrement
$donnee = mysql_fetch_assoc($result);

				
                echo "<td align=\"right\" width=\"45%\"><a href=\"#\" 
onclick=\"window.open('../../../resultats/divisions/consult/club.php?id_clubs=$row[cliddom]
&champ=$row[champ]','Fichematch','toolbar=0,location=0,directories=0,status=0,
scrollbars=1,resizable=0,copyhistory=0,menuBar=0,width=400,height=350');return
 false;\">".$DebMarqueur1.$clubs_nom.$FinMarqueur1." </a></td><td 
align=\"center\"><a 
href=\"../../../../../resultats/divisions/consult/match.php?id_match=$row[id_match]\"
 target=\"_parent\">".$domproba." - ".$extproba."</a></td><td 
align=\"left\" width=\"35%\"><a href=\"#\" 
onclick=\"window.open('../../../resultats/divisions/consult/club.php?id_clubs=$row[clidext]
&champ=$row[champ]','Fichematch','toolbar=0,location=0,directories=0,status=0,
scrollbars=1,resizable=0,copyhistory=0,menuBar=0,width=400,height=350');return
 false;\">".$DebMarqueur2.$clubs_nom1.$FinMarqueur2." </a></td>";

				
								
												if($donnee['lien_article2']=="") 
         echo "<td align=\"right\"><a href=\"../../../actualite/article_handball.php?newsid=$row[lien_article2]\" 
target=\"_parent\"><img border='1' src='../../../design/18_news.gif' 
></a></center></td>"; 

else {
         echo "<td align=\"right\"><img border='1' src='../../../design/18_blank.gif' width='10' height='10'></center></td>"; 
 }
voilà désolé c'est un peu long :)

Eléphant du PHP | 353 Messages

10 août 2006, 11:05

que te donne un print_r($donnee) ?