Page 1 sur 1

affichage et condition

Posté : 26 déc. 2006, 19:36
par cmoi
Bonjour,
echo '<center><a href="'.mysql_result($res, $i, "WEB").'" target="_blank">'.'<img src="'.mysql_result($res, $i, "PHOTO").'" border="0" width="200" length="260"/>'.'</center></a>';  
qui affiche une photo avec un lien url. Mais quand il n'y a pas de photo comment faire pour qu'il n'y ait une sorte de cadre qui s'affiche ?

Merci comme toujours pour votre aide.

Posté : 26 déc. 2006, 19:39
par charabia
Testes l'existence de ta photo avec isset. Ensuite selon le cas soit tu affiches la photo, soit une image transparante avec un cadre grâce à un simple if...else.

Posté : 26 déc. 2006, 21:21
par cmoi
j'ai essayé de bidouiller un truc
if ('.mysql_result($res, $i, "PHOTO").' == true) 
	   { 
	   echo '<center><a href="'.mysql_result($res, $i, "WEB").'" target="_blank">'.'<img src="'.mysql_result($res, $i, "PHOTO").'" border="0" width="200" length="260"/>'.'</center></a>';  
		}
		else 
		{
		'<center><a href="'.mysql_result($res, $i, "WEB").'" target="_blank">'.'<img src="'.mysql_result($res, $i, "PHOTO").'" border="0" width="200" length="260"/>'.'</center></a>';  
		}
mais ca ne change rien. Je n'ai rien trouvé sur la façon de dire qu'un champ contient ou non une valeur.

Posté : 26 déc. 2006, 21:23
par charabia
C'est drôle....j'ai l'impression de parler en l'air :lol:
Testes l'existence de ta photo avec isset. Ensuite selon le cas soit tu affiches la photo, soit une image transparante avec un cadre grâce à un simple if...else.
Je ne vois le isset nulle part dans ton code.

Posté : 26 déc. 2006, 21:35
par cmoi
ok ok, j'essaie ça avec le if
if (isset('.mysql_result($res, $i, "LOGO").')) 

Posté : 26 déc. 2006, 21:41
par charabia
Pourquoi fais-tu une concaténation ?

Posté : 26 déc. 2006, 21:46
par cmoi
en fait j'ai vu que isset fonctionne avec des variables donc j'ai fait cela :
$logo = mysql_result($res, $i, "LOGO");
if ((isset($logo)) {
	   echo '<center><a href="'.mysql_result($res, $i, "WEB").'" target="_blank">'.'<img src="'.mysql_result($res, $i, "LOGO").'" border="0" />'.'</center></a>';  
	   } 
	   else
	  {
	  '<center><a href="'.mysql_result($res, $i, "WEB").'" target="_blank">'.'<img src="'.mysql_result($res, $i, "LOGO").'" border="0" width="200" length="260"/>'.'</center></a>';
	   }

Posté : 26 déc. 2006, 21:55
par charabia
Tu y es presque ce coup ci.

A la première condition tu affiches l'image si elle existe.

A la dexième tu dois afficher une autre image, celle qui remplace les logo inexistants avec une bordure comme tu veux faire.

Juste un tit souci, dans ta second condition (else) tu as oublié de faire un echo.

Et vu aussi que tu as créé une variable, utilises la :
mysql_result($res, $i, "LOGO") à remplacer par ton $logo.

Posté : 26 déc. 2006, 22:09
par cmoi
en fait je ne veux rien afficher si le logo n'existe pas. c'est pourquoi je n'ai pas mis echo.

Posté : 26 déc. 2006, 22:10
par charabia
Dans ce cas ne fait pas de else. Le IF suffira. Si existe alors affichage. Si ça n'existe pas il n'y aura rien.

Posté : 26 déc. 2006, 22:22
par cmoi
j'ai modifié ainsi
if ((isset($logo)) 
		{ 
       echo '<center><a href="'.mysql_result($res, $i, "WEB").'" target="_blank">'.'<img src="$logo" border="0" />'.'</center></a>';   
       }  
mais j'ai un message d'erreur à propos de { avant echo

Posté : 26 déc. 2006, 22:32
par charabia
Autant pour moi...mais à force je n'ai pas vu que je disais une bêtise.

En fait isset te permet de tester l'existance d'une variable. Or tu l'as initialisée donc elle existe. Maintenant il faut que tu regardes si ce champ est vide ou pas.
$logo = mysql_result($res, $i, "LOGO");
$web = mysql_result($res, $i, "WEB");

if ($logo!="")
{  
	echo '<center><a href="'.$web.'" target="_blank"><img src="'.$logo.'" border="0" /></center></a>';    
}
Et je le répète, si tu ne pas voir les tutoriaux pour connaître les bases, tu seras complètement perdu plus tard. Tu continues à concaténer de façon inutile plusieurs éléments, et quand il faut le faire tu ne le fais pas.

Je te conseille donc de parcourir ces sites avant de poursuivre :
http://www.phpdebutant.org
http:///www.siteduzero.com

Posté : 26 déc. 2006, 22:51
par cmoi
super tout fonctionne très bien. j'ai appliqué cette formule magique à une autre page (présentation en tableau). malheureusement quand le logo n'existe pas en 1re cellule, ce qui était en 2e passe en 1ère, ce qui était en 3e passe en 2e, etc ...

Comment faire pour qu'une cellule vide conserve une largeur minimum ?
Indiquer une largeur dans la balise ne suffit. Voici le code :
	echo '<table>'; 
    while ($i < $nb){ 
        echo '<tr onMouseOver="changeCouleur(this);" onMouseOut="remetCouleur(this);">'; 
		$logo = mysql_result($res, $i, "LOGO"); 
	$web = mysql_result($res, $i, "WEB"); 
	if ($logo!="") 
{   
    echo '<td valign="top" width="260"><center><a href="'.$web.'" target="_blank"><img src="'.$logo.'" border="0" width="130" length="260"/></center></a></td>';     
}
    echo '<td valign="top"><b><a href="'.mysql_result($res, $i, "SITE").'">'.mysql_result($res, $i, "SOCIETE").'</a></b></td>'; 
		echo '<td valign="top"><center><font face="Arial, Helvetica, sans-serif" size="1" color="#666666">'.mysql_result($res, $i, "THEMES").'</font></center></td>'; 
	    echo '<td valign="top"><center><font face="Arial, Helvetica, sans-serif" size="1" color="#666666">'.mysql_result($res, $i, "REGIONS").'</font></center></td>'; 
        echo '</tr>'; 
        $i++; 
    } 
    echo '</table>';

Posté : 26 déc. 2006, 22:57
par charabia
Un tout tit peu de logique ne ferait pas de mal...

Pourquoi quand le logo n'existe pas toute ta colonne saute ? Je te laisse réfléchir dessus, te donner la solution serait trop simple.

Et je crois que l'attribut length n'existe pas pour la balise img...

Posté : 26 déc. 2006, 23:02
par cmoi
il manque le else !!!

j'ai testé et ca marche du premier coup.

Merci beaucoup.