Probleme php !

Bonjour,

je suis novice en php et après arrachage de cheveux je capitule !
Voila,

je dispose d'une Table a 3 champs : id / texte / couleur (soit rouge soit noir )
rouge =1 et noir =0

Je voudrais simplement afficher toute la table dans son ordre d'id' croissant, tout en affichant la couleur ( id / texte )
correspondante !

exemple : offre 1 : blaabla (noir)
offre 2 : blabla (noir)
offre 3 : blabla (rouge) ........

Mon problème est que je n'arrive soit, qu'a afficher les champs de couleur noir en premier et rouge ensuite (ou inversement) !
Ou alors, ma boucle saute directement de champs noir en champs rouge, en n'affichant pas l'offre 2 ( plus haut) par exemple, ainsi de suite...

merci de m'éclairer !!

<?php

mysql_connect('localhost', 'root', '') OR die('Erreur de connexion à la base');
mysql_select_db('test') OR die('Erreur de sélection de la base');

$requete = mysql_query("SELECT num, texte FROM truc") OR die('Erreur de la requête MySQL');
$requete1 = mysql_query("SELECT num, texte FROM truc WHERE couleur='1'") OR die('Erreur de la requête MySQL');
$requete2 = mysql_query("SELECT num, texte FROM truc WHERE couleur='0'") OR die('Erreur de la requête MySQL');
$couleur1 = mysql_query("SELECT couleur FROM truc WHERE couleur='1'") OR die('Erreur de la requête MySQL');

while ($resultat = mysql_fetch_row($requete))

{

if ($couleur1 && $resultat1 = mysql_fetch_row($requete1))

{echo '<p class=style1>offre '.$resultat1[0].' : '.$resultat1[1].'</p>';}

elseif ($couleur2 && $resultat2 = mysql_fetch_row($requete2))

{ echo '<p class=style2>offre '.$resultat2[0].' : '.$resultat2[1].'</p>';}

}

mysql_close();

?>
Configuration: Windows Vista
Firefox 2.0.0.16

4 réponses

  1. C'est toi qui est fait l'erreur rouch! Je te l'es bien mise moi :p

    Merci pour l'info Dr Zoidberg ! ;)

    A+

    Gaerebut
    1. Salut,

      Ton accolade du while n'est pas au bon endroit, elle va au dessus de $couleur ...

      a+
      1. merci pour ton ton aide gaerebut !!

        en fait j ai choisi ta 2ieme formule elle est plus claire !!
        par contre il il a toujours un problème , c est celui de la $couleur = $resultat['couleur'];
        qui reste toujours indéfinie dans la page !

        je suis donc parti sur :

        <?php

        mysql_connect('localhost', 'root', '') OR die('Erreur de connexion à la base');
        mysql_select_db('test') OR die('Erreur de sélection de la base');

        $requete = mysql_query("SELECT * FROM truc ORDER BY num") OR die('Erreur de la requête MySQL');

        while ($resultat = mysql_fetch_row($requete))

        $couleur = $resultat['couleur'];
        {

        if ($couleur)
        $couleur = "black";
        else
        $couleur = "#CC3333";
        echo '<p style="color:'.$couleur.'">offre'.$resultat["num"].' : '.$resultat1["texte"].'</p>';
        }

        mysql_close();

        ?>

        il me semble que le fecht_row() classe par default en ordre croissant d'id ( dans ma table appelé "num") !
        mais c'est cette $couleur de tri qui pose problème !

        merci en tout cas de ta réponse !! je creuse encore :)
        1. Salut,

          essayes comme ceci :

          <?php
          mysql_connect('localhost', 'root', '') OR die('Erreur de connexion à la base');
          mysql_select_db('test') OR die('Erreur de sélection de la base');
          
          $requete = mysql_query("SELECT * FROM truc ORDER BY id") OR die('Erreur de la requête MySQL');
          while ($resultat = mysql_fetch_row($requete))
          {
          $couleur =  $resultat['couleur'];
          
          if ($couleur)
          echo '<p class=style1>offre'.$resultat["id"].' : '.$resultat1["texte"].'</p>';
          else
          echo '<p class=style2>offre '.$resultat2["id"].' : '.$resultat2["texte"].'</p>';
          }
          
          mysql_close();
          
          ?>


          Par ailleurs, si dans ton style1 et style, juste la couleur change, tu peux faire un truc encore plus simple, du genre :

          <?php
          mysql_connect('localhost', 'root', '') OR die('Erreur de connexion à la base');
          mysql_select_db('test') OR die('Erreur de sélection de la base');
          
          $requete = mysql_query("SELECT * FROM truc ORDER BY id") OR die('Erreur de la requête MySQL');
          while ($resultat = mysql_fetch_row($requete))
          {
          $couleur =  $resultat['couleur'];
          
          if ($couleur) $couleur = "black"; else $couleur = "red";
          echo '<p style="color:'.$couleur.'">offre'.$resultat["id"].' : '.$resultat1["texte"].'</p>';
          }
          
          mysql_close();
          
          ?>


          Donne des nouvelles !

          A+

          Gaerebut