Bien exploiter cette base !

Eléphant du PHP | 79 Messages

18 oct. 2012, 05:34

Bonsoir,

J'aurais besoin d'aide pour plusieurs choses, voici ma table :
lien si vous voyez pas tout : http://img15.hostingpics.net/pics/82596 ... 052449.jpg
Image

Premièrement je cherche à afficher le plus grand chiffre de la colonne "distance_traveled". Ensuite je cherche à afficher le 2em, puis le 3em (séparément pour les mettre en forme).

Je suis une bille en PHP, j'ai passé des heures à essayer des trucs (ne pas faire gaffe à "name", je gère pour ça je pense) :
    public function getMostDistancer() {
        $row = mysql_fetch_assoc(mysql_query('SELECT `uuid` name, COUNT(`distance_traveled`) count
                                                FROM players
						WHERE distance_traveled != -1
                                                GROUP BY `distance_traveled`
                                                ORDER BY count DESC'));
        return $row;
    }
Puis :
            <?php 
            $ar = $serverObj->getMostDistancer();
            echo $ar['count'];
        ?>
Mais il m'affiche "1"... Je ne sais pas d'où il sort ce chiffre.

Si vous pouviez m'aider, ça serait vraiment super !
Mon site dédié à Minecraft : http://www.orminecraft.com
Et celui dédié à ses serveurs multijoueur ;) http://www.serveurs-minecraft.net

ViPHP
ViPHP | 2577 Messages

18 oct. 2012, 09:11

Je peux pas voir la description de la table.

Il faut remplacer count par sum pour cumuler la valeur d'une colonne au lieu de compter le nombre de ligne.

Ensuite, il faut que tu trouves le critère pour cumuler, uuid` plutot que distance_traveled ?

Eléphant du PHP | 79 Messages

18 oct. 2012, 15:22

Super ça marche, merci !

Maintenant, comment afficher le 2em, puis le 3em plus gros résultat ?
Mon site dédié à Minecraft : http://www.orminecraft.com
Et celui dédié à ses serveurs multijoueur ;) http://www.serveurs-minecraft.net

ViPHP
ViPHP | 2577 Messages

18 oct. 2012, 16:15

En lisant les résultats dans une boucle au lieu de ne lire que le premier.

Eventuellement tu peux ajouter limit 3 (ou ce que tu veux) à la fin de la requete.

Eléphant du PHP | 79 Messages

18 oct. 2012, 16:30

Je fais comment pour la boucle ?
Mon site dédié à Minecraft : http://www.orminecraft.com
Et celui dédié à ses serveurs multijoueur ;) http://www.serveurs-minecraft.net

Eléphant du PHP | 343 Messages

18 oct. 2012, 17:15

Surement avec un while.
Quel est le nouveau code?
Développeur web

Eléphant du PHP | 79 Messages

18 oct. 2012, 17:34

Surement avec un while.
Quel est le nouveau code?
    public function getMostDistancer() {
        $row = mysql_fetch_assoc(mysql_query('SELECT `uuid` name, SUM(`distance_traveled`) count
                                                FROM players
						WHERE distance_traveled != -1
                                                GROUP BY `uuid`
                                                ORDER BY count DESC'));
        return $row;
    }
 <?php
            $ar = $serverObj->getMostDistancer();
            $player = $serverObj->getPlayer($ar['name']);
            if ($player) { 
            	        echo(STRING_ALL_DISTANCER); 
            	?>
            : </h2>
          <h3 class="ca-sub"> <a class="fort" href="?view=player&uuid=<?php echo($player->getUUID()); ?>"><?php echo($player->getName()); ?></a>
            <?php 
            	        echo $ar['count'];
            	    ?>
            <?php echo(STRING_ALL_DISTANCER_UNIT); ?>
            <?php } else echo(STRING_ALL_NONE); ?>
Mon site dédié à Minecraft : http://www.orminecraft.com
Et celui dédié à ses serveurs multijoueur ;) http://www.serveurs-minecraft.net

Eléphant du PHP | 79 Messages

19 oct. 2012, 15:10

Svp, j'aimerais savoir faire ça pour bosser cette nuit là dessus :D
Mon site dédié à Minecraft : http://www.orminecraft.com
Et celui dédié à ses serveurs multijoueur ;) http://www.serveurs-minecraft.net

ViPHP
ViPHP | 2577 Messages

19 oct. 2012, 15:54

    public function getMostDistancer() {
        $res = mysql_query('SELECT `uuid` name, SUM(`distance_traveled`) count
                                                FROM players
                                                WHERE distance_traveled != -1
                                                GROUP BY `uuid`
                                                ORDER BY count DESC
                                                LIMIT 3');
        wihle $row = mysql_fetch_assoc($res) {$rows[] = row;}
     
        return $rows;
    }
Et ensuite tu utilises $rows[0], $rows[1] et $rows[2]... (suivant la valeur de Limit 3 et le nombre de lignes disponibles)

Eléphant du PHP | 79 Messages

19 oct. 2012, 16:42

    public function getMostDistancer() {
        $res = mysql_query('SELECT `uuid` name, SUM(`distance_traveled`) count
                                                FROM players
                                                WHERE distance_traveled != -1
                                                GROUP BY `uuid`
                                                ORDER BY count DESC
                                                LIMIT 3');
        wihle $row = mysql_fetch_assoc($res) {$rows[] = row;}
     
        return $rows;
    }
Et ensuite tu utilises $rows[0], $rows[1] et $rows[2]... (suivant la valeur de Limit 3 et le nombre de lignes disponibles)
Un grand merciiii !! :)
Mon site dédié à Minecraft : http://www.orminecraft.com
Et celui dédié à ses serveurs multijoueur ;) http://www.serveurs-minecraft.net

Eléphant du PHP | 343 Messages

19 oct. 2012, 17:36

J'aurais plutôt fait
$rows[] = $row;
Et attention en testant, c'est while et non wihle ;)
Développeur web

Eléphant du PHP | 79 Messages

19 oct. 2012, 18:47

Effectivement il me fait une erreur :
Parse error: syntax error, unexpected T_VARIABLE, expecting

J'ai bien corrigé le while pourtant
Mon site dédié à Minecraft : http://www.orminecraft.com
Et celui dédié à ses serveurs multijoueur ;) http://www.serveurs-minecraft.net

Eléphant du PHP | 79 Messages

19 oct. 2012, 22:38

Y'aurait personne pour me dire le pourquoi de cette erreur (pour bosser cette nuit) ?
Mon site dédié à Minecraft : http://www.orminecraft.com
Et celui dédié à ses serveurs multijoueur ;) http://www.serveurs-minecraft.net

Eléphant du PHP | 343 Messages

20 oct. 2012, 02:19

Il faudrait le code pour voir ce que tu as fait.
Développeur web

Eléphant du PHP | 79 Messages

20 oct. 2012, 03:13

Code : Tout sélectionner

public function getMostDistancer() { $res = mysql_query('SELECT `uuid` name, SUM(`distance_traveled`) count FROM players WHERE distance_traveled != -1 GROUP BY `uuid` ORDER BY count DESC LIMIT 3'); while $row = mysql_fetch_assoc($res) {$rows[] = row;} return $rows; }
Déjà ce code fait une erreur.
Mon site dédié à Minecraft : http://www.orminecraft.com
Et celui dédié à ses serveurs multijoueur ;) http://www.serveurs-minecraft.net