Position égale dans un tableau [PHP]
Résolu
                    
        
     
             
                    Aka13
    
        
    
                    Messages postés
            
                
     
             
            184
        
            
                                    Statut
            Membre
                    
                -
                                     
JooS Messages postés 2705 Statut Membre -
        JooS Messages postés 2705 Statut Membre -
        Bonjour,  
J'ai un tableau de score avec la position des personnes dans ce tableau
J'ai fait afficher le résultat avec dans l'ordre des scores des personnes.
Mon code pour le moment est celui-ci :
J'aimerais que quand 2 personnes on le même score, qu'ils soit avec la même position. Comme dans le tableau ci-dessous.
Cordiallement Aka13
                
            
                
    
    
    
        J'ai un tableau de score avec la position des personnes dans ce tableau
J'ai fait afficher le résultat avec dans l'ordre des scores des personnes.
.-------------------------------. ! Position ! Pseudo ! Score ! !-------------------------------! ! 1 ! aaaa ! 28 ! ! 2 ! dddd ! 19 ! ! 3 ! bbbb ! 14 ! ! 4 ! kkkk ! 14 ! ! 5 ! eeee ! 11 ! !-------------------------------!
Mon code pour le moment est celui-ci :
$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;
 while($row = mysql_fetch_array($select)) { 
 $pseudo = $row["pseudo"]; 
 $score = $row["score"]; 
 $position++;
 echo "<tr><td>$position</td><td>$pseudo</td><td>$score</td></tr>"; 
 } 
 echo "</table>"; 
J'aimerais que quand 2 personnes on le même score, qu'ils soit avec la même position. Comme dans le tableau ci-dessous.
.-------------------------------. ! Position ! Pseudo ! Score ! !-------------------------------! ! 1 ! aaaa ! 28 ! ! 2 ! dddd ! 19 ! ! 3 ! bbbb ! 14 ! ! 3 ! kkkk ! 14 ! ! 4 ! eeee ! 11 ! !-------------------------------!
Cordiallement Aka13
        A voir également:         
- Position égale dans un tableau [PHP]
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Position dans google - Guide
- Imprimer un tableau excel - Guide
5 réponses
                        
                            
                    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.
                        
                    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
    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>";
    
    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.
    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"];
    
                        
                    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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
                        
                    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
