IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

je galère avec mon while :(


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 63
    Par défaut je galère avec mon while :(
    Bonjour,

    voici ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $requete = ("SELECT * FROM fruits ORDER BY vote DESC");
    while $resultat = (mysql_fetch_array($requete)) {
    echo $resultat['nom'];
    Cela m'affiche :
    banane
    poire
    pomme

    Mais j'aimerais que ça m'affiche :
    le meilleur = banane
    le moyen = poire
    le moins bon = pomme

    et j'ai aucune idée de comment faire.

    Merci d'avance à qui pourra m'aider !

  2. #2
    Membre éclairé Avatar de rinuom99
    Étudiant
    Inscrit en
    Août 2007
    Messages
    260
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 260
    Par défaut
    mais sur quelle base tu veux les classer meilleur, moyen, moins bon !!!?

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Par défaut
    Dans ton résultat, tu les récupère toujours dans le bon ordre, du meilleur au moins bon ?

    Une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    $compt = 0 ;
    $requete = ("SELECT * FROM fruits ORDER BY vote DESC");
    while($resultat = mysql_fetch_array($requete)) {
    switch($compt)
    case 0:
        echo"Le meilleur :".$resultat['nom'];
        $compt++;
        break;
    case 1:
        echo"Le moyen :".$resultat['nom'];
        $compt++;
        break;
    default:
        echo"Le pire :".$resultat['nom'];
        $compt = 0;
        break;
    }
    Je ne sais pas si c'est le meilleur moyen, peut-être qu'il existe un truc plus propre, mais ca répondra à ton soucis

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par bob633
    peut-être qu'il existe un truc plus propre
    Pour le savoir, il faudra en savoir plus sur le contexte et les contraintes de maxence64...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Salut,

    la bonne syntaxe c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while( $resultat = mysql_fetch_array( $requete ) ) 
    {
    //le reste du code ici...
    }

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,
    et en plus concis il y a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $i = -1 ;
    $ordre = array('Le meilleur', 'Le moyen', 'Le pire');
    $sql = "SELECT * FROM fruits ORDER BY vote DESC";
    while ($resultat = mysql_fetch_assoc($sql)) {
       echo $ordre[++$i].' '.$resultat['nom'];
    }
    ?>

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 63
    Par défaut
    super, merci raw et les autres.
    Le contexte c'est que je veux pouvoir mettre des infos différentes dans l'affichage (numéro, couleurs, ou autres) mais ça ne change rien si ?

    Par exemple si j'affiche des images je voudrais que la 1re soit grande, la 2e moyenne, la 3e géante, bref... vous voyez ?

    Je pense que la solution de raw est la meilleur ?
    merci

  8. #8
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Par défaut
    Oui sa solution est plus concise que la mienne en effet =)

    Oui suffit de changer tes valeurs dans l'array() pour les noms que tu souhaites

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ce qu'il faudrait savoir, par exemple, c'est combien d'enregistrements ta requête est susceptible de te renvoyer ?
    Il faudra éventuellement prévoir les cas où tu auras plus de 3 résultats, que se passe-t-il si plusieurs votes ont la même valeur, d'où sortent les libellés de ton classement.

    Bref, tous les éléments susceptibles d'influer sur le comportement de ton traitement.

    Parce que la solution de rawsrc est bonne, mais ne t'étonne pas si tu te retrouves avec une erreur de type undefined index à l'exécution
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    Membre confirmé
    Inscrit en
    Mai 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 63
    Par défaut
    Oui c'est un gros soucis car ma requête peut retourner des dizaines d'enregistrements !
    Et je veux pouvoir ajouter un texte libre uniquement pour les 2, 3 ou 4 premiers...
    Un texte ou une couleur, bref... quelque-chose manuellement !

    C'est un peu comme les résultats d'un topic de forum ou un coup sur 2 la couleur du post est différentes... et moi je voudrais la 1re en fond rouge, 2e en fond noir, 3e en fond bleu...

    Je croyais que ça marchait avec des $i++ mais je n'y capte rien :/

  11. #11
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    C'est toujours la même logique :
    en fonction de la position dans ton jeu d'enregistrement, tu paramètres à la volée ton rendu. Ici je t'ai mis un exemple avec des classes (css) gérant la couleur de fond (background)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $i = -1 ;
    $couleurs = array('bgRouge', 'bgNoir', 'bgBleu');
    $sql = "SELECT * FROM fruits ORDER BY vote DESC";
    while ($resultat = mysql_fetch_assoc($sql)) {
       echo '<span', 
            (isset($couleurs[++$i]) ? ' class="'.$couleurs[$i].'"' : null), 
            '>', 
            $resultat['nom'], 
            '</span>';
    }
    ?>
    Voici une ligne créée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span class="bgRouge">texte</span>
    Dans le code suivant je mixé les deux : texte et css :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
     
    $couleurs = array('bgRouge', 'bgNoir', 'bgBleu');
    $ordre    = array('Le meilleur', 'Le moyen', 'Le pire');
     
    $i   = -1 ;
    $sql = "SELECT * FROM fruits ORDER BY vote DESC";
     
    while ($resultat = mysql_fetch_assoc($sql)) {
       echo  '<span',
             (isset($couleurs[++$i]) ? ' class="'.$couleurs[$i].'"' : null),
             '>',
             (isset($ordre[$i]) ? $ordre[$i] . ' ': null),
             $resultat['nom'],
             '</span>';
    }
    ?>
    Voici les lignes créées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <span class="bgRouge">Le meilleur texte</span>
    <span class="bgNoir">Le moyen texte</span>
    <span class="bgBleu">Le pire texte</span>
    <span>texte</span>

  12. #12
    Membre confirmé
    Inscrit en
    Mai 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 63
    Par défaut
    super ça marche nickel !
    J'ai appris une chose, grâce à toi, qui me servira pour pleins de trucs à l'avenir, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. envoyer un mail avec mon programme
    Par shrek dans le forum C++Builder
    Réponses: 8
    Dernier message: 06/12/2006, 13h27
  2. Problème avec Do while rs.EOF
    Par lauraned dans le forum ASP
    Réponses: 12
    Dernier message: 21/05/2004, 13h00
  3. Réponses: 13
    Dernier message: 26/04/2004, 20h32
  4. Problème avec mon firewall ...
    Par Wis dans le forum Tomcat et TomEE
    Réponses: 15
    Dernier message: 06/04/2004, 09h46
  5. galère avec my2pg.pl
    Par fafet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 16/07/2003, 11h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo