Fond différent en fonction d'une donnée de la base mysql

mbk28 Messages postés 18 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 12 janvier 2014 - 6 sept. 2009 à 11:24
mbk28 Messages postés 18 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 12 janvier 2014 - 8 sept. 2009 à 21:29
Bonjour,

je suis en train de construire mes pages et je souhaiterais que le fond des lignes varie en fonction de la donnée medailleID.
les styles sont défini en css.
je souhaiterais que:
si medailleID=1 alors fond de cellule class="gold"
si medailleID=2 alors fond de cellule class="argent"
si medailleID=3 alors fond de cellule class="bronze"
sinon le fond de cellule est celui défini par défaut

le code du tableau:
<tr>
<td><?php echo $row_RsResult['Rg']; ?>. <?php echo $row_RsResult['Prenom']; ?> <?php echo $row_RsResult['Surnom']; ?> <?php echo $row_RsResult['Nom']; ?></td>
<td class="cent">" alt="flag" width="26" height="16" align="absmiddle" /> <?php echo $row_RsResult['Code']; ?></td>
<td class="perf"><?php echo $row_RsResult['Perf']; ?></td>
<td width="5%" class="cent">
<? if ($row_RsResult['Rec']==2) echo "RM"; ?>
<? if ($row_RsResult['Rec']==1) echo "RO"; ?>
</td>
</tr>

merci pour votre aide

mbk28

28 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
6 sept. 2009 à 13:49
Salut,

Merci d'indenter ton code et d'utiliser les balises code de la textbox qui vont bien, car là c'est illisible.

Pourquoi pas un truc comme ça :
<?php
echo '<tr ';

switch ($row_RsResult['medailleID']) {
  case 1:
  echo 'class="gold"';
  break;
  
  case 2:
  echo 'class="argent"';
  break;
  [...]
}
echo '>';
[...]



Cordialement,

Kohntark -
0
mbk28 Messages postés 18 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 12 janvier 2014
6 sept. 2009 à 14:27
bonjour,
j'ai essayé ton code mais il ne fonctionne pas

le code complet des cellules du tableau est le suivant:
<?php do { ?>
<tr>
<td><?php echo $row_RsResult['Rg']; ?>. <?php echo $row_RsResult['Prenom']; ?> <?php echo $row_RsResult['Surnom']; ?> <?php echo $row_RsResult['Nom']; ?></td>

<td class="cent">" alt="flag" width="26" height="16" align="absmiddle" /> <?php echo $row_RsResult['Code']; ?></td>

<td class="perf"><?php echo $row_RsResult['Perf']; ?></td>

<td width="5%" class="cent">
<? if ($row_RsResult['Rec']==2) echo "RM"; ?>
<? if ($row_RsResult['Rec']==1) echo "RO"; ?>
</td>

</tr>
<?php } while ($row_RsResult = mysql_fetch_assoc($RsResult)); ?>

mbk28
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
6 sept. 2009 à 15:21
Merci d'indenter ton code et d'utiliser les balises code de la textbox qui vont bien, car là c'est illisible.


Qu'est ce qui ne fonctionne pas au juste ? Tu as une erreur ? La class ne s'applique pas ? autre ? Quel est le code une fois la modification apportée ?

Cordialement,

Kohntark -
0
mbk28 Messages postés 18 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 12 janvier 2014
6 sept. 2009 à 15:55
bonjour,

mon code fonctionne bien, ce que je ne sais pas faire c'est comment pouvoir rédiger la condition exposée ci-dessus pour avoir la bonne couleur de fond
cordialement

mbk28
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
6 sept. 2009 à 16:21
Il me semble t'avoir proposé une solution, non ?
Tu dis que ça ne fonctionne pas, il serait bien de savoir ce qu'il se passe exactement et que tu postes ton code modifié.
Sans réponses à ces questions il me semble difficile de t'aider.

Cordialement,


