Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/11/2011, 12h28   #1
Futur Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 135
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 135
Points : 17
Points : 17
Par défaut Remplacement id par nom

Bonjour à tous !

Je reviens vous voir pour vous posez une petite question :

Je suis en train de créer un site de stats !

J'ai déjà tout le système pour que les données soit placés dans la base SQL, et j'ai créé un tableau avec les données joueurs : (les 10 premiers joueurs dans l'ordre)

Cette base contient 2 tables : alliances et players

Voici le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<html>
<head>
<title>GrepolisToolkit Utilities ALPHA</title>
 <meta charset="utf-8" />
  <link rel="stylesheet" href="http://staff.grepolistoolkit.fr.nf/style.css" />
  </head>
<body>
<p>
     <img src="http://staff.grepolistoolkit.fr.nf/images/banfin.png" />
</p>
 
<?
// information pour la connection à le DB
XXXX
 
// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
 
// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$select = 'SELECT id, name, alliance_id, points, rank, towns FROM players ORDER BY rank ASC limit 0,10';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
 
 
// si on a récupéré un résultat on l'affiche.
if($total) {
 
    // debut du tableau
    echo '<table bgcolor="#FFFFFF">'."\n";
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes
        echo '<tr>';
        echo '<td bgcolor="#669999"><b><u>Classement</u></b></td>' ;
        echo '<td bgcolor="#669999"><b><u>Pseudo</u></b></td>';
      echo '<td bgcolor="#669999"><b><u>Alliance</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Points</u></b></td>';
		echo '<td bgcolor="#669999"><b><u>Villes</u></b></td>';
      echo '</tr>'."\n";
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
    while($row = mysql_fetch_array($result)) {
        echo '<tr>';
        echo '<td bgcolor="#CCCCCC">'.$row["rank"].'</td>';
      echo '<td bgcolor="#CCCCCC">'.$row["name"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["alliance_id"].'</td>';
      echo '<td bgcolor="#CCCCCC">'.$row["points"].'</td>';
	  echo '<td bgcolor="#CCCCCC">'.$row["towns"].'</td>';
      echo '</tr>'."\n";
    }
    echo '</table>'."\n";
    // fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';
// on libère le résultat
mysql_free_result($result);
 
 
?>
</body>
</html>
Je voudrais en fait que l'id de l'alliance qui s'affiche dans mon tableau soit remplacé par son nom (contenu dans la table alliance) !

En gros, qu'il prenne en compte l'id, recherche dans la base alliance et l'affiche !!

Merci d'avance !!
MRJBGO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 14h02   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Utilise un jointure: http://dev.mysql.com/doc/refman/5.0/fr/join.html
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 14h10   #3
Membre habitué
 
Avatar de rinuom99
 
Étudiant
Inscription : août 2007
Messages : 238
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2007
Messages : 238
Points : 125
Points : 125
Envoyer un message via MSN à rinuom99
une simple jointure entre les deux tables fait l'affaire.
__________________
Si tu peux voir détruit l'ouvrage de ta vie.
Et sans dire un seul mot te mettre à rebâtir,
Tu seras un Homme, mon fils.
rinuom99 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 16h41   #4
Futur Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 135
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 135
Points : 17
Points : 17
Merci pour votre réponse ! Quelqu'un pourrait-t-il me donner un exemple dans mon cas ?
MRJBGO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 17h17   #5
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT p.id AS player_id, 
	p.name AS player_name, 
	a.id AS alliance_id, 
	a.name AS alliance_name
	p.points, 
	p.rank, 
	p.towns 
FROM players p
INNER JOIN alliance a ON a.id = p.alliance_id 
ORDER BY rank ASC 
LIMIT 0,10
Tu indentes ton code HTML et/ou PHP alors prend la bonne habitude d'indenter aussi tes requêtes, elles sont ainsi plus lisibles.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 17h33   #6
Futur Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 135
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 135
Points : 17
Points : 17
Sauf erreur de ma part, il me donne cette erreur là :

Citation:
Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'p.points, p.rank, p.towns FROM players p INNER JOIN alliance a ON a.id = p.' at line 5
MRJBGO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 17h36   #7
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Citation:
Envoyé par MRJBGO Voir le message
Sauf erreur de ma part, il me donne cette erreur là :
Il manque une virgule, tu aurais dû le remarquer:
Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT p.id AS player_id, 
	p.name AS player_name, 
	a.id AS alliance_id, 
	a.name AS alliance_name,
	p.points, 
	p.rank, 
	p.towns 
FROM players p
INNER JOIN alliance a ON (a.id = p.alliance_id)
ORDER BY rank ASC 
LIMIT 0,10
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 19h27   #8
Futur Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 135
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 135
Points : 17
Points : 17
Merci, je n'avais pas remarqué

après quelques modifications, sa marche !!

Code :
1
2
3
4
5
6
7
8
9
10
11
$select = 'SELECT p.id AS id, 
	p.name AS name, 
	a.id AS alliance_id, 
	a.alliance_name AS alliance_name,
	p.points, 
	p.rank, 
	p.towns 
FROM players p
INNER JOIN alliances a ON (a.id = p.alliance_id)
ORDER BY rank ASC 
LIMIT 0,10';
Par contre, comment faire pour mettre plusieurs FROM et INNER JOIN ?

je voudrais pour une autre page faire un truc comme ça :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$select = 'SELECT c.town_id AS town_id,
	c.time,
	p.name AS name,
	p.name AS new_player_id, 
	c.old_player_id,
	a.alliance_name AS alliance_name,
	a.id AS new_ally_id,
	c.old_ally_id, 
	c.town_points
FROM conquers c
FROM players p
INNER JOIN alliances a ON (a.id = c.alliance_id) 
INNER JOIN players p ON (p.id = c.player_id)
ORDER BY time ASC';
Mais y a une erreur ...


J'en profite pour vous posez une question encodage :

%C3%A9 = é
+ = espace

Quel bout de code pour changer tout ça ?
MRJBGO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 23h40   #9
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT c.town_id AS town_id,
	c.time,
	p.name AS name,
	p.name AS new_player_id, 
	c.old_player_id,
	a.alliance_name AS alliance_name,
	a.id AS new_ally_id,
	c.old_ally_id, 
	c.town_points
FROM conquers c
INNER JOIN players p ON p.id = c.player_id
INNER JOIN alliances a ON a.id = c.alliance_id 
ORDER BY time ASC
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2011, 16h41   #10
Membre du Club
 
Inscription : octobre 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 50
Points : 57
Points : 57
Citation:
Envoyé par MRJBGO Voir le message
J'en profite pour vous posez une question encodage :

%C3%A9 = é
+ = espace

Quel bout de code pour changer tout ça ?
C'est marqué là ou tu vas chercher tes données:

Citation:
Envoyé par Grepolis
Les fichiers sont disponibles au format .txt.gz au nombre de 11 au total. Chaque fichier consiste en un nombre arbitraire de lignes séparées par des virgules. Les données sont codées au format PHP urlencode(), ce qui signifie par exemple qu'une virgule est exprimée par %2C.
tu utilises donc urldecode() pour retranscrire.
KstorTroy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2011, 21h19   #11
Futur Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 135
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 135
Points : 17
Points : 17
Merci ! Je l'avais trouvé entre 2

Lle site avance ! Maintenant, faut que je trouve comment faire les pages perso ... avec les liens suivant l'id

En fait, que "une page modèle" affiche les infos selon l'id
MRJBGO est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h45.


 
 
 
 
Partenaires

Hébergement Web