Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/11/2011, 14h33   #1
Invité régulier
 
Inscription : mai 2011
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 49
Points : 7
Points : 7
Par défaut je galère avec mon while :(

Bonjour,

voici ma requête :

Code :
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 !
maxence64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 16h34   #2
Membre habitué
 
Avatar de rinuom99
 
Étudiant
Inscription : août 2007
Messages : 238
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2007
Messages : 238
Points : 125
Points : 125
Envoyer un message via MSN à rinuom99
mais sur quelle base tu veux les classer meilleur, moyen, moins bon !!!?
__________________
Si tu peux voir détruit l'ouvrage de ta vie.
Et sans dire un seul mot te mettre à rebâtir,
Tu seras un Homme, mon fils.
rinuom99 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/11/2011, 16h52   #3
Membre éclairé
 
Homme
Développeur Sharepoint/Biztalk
Inscription : octobre 2008
Messages : 501
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur Sharepoint/Biztalk

Informations forums :
Inscription : octobre 2008
Messages : 501
Points : 399
Points : 399
Dans ton résultat, tu les récupère toujours dans le bon ordre, du meilleur au moins bon ?

Une solution :
Code :
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
bob633 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 16h59   #4
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 793
Points : 35 793
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 17h00   #5
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Salut,

la bonne syntaxe c'est :

Code :
1
2
3
4
5
 
while( $resultat = mysql_fetch_array( $requete ) ) 
{
//le reste du code ici...
}
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 17h07   #6
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Salut,
et en plus concis il y a :
Code :
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'];
}
?>
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 14h31   #7
Invité régulier
 
Inscription : mai 2011
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 49
Points : 7
Points : 7
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
maxence64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 17h05   #8
Membre éclairé
 
Homme
Développeur Sharepoint/Biztalk
Inscription : octobre 2008
Messages : 501
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur Sharepoint/Biztalk

Informations forums :
Inscription : octobre 2008
Messages : 501
Points : 399
Points : 399
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
bob633 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 17h46   #9
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 793
Points : 35 793
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2011, 18h00   #10
Invité régulier
 
Inscription : mai 2011
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 49
Points : 7
Points : 7
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 :/
maxence64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2011, 18h36   #11
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
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 :
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 :
<span class="bgRouge">texte</span>
Dans le code suivant je mixé les deux : texte et css :
Code :
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 :
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>
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 15h06   #12
Invité régulier
 
Inscription : mai 2011
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 49
Points : 7
Points : 7
super ça marche nickel !
J'ai appris une chose, grâce à toi, qui me servira pour pleins de trucs à l'avenir, merci
maxence64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h42.


 
 
 
 
Partenaires

Hébergement Web