Opérateur ternaire : Pb de syntaxe

Invité
Invité n'ayant pas de compte PHPfrance

27 févr. 2007, 12:11

Bonjour à toute la communauté,
je n'arrive pas à ecrire correctement un opérateur ternaire à l'interieur d'un <td> (tableau html).
Je précise qu'il ne m'est pas possible, dans mon code, de séparer le html et le php.

Cet opérateur ternaire, suivant son résultat, doit me permettre de determiner la couleur de fond (bgcolor) du <td>

Ainsi :
$bg = une valeur;
<td bgcolor = '(".$bg."' == 1)? #ffffff : #AAF2D3'>
Mais ca ne fonctionne pas. Avez-vous une idée?
Merci d'avance.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

27 févr. 2007, 12:15

L'opérateur ternaire ne fonctionne qu'au sein d'un script (PHP, Javascript, etc.)
Dans ton code, tu insères une fonction PHP (l'opérateur ternaire) dans du HTML.
Il n'y a pas de script ! :shock:

Cela ne peut donc pas marcher...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 févr. 2007, 12:17

Salut,
Je précise qu'il ne m'est pas possible, dans mon code, de séparer le html et le php.
Ta ta ta :non:
Pourquoi ?
<table><tr>
<?php
$bg = une valeur;
$couleur = ($bg == 1)? "#ffffff" : "#AAF2D3";
?>
<td bgcolor = '<?php echo $couleur;?>'> 
tu avais trop des guillemets un peu mal placés.

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

Invité
Invité n'ayant pas de compte PHPfrance

27 févr. 2007, 12:20

je me suis probablement mal exprimé...
Je suis bien dans le cadre d'un script php :
<?php
$bg = une valeur;

echo "<table><tr>"
	."<td bgcolor = '(".$bg."' == 1)? #ffffff : #AAF2D3'></td>"
	."<td>blalba</td>"
	."</tr></table>";

?>
et donc...ca ne fonctionne pas.

Invité
Invité n'ayant pas de compte PHPfrance

27 févr. 2007, 12:24

Truc :

je ne peux pas separer le php du html car je travaille sous SPIP.

Ta solution fonctionne (je t'en remercie), sauf que j'ai pas mal de celulle à tester de la sorte. Je dois donc integrer l'opérateur ternaire au fur et à mesure de la construction du tableau html par le script php (et non pas par à coup).
En fait (mais c'est encore une mauvaise formulation de ma part), je cherche la syntaxe correcte qui fonctionnera à chaque celulle à laquelle je l'appliquerai.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

27 févr. 2007, 12:24

<table>
<tr>
    <?php
    $bg = une valeur;
    echo "<td style='background-color:",($bg==1 ? "#FFFFFF" : "#AAF2D3"),"'></td>";
    ?> 
    <td>blalba</td></tr>
</table>

Invité
Invité n'ayant pas de compte PHPfrance

27 févr. 2007, 12:34

Albat :
Dans ta proposition le html et le php sont dissociés.
Pour la raison évoquée + haut, je ne peux pas faire ca.
C'est tellement dommage !!

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

27 févr. 2007, 13:04

Il te suffit simplement de découper en plusieurs chaines concaténées :
echo "<table><tr>" 
    ."<td bgcolor = '" . (($bg == 1) ? "#ffffff" : "#AAF2D3") . "'></td>" 
    ."<td>blalba</td>" 
    ."</tr></table>";
La coloration syntaxique de ton code, et le fait que l'on répète à tout bout de champ qu'il faut toujours sortir ses variables des chaines, auraient pu te mettre sur la voie ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

27 févr. 2007, 13:23

c'est vrai que ca aurait pu me mettre sur la voie...
d'un autre côté, quand on "appelle au secours" c'est bien que l'on passe à côté de qq chose d'évident...selon le point de vue des autres :)

Peu importe, ca fonctionne. Merci de ton aide !!
Quelqu'un peut mettre le tag Résolu???

A+

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 févr. 2007, 13:24

Quelqu'un peut mettre le tag Résolu???
C'est fait ;)

Mais n'oublie pas que ce n'est pas une critique, plutôt un conseil pour la prochaine fois que tu auras ce soucis ;)
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