Position égale dans un tableau [PHP]
Résolu/Fermé
Aka13
Messages postés
153
Date d'inscription
jeudi 18 juin 2009
Statut
Membre
Dernière intervention
8 février 2016
-
14 avril 2011 à 20:00
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 16 avril 2011 à 15:49
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 16 avril 2011 à 15:49
A voir également:
- Position égale dans un tableau [PHP]
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Ma position - Guide
- Trier un tableau excel - Guide
5 réponses
Aka13
Messages postés
153
Date d'inscription
jeudi 18 juin 2009
Statut
Membre
Dernière intervention
8 février 2016
8
16 avril 2011 à 15:26
16 avril 2011 à 15:26
Pour ceux qui chercherais la réponse :
Merci à JooS pour le code.
while($row = mysql_fetch_array($select)) { $pseudo = $row["pseudo"]; //Si le nouveau score est inégale a l'ancien, alors on incrémente la position, sinon, on incrémente pas. if ($row["score"] != $score) $position++; //On mets le nouveau score dans la variable $score, même si ce dernier est égale au précédant. $score = $row["score"]; // On affiche le tout echo "<tr><td>$position</td><td>$pseudo</td><td>$score</td></tr>"; }
Merci à JooS pour le code.
a70m
Messages postés
2763
Date d'inscription
jeudi 21 mai 2009
Statut
Contributeur
Dernière intervention
2 février 2014
217
14 avril 2011 à 20:28
14 avril 2011 à 20:28
Salut,
Il faut que tu mettes ton $position++; dans une condition IF qui sera vérifiée ou non si le score est égal ou différent du précédent.
Cordialement
Il faut que tu mettes ton $position++; dans une condition IF qui sera vérifiée ou non si le score est égal ou différent du précédent.
Cordialement
Aka13
Messages postés
153
Date d'inscription
jeudi 18 juin 2009
Statut
Membre
Dernière intervention
8 février 2016
8
14 avril 2011 à 20:49
14 avril 2011 à 20:49
Ouai mais comment je fait sa ?
Il faudrais un truc du genre, mais je ne sais pas comment faire
if ($score_maintenant == $score_précédent) { $position++ = $position_précédente }
Il faudrais un truc du genre, mais je ne sais pas comment faire
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
Modifié par JooS le 14/04/2011 à 21:54
Modifié par JooS le 14/04/2011 à 21:54
Salut, essaye ça ...
$select = mysql_query('SELECT * FROM classement ORDER BY score DESC'); $total = mysql_num_rows($select); echo "<table>"; echo "<tr><td>Position</td><td>Pseudo</td><td>Score</td></tr>"; $position = 0; $score = ""; while($row = mysql_fetch_array($select)) { $pseudo = $row["pseudo"]; if ($row["score"] != $score) $position++; $score = $row["score"]; echo "<tr><td>$position</td><td>$pseudo</td><td>$score</td></tr>"; } echo "</table>";
Aka13
Messages postés
153
Date d'inscription
jeudi 18 juin 2009
Statut
Membre
Dernière intervention
8 février 2016
8
15 avril 2011 à 11:39
15 avril 2011 à 11:39
Tu a marqué :
C'est comme si je ferais :
Donc toi tu a fait, si il n'y a pas de score précédemment, sa le rajoute, et si il y en a déjà un sa ne le change pas.
Moi je ne veut que la POSITION augmente de uniquement quand le score précédent n'est pas le même que le suivant.
if ($row["score"] != $score) { $position++; $score = $row["score"]; }
C'est comme si je ferais :
$score = $row["score"]; if ($score != "") { $position++; $score = $score; }
Donc toi tu a fait, si il n'y a pas de score précédemment, sa le rajoute, et si il y en a déjà un sa ne le change pas.
Moi je ne veut que la POSITION augmente de uniquement quand le score précédent n'est pas le même que le suivant.
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
15 avril 2011 à 12:17
15 avril 2011 à 12:17
non, c'est pas ce que j'ai fait ..., j'ai ouvert aucune accolade ...
Donc c'est plutôt ça ...quand tu a une seule instruction dans le if, tu peut ne pas ouvrir d'accolade.
Donc si le score est différent de l'anciens score, alors on incrémente la positon,
Si c'est pas le cas, ça veut dire que le score est le même, alors on incrémente pas, et on affiche le score.
Donc c'est plutôt ça ...quand tu a une seule instruction dans le if, tu peut ne pas ouvrir d'accolade.
Donc si le score est différent de l'anciens score, alors on incrémente la positon,
Si c'est pas le cas, ça veut dire que le score est le même, alors on incrémente pas, et on affiche le score.
if ($row["score"] != $score) { $position++; } $score = $row["score"];
Aka13
Messages postés
153
Date d'inscription
jeudi 18 juin 2009
Statut
Membre
Dernière intervention
8 février 2016
8
Modifié par Aka13 le 15/04/2011 à 12:50
Modifié par Aka13 le 15/04/2011 à 12:50
En gros tu a donc fait :
Ce qui ne veut rien dire...
$score = $row["score"]; if ($score != "") { $position++; } "" = $score;
Ce qui ne veut rien dire...
a70m
Messages postés
2763
Date d'inscription
jeudi 21 mai 2009
Statut
Contributeur
Dernière intervention
2 février 2014
217
14 avril 2011 à 21:04
14 avril 2011 à 21:04
Essaye de jouer avec une deuxième variable qui s'auto-incrémente aussi, à chaque fois, que tu appelles $rang par exemple.
Et tu mets ton $position dans un if qui s'auto-incrémente en fonction de $rang
Et tu mets ton $position dans un if qui s'auto-incrémente en fonction de $rang
Aka13
Messages postés
153
Date d'inscription
jeudi 18 juin 2009
Statut
Membre
Dernière intervention
8 février 2016
8
15 avril 2011 à 11:39
15 avril 2011 à 11:39
Je n'ai pas compris ce que tu veut dire :s
a70m
Messages postés
2763
Date d'inscription
jeudi 21 mai 2009
Statut
Contributeur
Dernière intervention
2 février 2014
217
15 avril 2011 à 12:15
15 avril 2011 à 12:15
J'ai une piste, je te réponds de chez moi dans 30minutes :)
Cordialement
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
a70m
Messages postés
2763
Date d'inscription
jeudi 21 mai 2009
Statut
Contributeur
Dernière intervention
2 février 2014
217
15 avril 2011 à 13:08
15 avril 2011 à 13:08
Me voilà,
En réfléchissant à ton problème ce matin, j'ai pensé à une chose. Tu pourrais faire un requête qui vérifie pour chaque score s'il existe plusieurs fois dans la table.
Si c'est le cas, il n'incrémente pas.
Si tu as besoin du code, je pourrais te le faire en milieu d'après-midi.
Cordialement
En réfléchissant à ton problème ce matin, j'ai pensé à une chose. Tu pourrais faire un requête qui vérifie pour chaque score s'il existe plusieurs fois dans la table.
Si c'est le cas, il n'incrémente pas.
Si tu as besoin du code, je pourrais te le faire en milieu d'après-midi.
Cordialement
Aka13
Messages postés
153
Date d'inscription
jeudi 18 juin 2009
Statut
Membre
Dernière intervention
8 février 2016
8
16 avril 2011 à 15:24
16 avril 2011 à 15:24
Merci c'était ce que j'avais penser mais sa ne marchais pas donc Joos à trouvé :)
Merci quand même
Merci quand même