Couleur différente par ligne en fonction d'un champ couleur ? [Résolu]

Messages postés
3
Date d'inscription
mercredi 6 janvier 2010
Statut
Membre
Dernière intervention
18 janvier 2010
- - Dernière réponse : hystria
Messages postés
3
Date d'inscription
mercredi 6 janvier 2010
Statut
Membre
Dernière intervention
18 janvier 2010
- 18 janv. 2010 à 00:27
Bonjour,

je chercher à afficher un tableau avec une couleur par ligne en fonction d'un champ couleur d'une base de donnée mysql.
je ne trouve pas la syntaxe exacte(je récupère la valeur mais elle est la même sur toutes les lignes de mon tableau au lieu de changer si la valeur de mon champ couleur change)
voici mon code :
<?php
// information pour la connection à le DB

$pass = 'pasword';
$db = 'mabase';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$select = 'SELECT matiere, nb_objet, nom, couleur FROM matable ORDER BY nom, matiere';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);


// si on a récupéré un résultat on l'affiche.
if($total) {
    // debut du tableau
    echo ''.\"\n\";
// première ligne on affiche les titres objet, quantité et nom dans 3 colonnes
echo '----
';
echo 'Objets, ';
echo 'Quantite, ';
echo 'Nom, ';
echo ''.\"\n\";
// lecture et affichage des résultats sur 3 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($result))
{
echo '----
';
echo ''.$row["matiere"].', ';
echo ''.$row["nb_objet"].', ';
echo ''.$row["nom"].', ';
echo ''.\"\n\";
}
    echo '
'."\n";
    // fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';

// on libère le résultat
mysql_free_result($result);

?>
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
14
3
Merci
Salut,

echo '<td bgcolor=#"'.$row["couleur"].'">'.$row["matiere"].'</td>';
echo '<td bgcolor=#"'.$row["couleur"].'">'.$row["nb_objet"].'</td>';
echo '<td bgcolor=#"'.$row["couleur"].'">'.$row["nom"].'</td>';


Ceci dit, la condition sur $total qui fait référence à la fonction mysql_num_rows() me parait légère. En effet, si ma mémoire est bonne cette fonction renvoie un nombre ou false en cas d'erreur; Donc quand tu te trouvera dans le cas où il n'y a pas d'enregistrement soit 0, la condition sera effectuer positivement.

______________________________________________________________________

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de phpAnonyme
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13
3
Merci
Salut,

Oui, la comparaison sur $total est légère. Mais a priori, elle doit fonctionner, malgré son manque de rigueur.

Le problème vient probablement de là :
echo '<td bgcolor=#".$row["couleur"].";">'.$row["matiere"].'</td>';


Les variables entre guillemets simples ne sont pas interprétées. Donc :
echo '<td bgcolor="#'.$row["couleur"].'";">'.$row["matiere"].'</td>';


Attention à mettre le # entre les guillemets doubles pour la valeur de l'attribut bgcolor. D'ailleurs, l'attribut bgcolor est déprécié depuis un certain temps maintenant, au profit des feuilles de style.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de neigedhiver
Messages postés
3
Date d'inscription
mercredi 6 janvier 2010
Statut
Membre
Dernière intervention
18 janvier 2010
0
Merci
Merci à vous deux, cela a bien résolu le problème.
la bonne syntaxe est effectivement
echo '<td bgcolor="#'.$row["couleur"].'";">'.$row["matiere"].'</td>';

j'avais une altération de la couleur avec
echo '<td bgcolor=#"'.$row["couleur"].'">'.$row["matiere"].'</td>';


en tout cas merci pour vos deux réponses
Commenter la réponse de hystria