Couleur différente par ligne en fonction d'un champ couleur ?

Résolu
hystria Messages postés 3 Date d'inscription mercredi 6 janvier 2010 Statut Membre Dernière intervention 18 janvier 2010 - 17 janv. 2010 à 18:44
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);

?>

3 réponses

phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
17 janv. 2010 à 19:25
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.

______________________________________________________________________
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
17 janv. 2010 à 22:04
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à ;)
3
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
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
0
Rejoignez-nous