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. 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
    1
    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
      1. Salut,

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

        a+
        1
        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