Petite question de triage php ou mysql... [Réglé] - Forums de discussion

Navigation

Accueil du forum » Base de données » Petite question de triage php ou mysql... [Réglé]


Le sujet

titbodPetite question de triage php ou mysql... [Réglé]
Par titbod, le Jeudi 03/05/2007 à 18h12'52
71 messages
Bonjour à tous, je vous expose mon problème, voici une requête sql qui, elle, fonctionne. Le petit problème se trouve juste après...

$table = mysql_query('SELECT DISTINCT (vainqueur) FROM historique WHERE evenement="'.$type.'"');
while($master = mysql_fetch_array($table))
{
$table2 = mysql_query('SELECT COUNT(*) AS nombre_vic FROM historique WHERE vainqueur="'.$master['vainqueur'].'"');
$master2 = mysql_fetch_array($table2);
echo ''.$master['vainqueur'].' - '.$master2['nombre_vic'].' victoire(s)<br />';
}

Ce qui nous donne en affichage sur une page php :

Jean-Claude - 2 victoires(s)
Victor - 3 victoire(s)
Robert - 1 victoire(s)
René - 1 victoires(s)
Hugues - 5 victoire(s)
Amédé - 4 victoire(s)

Mais y'aurais t'il un moyen de les trier en même temps que les afficher ???

Merci de vos réponses !!! TITBOD

________________
www.titbod.com - portfolio de Titbod

Les réponses

titbodPar titbod, le Jeudi 03/05/2007 à 18h14'02
71 messages
Excusez-moi, j'avais oublier... je reformule ma question :
Y'aurais t'il un moyen de les trier PAR VICTOIRES en même temps que les afficher ???

Merci !

________________
www.titbod.com - portfolio de Titbod

xersesPar xerses, le Jeudi 03/05/2007 à 18h41'49
675 messages
Bien sur que c'est possible

il suffit de rajouter un petit truc dans ta requête :

mysql_query('SELECT DISTINCT (vainqueur) FROM historique WHERE evenement="'.$type.'" ORDER BY `nombre_vic` DESC ');

Ca devrait tourner comme ça, essaie.

