[RESOLU] Pont de liaison entre 2 tables SQL

Eléphanteau du PHP | 28 Messages

09 mars 2016, 16:59

Bonjour à vous !

Je vous expose ici un nouveau problème qui me turlupine :(

j'aimerais créer un pont entre 2 tables SQL pour lier les valeurs..
Voici quelques screens :

Ici :
Mon tableau d'affichage.
Vous pouvez voir que j'affiche une ID et un nombre de points.
La selection des données se fait dans la table "users_stats" - Colonne "id" et "achievement_score"
Image

j'aimerais remplacer les ID par les pseudo des joueurs.
Image

Pseudos qui sont contenus dans la table "users" - Colonne "username
Image

Voici ma commande :

Code : Tout sélectionner

<?php $req = mysql_query("SELECT * FROM users_stats WHERE id ORDER BY achievement_score DESC LIMIT 5"); while($classement = mysql_fetch_array($req)){ ?> <div id='tab' style='font-size:15px'> <span class="room"> <span class="cost2"> <?php echo $classement['id'];?> </span> <span style='float:right'> <span class="users_maxon"> <?php echo $classement['achievement_score'];?> &nbsp;<img src="http://srv1.haweh.fr/images/habbo_diams_icon.png"> </span></span></span> </div> <?php } ?>
j'aimerais donc remplacer les ID par les pseudos contenus dans username.
Seul soucis, je ne trouve pas la commande sql adéquate ..
je pensais à :

Code : Tout sélectionner

$req = mysql_query("SELECT * FROM users_stats WHERE id=(SELECT * FROM users WHERE username) ORDER BY achievement_score DESC LIMIT 5");
Mais rien ... plus d'affichage ...

Si quelqu'un à la solution, je suis preneur !
Merci d'avance;

Nekk

Mammouth du PHP | 2703 Messages

09 mars 2016, 17:22

à adapter, n'ayant pas tous les noms des champs :
select users_stats.achievement_score, users.username from users_stats, users where users_stats.id=users_stats.id ORDER BY achievement_score DESC LIMIT 5

Eléphanteau du PHP | 28 Messages

09 mars 2016, 18:07

Salut Or 1 !

Voici ce que ta commande m'affiche !
Image
select users_stats.achievement_score, users.username from users_stats, users where users_stats.id=users_stats.id ORDER BY achievement_score DESC LIMIT 5
Ca m'affiche bien les achivement score mais toujours le même, le plus haut !
Et toujours pas de username en vue :/

Peut-être un soucis avec les echos
<?php echo $classement['id'];?>
<?php echo $classement['achievement_score'];?>

il faut que les remplacent aussi ?
Si oui, par quelle écriture ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

09 mars 2016, 19:09

Bonjour,

Mon conseil serait déjà que tu testes tes requêtes dans phpmyadmin pour voir si tu obtiens déjà les bonnes données, ou à défaut que tu modifies ta requête en conséquence.
Une fois cela fait, tu peux l'intégrer dans ton code PHP.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 28 Messages

09 mars 2016, 19:28

Justement ..

Code : Tout sélectionner

select users_stats.achievement_score, users.username from users_stats, users where users_stats.id=users_stats.id ORDER BY achievement_score DESC LIMIT 5
m'affiche :
Image

Et donc, le soucis c'est que le lien fonctionne mais il me donne la même valeur "achievement_score" pour tous le monde ...
Cette valeur étant la plus grande de la table.

Et je ne vois pas où est le problème sur la requête ?

Eléphanteau du PHP | 28 Messages

09 mars 2016, 19:31

Bha voilà, j'ai reussis xD

Voila la bonne requête :

Code : Tout sélectionner

select users_stats.achievement_score, users.username from users_stats, users where users_stats.id=users.id ORDER BY achievement_score DESC LIMIT 5
En faite, j'ai remplacé users_stats.id=users_stats.id par users_stats.id = users.id

Merci de votre aide, vous êtes au TOP :)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

09 mars 2016, 20:56

Parfait ! :)
On te laisse indiquer que le sujet est résolu en cochant la case dédiée tout en haut de cette page (sous le titre) ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 28 Messages

09 mars 2016, 21:18

Voilà !
A bientôt pour de futures problèmes :D