Probléme avec la fonction switch

Répondre
djo
le 16/08/2007 à 10:52
djo
hello tous

Voila je dev un petit soft en php qui doit recuperer des instructions dans une db et part rapport a cetaines données il doit mettre une couleur de fond sous le text a afficher mais pour le moment il m'affiche une page blanche:

Voici mon code si quelqu'un avai l'amabilitée de m'aider a comprendre ou ce trouve mon erreur ca serai super:

<?php
include "connection.php";
$req = mysql_query("select id, mfrom, subject, priority from incoming order by id desc limit 0,1") or die( 'Erreur '.$req.'<br>'.mysql_error() );

while ( $row = mysql_fetch_row( $req ) )



switch ($row['priority']) {
case 1 :
$couleur = '#4fce1c';
break;
case 2 :
$couleur = '#f2e910';
break;
case 3 :
$couleur = '#f89909';
break;
case 4 :
$couleur = '#e22112';
break;
}

{
echo '<table style="background-color:'.$couleur.';">';
// echo '<tr style="background-color:'.$couleur.';">';
echo '<td>'. $row[0] .'</td>'.'<br>'.'<br>';
echo '<td>'. $row[1].'</td>' ;
echo '<td>'.'<h1>'. $row[2].'</h1>'.'</td>';
echo '</tr>';
echo '</table>';

};




?>


Merci d'avance
LA GLOBULE
le 16/08/2007 à 10:58
LA GLOBULE
$row['priority'] n'existe pas, il est la ton soucis.
mysql_fetch_row retourne un tableau indexé numériquement.

Il faut switcher suivant $row[3].

Sinon, utilise mysql_fetch_array ou mysql_fetch_assoc pour avoir un tableau indexé via les champs SQL que tu sélectionnes.

PS : vu que tu LIMIT 0,1 ce n'est peut-être pas nécessaire de faire un while ;)
djo
le 16/08/2007 à 11:11
djo
Ok alors j'ai remplacé
$row['priority']
par $row [3]

mais toujours une page blanche vide ./
LA GLOBULE
le 16/08/2007 à 11:37
LA GLOBULE
Effectivement, tu as un problème d'accolades que je n'avais pas vu.

Voici ton code corrigé :

<?php
include "connection.php";
$req = mysql_query("select id, mfrom, subject, priority from incoming order by id desc limit 0,1") or die( 'Erreur '.$req.'<br>'.mysql_error() );

while ( $row = mysql_fetch_row( $req ) ) {

switch ($row['priority']) {
case 1 :
$couleur = '#4fce1c';
break;
case 2 :
$couleur = '#f2e910';
break;
case 3 :
$couleur = '#f89909';
break;
case 4 :
$couleur = '#e22112';
break;
}

echo '<table style="background-color:'.$couleur.';">';
// echo '<tr style="background-color:'.$couleur.';">';
echo '<td>'. $row[0] .'</td>'.'<br>'.'<br>';
echo '<td>'. $row[1].'</td>';
echo '<td>'.'<h1>'. $row[2].'</h1>'.'</td>';
echo '</tr>';
echo '</table>';
}
?>
djo
le 16/08/2007 à 12:01
djo
Merci en tout cas la j'ai des choses qui s'affiche mais le couleur qui sont defini dans le switch elles ne s'affichent pas en fait dans le champ "priority" j'ai 4 valeur qui vont de normale a critical et donc j'imagine qu'il doit me manquer une instruction sql pour que cela fonctionne ?
LA GLOBULE
le 16/08/2007 à 12:12
LA GLOBULE
Ben non, mais la, tu selectionnes qu'une seule ligne, donc tu ne dois voir qu'une ligne dans ton tableau, donc pas les 4 couleurs.
Il te manque aussi un <tr> (en commentaire dans ton code).
LA GLOBULE
le 16/08/2007 à 12:16
LA GLOBULE
Tu dis que ton champ priority va de critical à normal ?

Ca n'est pas logique, car dans ton switch, tu switch de 1 à 4, et pas de normal à critical.
djo
le 16/08/2007 à 14:10
djo
justement c'est la que le bas blesse je trouve pas le moyen de modifier le switch correctement pour que cela fonctionne
Répondre
LoadingChargement en cours