Conditions

Eléphant du PHP | 440 Messages

10 juin 2009, 19:58

Bonjour,

ce bout de code fonctionnait
if ($cpt%$nbCols==0)
        echo '<tr>';
		echo '<td align="center"><span class="style1"><strong>'.$row['nom'].' </strong><br/>'.$row['presentation'].'<br/><a href="http://'.$row['photo'].'" target="_blank"><img src="http://'.$row['photo'].'" width="220" border="0"/></a><br/>'.$row['suite'].'<br/>'.$row['prix'].'<br/>'.$row['paypal'].'</span></td>';

		if ($cpt%$nbCols==($nbCols-1))
        echo '</tr>';
		$cpt++; // on incrémente le compteur pour savoir où on en est 
}  
Je veux ajouter un logo. Mais une condition aussi disant que s'il n'y a pas de logo, on n'affiche rien et s'il y a un logo, on affiche le logo. Le code est devenu celui-ci.
if ($cpt%$nbCols==0)
        echo '<tr>';
		if (empty($logo)) {
        echo '<td align="center"><span class="style1"><strong>'.$row['nom'].' </strong><br/>'.$row['presentation'].'<br/><a href="http://'.$row['photo'].'" target="_blank"><img src="http://'.$row['photo'].'" width="220" border="0"/></a><br/>'.$row['suite'].'<br/>'.$row['prix'].'<br/>'.$row['paypal'].'</span></td>';
		else if {
		echo '<td align="center"><span class="style1"><strong>'.$row['nom'].' </strong><br/><img src="'.$row['logo'].'" width="100"/><br/>'.$row['presentation'].'<br/><a href="http://'.$row['photo'].'" target="_blank"><img src="http://'.$row['photo'].'" width="220" border="0"/></a><br/>'.$row['suite'].'<br/>'.$row['prix'].'<br/>'.$row['paypal'].'</span></td>';
}
		if ($cpt%$nbCols==($nbCols-1))
        echo '</tr>';
		$cpt++; // on incrémente le compteur pour savoir où on en est 
}  
Et là, y'a un problème ! Peut-être un conflit avec la condition déjà existante. C'est au-delà de mes compétences.
Merci de m'aider.
Débutant complet en php/mysql. Merci pour votre aide.

Eléphanteau du PHP | 18 Messages

10 juin 2009, 20:12

Salut,

Le programme rentrera toujours dans la condition

Code : Tout sélectionner

if (empty($logo))
car la variable $logo n'est pas initialisée donc forcément vide.

D'autre part tu écris

Code : Tout sélectionner

else if {
ca va pas cette syntaxe le else if doit etre accompagné d'une condition, je te conseille de revoir un cours sur les conditions en php exemple : http://creer-un-site.fr/les-conditions- ... f-else.php.

++

Eléphant du PHP | 440 Messages

11 juin 2009, 09:43

$logo a été déclaré auparavant :
 $logo = "logo" ;
sinon j'ai remplacé else if par else et j'ai ajouté une } qui manquait avant le else. La page s'affiche mais la condition ne se vérifie pas.
Débutant complet en php/mysql. Merci pour votre aide.

Eléphant du PHP | 65 Messages

11 juin 2009, 13:00

Je pense que lorsque tu testes si $logo est vide,
en fait, ce que tu veux c'est savoir si $row['logo'] existe,
pour alors l'afficher dans ta cellule.

Si tel est le cas,
pour y voir plus clair,
j'aurais plutôt procédé de cette manière.

A la place de ton if (empty($logo)) {} else {}, j'aurais écrit :

Code : Tout sélectionner

// Je prépare ma cellule $cellule = '<td align="center"><span class="style1">'; // les balises $cellule .= '<strong>'.$row['nom'].' </strong>'; // le nom $cellule .= '<br/>'; if (!empty($row['logo'])) { // le logo s'il existe $cellule .= '<img src="'.$row['logo'].'" width="100"/>'; $cellule .= '<br/>'; } $cellule .= $row['presentation']; // la présentation $cellule .= '<br/>'; $cellule .= '<a href="http://'.$row['photo'].'" target="_blank"><img src="http://'.$row['photo'].'" width="220" border="0"/></a>'; // la photo et son lien $cellule .= '<br/>'; $cellule .= $row['suite']; // suite ? $cellule .= '<br/>'; $cellule .= $row['prix']; // le prix $cellule .= '<br/>'; $cellule .= $row['paypal']; // paypal $cellule .= '</span></td>'; // et je l'affiche echo $cellule;
Cela t'évite d'écrire deux fois la même chose,
une fois dans le if, une autre dans le else,
la seule différence étant l'affichage du logo.

Fred

Eléphant du PHP | 440 Messages

11 juin 2009, 18:06

Très malin ! Et ça marche ...
tu avais oublié http:// devant '.$row['logo'].'

Seul petit défaut d'affichage quand le logo s'affiche, la photo qui est en dessous est décalée vers le bas.
S'il n'y a pas de logo, les 2 photos côte à cote sont au même niveau. S'il y a 1 logo, ou 2 logos de tailles différentes, les photos ne sont plus au même niveau.

Que faire pour résoudre cela ? J'ai trouvé, c'est tout bête, il suffit de configurer la hauteur des logos.

Question résolue. Merci encore.
Débutant complet en php/mysql. Merci pour votre aide.