PHP - associer informations de deux tables

Fermé
rom1g Messages postés 3 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 9 juin 2009 - 9 juin 2009 à 13:07
rom1g Messages postés 3 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 9 juin 2009 - 9 juin 2009 à 15:12
Bonjour,

Je me tourne vers vous pour résoudre un petit problème. J'ai un script qui gère nos parties de poker avec 3 tables une pour les joueurs, une pour les parties et une les résultats. La table "joueurs" est composée de 3 champs: ID, Nom, surnom. La table "résultats" a 3 champs: Nom, Partie_id, Points.
Ma table "resultat" ressemble à quelque chose comme ça:

Durand Pascal - 1 - 20
Dupont Jacques - 1 - 50
Durand Pascal - 2 - 30
Dupont Jacques - 2 - 15
Frère Jacques - 2 - 10

pour générer mon classement je fais ça:

$demande = mysql_query('SELECT nom, SUM(points) AS points FROM resultats GROUP BY nom ORDER BY points DESC LIMIT 0,10');


Pour l'instant ça ne pose pas de problème, ce classement est dans une partie membre privée. Ce que j'aimerai c'est pour une partie visible par tout le monde générer le même classement mais avec le surnom qui est associé au nom dans la table "joueurs" à la place du nom.
Si quelqu'un à un petite piste je suis preneur ;) Merci par avance.
A voir également:

4 réponses

ACervoise Messages postés 216 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 21 juin 2010 85
9 juin 2009 à 13:09
Pour cela il faut que le champ "nom" de ta table partie tu ne mettes pas le nom mais l'id de la personne. Comme tu tu va récupère le surnom associé à l'id.

Et puis c'est toujours mieux d'associer aux id car le jour ou tu auras deux personnes avec le même nom ça compliquera un peu les choses.

Suis je clair ?
0
rom1g Messages postés 3 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 9 juin 2009
9 juin 2009 à 13:36
Merci pour ta réponse. Au départ je l'avais fait avec le nom car les parties ne regroupent pas énormément de personne (une trentaine au maximum) donc ça ne pose pas réellement de problème et derrière ça facilite la requête pour gérer le classement.
Au cas où il y aurait une solution pour le gérer tel quel avant de passer à la modification du script ?
0
ACervoise Messages postés 216 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 21 juin 2010 85
9 juin 2009 à 13:43
Je n'ai pas bien compris ta question mais sinon tu veux un solution sans modifier les scripts pour les parties privés ? Si oui, ce que tu peux faire c'est pour tes parties publiques faire une requete du genre.

SELECT surnom FROM joueurs WHERE nom=$nom

ou $nom est le champ "nom" que tu as récupéré dans la table "résultats".

le soucis se posera le jour où tu auras deux joueurs avec le même nom, à mon avis tu devrais faire la modification tant que tu n'as pas beaucoup de personnes dans tes tables. Tu peux même faire un script qui remplace le nom par l'id dans ta table résultats ;-)
0
rom1g Messages postés 3 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 9 juin 2009
9 juin 2009 à 15:12
Ouais je vois ce que tu veux dire, mais dans mon cas je ne vois pas trop comment le mettre en place :(

$demande = mysql_query('SELECT nom, SUM(points) AS points FROM resultats GROUP BY nom ORDER BY points DESC LIMIT 0,10');
    $si = 0;
   while ($donnees = mysql_fetch_array($demande))
    {
    echo '<li class="bb">' . ++$i . '.&nbsp;' . $donnees['nom'] . '&nbsp;' . $donnees['points'] . 'pts</li><br />';
      }


Bon le code pour le petit module public n'est pas parfait, php ce n'est pas ma spécialité mais je me forme au fur et à mesure. Il faudrait que je puisse passer en variable dans la requête "SELECT surnom FROM joueurs WHERE nom=$nom" le .$donnees['nom']. j'ai essayé plusieurs chose mais ça ne fonctionne pas, je pense que je ne m'y prends pas bien...
0