Page 1 sur 1

Opérateur ternaire : Pb de syntaxe

Posté : 27 févr. 2007, 12:11
par Invité
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.

Posté : 27 févr. 2007, 12:15
par albat
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...

Re: Opérateur ternaire : Pb de syntaxe

Posté : 27 févr. 2007, 12:17
par Truc
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.

Posté : 27 févr. 2007, 12:20
par Invité
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.

Posté : 27 févr. 2007, 12:24
par Invité
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.

Posté : 27 févr. 2007, 12:24
par albat
<table>
<tr>
    <?php
    $bg = une valeur;
    echo "<td style='background-color:",($bg==1 ? "#FFFFFF" : "#AAF2D3"),"'></td>";
    ?> 
    <td>blalba</td></tr>
</table>

Posté : 27 févr. 2007, 12:34
par Invité
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 !!

Posté : 27 févr. 2007, 13:04
par Ryle
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 ;)

Posté : 27 févr. 2007, 13:23
par Invité
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+

Posté : 27 févr. 2007, 13:24
par zeus
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 ;)