fonction asort

Petit nouveau ! | 6 Messages

14 janv. 2012, 13:08

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

ViPHP
ViPHP | 4039 Messages

14 janv. 2012, 14:08

D'accord.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 2278 Messages

14 janv. 2012, 19:14

<?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);
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 6 Messages

14 janv. 2012, 19:41

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

ViPHP
AB
ViPHP | 5818 Messages

14 janv. 2012, 19:52

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 ?

Petit nouveau ! | 6 Messages

14 janv. 2012, 20:01

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

ViPHP
AB
ViPHP | 5818 Messages

14 janv. 2012, 20:11

<?php

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

Petit nouveau ! | 6 Messages

14 janv. 2012, 20:42

Merci !!!

Eléphant du PHP | 121 Messages

15 janv. 2012, 21:06

Tu peux intégrer la fonction de randomisation dans ta requête SQL :

Code : Tout sélectionner

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

ViPHP
AB
ViPHP | 5818 Messages

16 janv. 2012, 01:29

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...