Kohntark -
0
mbk28 Messages postés 18 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 12 janvier 2014
6 sept. 2009 à 17:15
le code modifié:
<?php do { ?>
echo '<tr ';
switch ($row_RsResult['medailleID']) {
case 1:
echo 'class="gold"';
break;
case 2:
echo 'class="argent"';
break;
case 3:
echo 'class="bronze"';
break;
}
echo '>';

dream me dit code invalide et en visualisation, les données n'apparaissent pas


mbk28
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
6 sept. 2009 à 23:15
Ben voilà, tout de suite c'est plus simple avec le code

Le pb :
Tu fermes le tag php ici :
<?php do { ?>
echo '<tr ';

Donc forcément le code n'est pas valide et ne s'exécute pas.

Cordialement,

Kohntark -
0
mbk28 Messages postés 18 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 12 janvier 2014
6 sept. 2009 à 23:44
après avoir retiré les caractères que tu m'as indiqué , maintenant ce sont d'autres balises qui deviennent invalides et rien n'apparait

mbk28
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
7 sept. 2009 à 09:00
Ah bon ? Où ça ? quelles lignes ? Quelles balises ? quels messages d'erreur reportés ?
Je ne suis pas devin; le code que je t'ai donné est valide et devrait fonctionner. Il y a de grandes chances que l'erreur vienne d'ailleurs, à toi de fournir les infos si tu veux de l'aide.
Toutes les balises d'ouverture / fermeture php sont elles correctes ?

Cordialement,

Kohntark -
0
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
7 sept. 2009 à 12:18
Bonjour,

Et un:
<?php 
$meds array( 1> 'gold', 2 => 'argent,
               3 => 'bronze' ) ;

do {
  echo '<tr class="'
   . $meds[$row_RsResult['medailleID']] .'">' ;
  // et tout le reste du row en cours...
} while...

et si le programme est propre et dans une classe ou fonction, le arry peut être static, donc généré une seule fois..
0
mbk28 Messages postés 18 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 12 janvier 2014
7 sept. 2009 à 19:15
bonjour,
il y a encore une erreur quelque part, car les balises td en gras sont considérés par Dream comme balises invalides donc il doit y avoir soit une apostrophe ou des guillemets mal placés, de plus en visualisation rien n'apparait
<tr>
<td>
16/08,
C.N.O.,
perf.,
,

<?php$meds array( 1> 'gold', 2 => 'argent', 3 => 'bronze' ) ;
do {
echo '<tr class=\"'
. $meds[$row_RsResult['medailleID']] .'\">' ;
<?php echo $row_RsResult['Rg']; ?>. <?php echo $row_RsResult['Prenom']; ?> <?php echo $row_RsResult['Surnom']; ?> <?php echo $row_RsResult['Nom']; ?>, </gras>
" alt="flag" width="26" height="16" align="absmiddle" /> <?php echo $row_RsResult['Code']; ?>,
<?php echo $row_RsResult['Perf']; ?>,
<? if ($row_RsResult['Rec']==2) echo "RM"; ?>
<? if ($row_RsResult['Rec']==1) echo "RO"; ?>,

<?php } while ($row_RsResult = mysql_fetch_assoc($RsResult)); ?>

</td>
</tr>

mbk28
0
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
7 sept. 2009 à 19:51
Normalement, si tu mets php en mode affichage des erreurs: error_reporting( E_ALL)
tu devrais recevoir ul'erreur, et là ligne à laquelle elle se produit.

Avec un bon éditeur de textes à coloration syntaxique, tu peux trouver immédiatement ce type d'erreur.
0
mbk28 Messages postés 18 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 12 janvier 2014
7 sept. 2009 à 20:04
le message d'erreur:

Parse error: syntax error, unexpected '<' on line 353


mbk28
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
7 sept. 2009 à 20:05
.. même problème que celui que j'évoquais précédemment : fermeture / ouverture de tag php incorrect.
Et puis "<?" s'écrit "<?php"
Ca serait sans doute plus simple si tu prenais le soin d'indenter comme je te le conseillais.


Kohntark -
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
7 sept. 2009 à 20:19
Petit complément :
La solution de Nautilus convient très bien et est préférable à la mienne (ça ne change "rien" mise à part le nb de lignes de code et éventuellement la compréhension)
Par contre elle générera une erreur dans le cas d'un style défini par défaut ($meds[$row_RsResult['medailleID']] non définie)
Pense donc à ajouter au tableau la valeur de $row_RsResult['medailleID'] qui correspondant à "sans médaille"


Cordialement,

Kohntark -
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
7 sept. 2009 à 20:27
Parse error: syntax error, unexpected '<' on line 353

Désolé de me répéter une nouvelle fois, mais je ne suis pas devin, comme personne ici d'ailleurs.
Comment peut on connaitre la ligne 353 si tu ne la précises pas explicitement ??
Comme dit avant, tu as omis la fermeture d'un tag php.


Kohntark -
0
mbk28 Messages postés 18 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 12 janvier 2014
7 sept. 2009 à 20:33
Merci ) tous,
il manquais { ?> à la fin du code
ça fonctionne maintenant

mbk28
0
mbk28 Messages postés 18 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 12 janvier 2014
7 sept. 2009 à 20:35
petit question subsidiaire:
que signifie indenter ?


mbk28
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
7 sept. 2009 à 20:44
Recherche google "indenter" => 221 000 réponses en 1/10 de seconde, le premier résultat donnant la réponse.
Au bout de la quatrième fois où j'emploie ce verbe tu aurais pu te renseigner, non ?

Pas indenté : les codes que tu fournis
Indenté : le code que te proposé Nautilus et le mien

Avoue que c'est bien plus clair et que les éventuelles erreurs sautent tout de suite aux yeux.
On pourrait presque dire que c'est la toute première phase du débuggage.

Cordialement,

Kohntark -
0
mbk28 Messages postés 18 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 12 janvier 2014
7 sept. 2009 à 22:06
bonsoir,
milles excuses si je vous dérange encore, mais si le tableau apparait bien dans dream, j'ai une erreur: Parse error: syntax error, unexpected T_ECHO
après recherche, il semble qu'il manque un }, mais je ne sais pas où le mettre malgré divers tentatives si c'est bien la solution de l'erreur.
le code du tableau non internder(je ne sais pas comment faire malgré divers recherche et test)

16/08,
C.N.O.,
perf.,
,

<?php$meds array( 1> 'gold', 2 => 'argent', 3 => 'bronze' ) ;
do {
echo '----
' ;
?>
;
<?php do { ?>
----

<? php echo $row_RsResult['Rg']; ?>. <?php echo $row_RsResult['Prenom']; ?> <?php echo $row_RsResult['Surnom']; ?> <?php echo $row_RsResult['Nom']; ?>,
" alt="flag" width="26" height="16" align="absmiddle" /> <?php echo $row_RsResult['Code']; ?>,
<?php echo $row_RsResult['Perf']; ?>,
<? if ($row_RsResult['Rec']==2) echo "RM"; ?>
<? if ($row_RsResult['Rec']==1) echo "RO"; ?>,

<?php } while ($row_RsResult = mysql_fetch_assoc($RsResult)); ?>


Pense donc à ajouter au tableau la valeur de $row_RsResult['medailleID'] qui correspondant à "sans médaille"

pour information la valeur de medailleId va de 1 à 10, seuls les 1, 2 et 3 ont une couleur de fond

mbk28
0
Rejoignez-nous