Page 1 sur 1

fonction asort

Posté : 14 janv. 2012, 13:08
par guidu02
Bonjour à tous, j'ai un code qui récupère tout les membres de ma base, qui leur donne un nombre de points aléatoire et qui affiche leurs points et leur id a la fin et j’aimerai les classé avec la fonction asort.
Voici le code:
<?php
$req = $connexion->query("SELECT * FROM membres");
while ($joueur = $req->fetch()){
    $point = mt_rand(0, 5);
    $points[] = $point;
    $place++;
    echo "Le membre ".$joueur['id_membre']." arrive ".$place." avec ".$point."<br>"; 
}
Merci d'avance :D

Re: fonction asort

Posté : 14 janv. 2012, 14:08
par Berzemus
D'accord.

Re: fonction asort

Posté : 14 janv. 2012, 19:14
par sirakawa
<?php
$req = $connexion->query("SELECT * FROM membres");
while ($joueur = $req->fetch()){
    $point = mt_rand(0, 5);
    $points[] = $point;
    $place++;
    echo "Le membre ".$joueur['id_membre']." arrive ".$place." avec ".$point."<br>"; 
}
Il me semble qu'un bon début serait de constituer un tableau dont les clefs sont les id des joueurs et les valeurs leurs points:
$resultats = array();
$req = $connexion->query("SELECT * FROM membres");
while ($joueur = $req->fetch()){
$id = $joueur ['id_membre'];
$point = mt_rand(0, 5);
$resultats[$id] = $point;
}
asort ($resultats);

Re: fonction asort

Posté : 14 janv. 2012, 19:41
par guidu02
Merci de ta réponse, le problème c'est que cela ne me sort que le premier membre (Celui avec le plus de points, or moi je veux tous les sortir)


Merci

Re: fonction asort

Posté : 14 janv. 2012, 19:52
par AB
A la suite du code ci-dessus (de sirakawa), écris
echo '<pre>';
print_r($resultats);
echo '</pre>';
Que donne le résultat ? Tu n'as qu'un seul élément dans ton tableau ?

Re: fonction asort

Posté : 14 janv. 2012, 20:01
par guidu02
Désoler je n'est pas réfléchis avant de poster, j'avais oublier le foreach :priere:

Maintenant comment attribuer chaque membre a son nombre de points car le je ne reçois que le nombre de points ?
Voici le code actuelle:
<?php
$resultats = array();
$req = $connexion->query("SELECT * FROM membres");
while ($joueur = $req->fetch()){
$id = $joueur ['id_membre'];
$point = mt_rand(0, 5);
$resultats[$id] = $point;
}
asort ($resultats);
foreach($resultats as $element)
{
    echo $element . '<br />'; 
}
 
Merci

Re: fonction asort

Posté : 14 janv. 2012, 20:11
par AB
<?php

foreach($resultats as $key => $element)
{
    echo $key. '<br />'; 
    echo $element . '<br />'; 
}
 

Re: fonction asort

Posté : 14 janv. 2012, 20:42
par guidu02
Merci !!!

Re: fonction asort

Posté : 15 janv. 2012, 21:06
par Gofromiel
Tu peux intégrer la fonction de randomisation dans ta requête SQL :

Code : Tout sélectionner

"SELECT *, RAND() AS `point` FROM membres"

Re: fonction asort

Posté : 16 janv. 2012, 01:29
par AB
Tu peux intégrer la fonction de randomisation dans ta requête SQL :

Code : Tout sélectionner

"SELECT *, RAND() AS `point` FROM membres"
On lui a déjà dit sur un autre forum :wink: mais il a répondu que ce n'était pas envisageable pratiquement...