Probleme php !

rouch Messages postés 2 Date d'inscription   Statut Membre -  
gaerebut Messages postés 1060 Statut Membre -
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. gaerebut Messages postés 1060 Statut Membre 171
     
    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
  2. rouch Messages postés 2 Date d'inscription   Statut Membre 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
  3. Dr Zoidberg Messages postés 547 Statut Membre 100
     
    Salut,

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

    a+
    1
  4. gaerebut Messages postés 1060 Statut Membre 171
     
    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