[Message édité par xerses le 03/05/2007 à 18h42'17]

________________
Anything that can go wrong will go wrong (Murphy)
Statut: Modérateur

titbodPar titbod, le Jeudi 03/05/2007 à 18h50'23
71 messages
Et non... j'avais déjà essayé, mais ça ne fonctionne pas. Je pense que ça ne marche pas parce que comme le "nombre_vic" s'obtient dans la requête "table2", il ne peux donc pas être disponible AVANT sa création...

________________
www.titbod.com - portfolio de Titbod

xersesPar xerses, le Jeudi 03/05/2007 à 21h03'56
675 messages
Déjà faire une requête dans un while, je pense pas que ce soit très propre. Je ne vois pas très bien à quoi il te sert d'ailleurs.

Essaie ça :

$table = mysql_query("SELECT * FROM historique WHERE evenement='".$type."' ORDER BY 
`nombre_vic` DESC");

while($master = mysql_fetch_array($table)){
        echo $master['vainqueur']." - ".$master2['nombre_vic']." victoire(s)";
}

________________
Anything that can go wrong will go wrong (Murphy)
Statut: Modérateur

titbodPar titbod, le Vendredi 04/05/2007 à 11h58'15
71 messages
une requête dans un while, ça me sert à calculer chaque victoire pour chaque joueur. Si je n'ai pas le nom des joueurs obtenus dans SELECT DISTINCT (vainqueur), je ne peux pas non plus avoir le nombre de victoires. Si je fais comme tu dis, php me metterai une victoire pour chacun :
Victor - 1 victoire(s)
Victor - 1 victoire(s)
Victor - 1 victoire(s)
...

à la place de :
Victor - 3 victoires(s)
...
Tu vois ce que je veux dire ?

Tu peux regarder ça aussi pour (peut-etre) essayer d'y voir plus clair (mais ne va pas sur les autres pages, rien n'es terminé :
http://www.alpf.net/essai/resultats.php puis sélectionne "Masters Afebas Masculin" au milieu de la page...

[Message édité par titbod le 04/05/2007 à 12h03'37]

________________
www.titbod.com - portfolio de Titbod

xersesPar xerses, le Vendredi 04/05/2007 à 16h42'44
675 messages
AHHHH je viens de comprendre.
Dans ce cas là, faut passer par un tableau dans lequel tu rentres tes données et que tu tries ensuite par victoires.

Essaie ça :

$table = mysql_query('SELECT DISTINCT (vainqueur) FROM historique WHERE evenement="'.$type.'"');

$tableau = array();
$i=0;

function compare($a, $b){
    return strcmp($a["victoires"], $b["victoires"]);
}


while($master = mysql_fetch_array($table)){

   $table2 = mysql_query('SELECT COUNT(*) AS nombre_vic FROM historique WHERE vainqueur="'.$master['vainqueur'].'"');
   $master2 = mysql_fetch_array($table2);
   $tableau[$i]["vainqueur"] =$master['vainqueur'];
   $tableau[$i]["victoires"] = $master2['nombre_vic'];
   $i++;
}

usort($tableau, "compare");

while (list ($key, $value) = each ($tableau)) {
    echo $value["vainqueur"]."-".$value["victoires"]." \n";
}


A tester, je me suis servi de quelques trucs trouvés sur d'autres sites, donc je promets rien, mais dans l'idée c'est par là qu'il faut passer je pense.
Bonne chance.

[Message édité par xerses le 04/05/2007 à 16h43'45]

________________
Anything that can go wrong will go wrong (Murphy)
Statut: Modérateur

titbodPar titbod, le Vendredi 04/05/2007 à 18h14'02
71 messages
Yes !!! bien joué Xerses !!! Mais le copier-coller c'est bien... ce que j'aimerais, c'est aussi comprendre. Alors si un jour tu as le temps...

Voici mon codage réel :
$tablemaster = mysql_query('SELECT DISTINCT (vainqueur) FROM historique WHERE vainqueur!="En juin prochain à Gien..." AND vainqueur!="Non existant cette année là" AND vainqueur!="Non communiqué" AND evenement="'.$type.'"');

$tableau = array();
$i=0;

function compare($a, $b)
{
return strcmp($a['victoires'], $b['victoires']);
}

while($master = mysql_fetch_array($tablemaster))
{
$tablemastervic = mysql_query('SELECT COUNT(*) AS nombre_vic FROM historique WHERE vainqueur="'.$master['vainqueur'].'"');
$mastervic = mysql_fetch_array($tablemastervic);
$tableau[$i]['vainqueur'] = $master['vainqueur'];
$tableau[$i]['victoires'] = $mastervic['nombre_vic'];
$i++;
}

usort($tableau, "compare");

while (list ($key, $value) = each ($tableau))
{
echo ''.$value['vainqueur'].' - '.$value['victoires'].' victoire(s)';
}


Ce que je ne pige pas, c'est
function compare($a, $b)
{
return strcmp($a['victoires'], $b['victoires']);
}

et
usort($tableau, "compare");
list ($key, $value) = each ($tableau)"


Le reste, je m'y retrouve. Parce que ce que j'aimerais, c'est que celui qui as le plus de victoires apparaisse en tête de la liste. Et ça, j'aimerais le faire tout seul en fonction de tes explications...
Merci encore Xerses !!!

[Message édité par titbod le 04/05/2007 à 18h17'03]

________________
www.titbod.com - portfolio de Titbod

1cyrilPar 1cyril, le Vendredi 04/05/2007 à 22h37'11
825 messages
Sujet clos ?

________________
Le Modérateur de Net-Pratique.
Statut: Modérateur

titbodPar titbod, le Samedi 05/05/2007 à 11h52'24
71 messages
Si Xerses ne me donne pas d'explications, oui. A moins que tu veuille m'expliquer ???

________________
www.titbod.com - portfolio de Titbod

1cyrilPar 1cyril, le Samedi 05/05/2007 à 12h35'31
825 messages
je crais fort de ne pouvoir pas d'aider car je débute en PHP.

________________
Le Modérateur de Net-Pratique.
Statut: Modérateur

Pages

Réponses les plus anciennes... 12 ...Réponses les plus récentes

A lire également

- Les conditions générales d'utilisation du site

Top-sites membres

Annuaire 1001 sites web.com : la crème du net | 1 pointsMéta Annuaire | -5 pointsAnnuaire gratuit des sites perso et blog | -7 pointsAnnuaire French Business | -9 points

Discussions récentes dans les forums

Sujet Forum
melanierecherche webmaster
Sujet posté par melanie le 03/12/2008 à 20h54'42
Le comptoir » Annonces
soulkatsConnaissez-vous LASCARS la série animée
Sujet posté par soulkats le 03/12/2008 à 17h43'31
Le comptoir » Le bar
raptorRe: Le jeu flash : Hélico
Réponse postée par raptor le 27/11/2008 à 20h39'51
Le comptoir » Le bar
tienoRe: IE 7 VS Firefox 2
Réponse postée par tieno le 26/11/2008 à 14h54'54
Internet » Autres sites à voir
tienoRe: Echange de liens
Réponse postée par tieno le 23/11/2008 à 13h55'24
Le comptoir » Echange de liens / Recherche de partenaires
touretEchange De Liens
Sujet posté par touret le 13/11/2008 à 08h58'09
Net-Pratique.fr » Suggestions
xersesRe: espace membres 1.2
Réponse postée par xerses le 09/11/2008 à 18h57'14
Développement » PHP
unitRe: Vous cherchez un travail simple sur Internet ?
Réponse postée par unit le 03/11/2008 à 15h53'53
Internet » Sites de ressources
froogyRe: Un ptit jeu
Réponse postée par froogy le 26/10/2008 à 16h40'03
Le comptoir » Le bar
rerRe: Sarbacane ou html ?
Réponse postée par rer le 23/10/2008 à 16h11'03
Développement » (X)HTML / CSS
Membres
Pseudo:
Pass: Mémoriser ?
Problème d'identificationInscription gratuite
Tribune libre
CNIL: 1098091
Connectés: 33