Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 23/08/2006, 19h30   #1
Membre habitué
 
Avatar de Pahcixam
 
Étudiant
Inscription : avril 2006
Messages : 266
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 266
Points : 108
Points : 108
Par défaut [SQL] Requête complexe: syntaxe

Bonjour,

voilà je développe un jeu en php et mes connaissance en sql sont limitées.

Je voudrais donc faire une requête, je suppose de type JOIN UNION.

En fait j'ai deux tables:

EQUIPEMENT (id, nom)
USER_EQUIP (id_joueur, id_arme, type_arme)

alors dans la table equipement, la colum id correspond à id_arme dans la table user_equip.

Moi je voudrais réccuperer le nom des armes stockées dans "equipement" pour chaque id d'arme stockée dans la table user_equipe, et celà pour un seul id de joueur, toujours de cette table user_equip.

Et je sais vraiment pas comment faire.

J'espère avoir été intéligible.

Merci d'avance.
Pahcixam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2006, 20h35   #2
Membre régulier
 
Inscription : avril 2004
Messages : 114
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 114
Points : 83
Points : 83
SELECT EQUIPEMENT.NOM from EQUIPEMENT, USER_EQUIP
WHERE EQUIPEMENT.id = USER_EQUIP.id_arme


je n'ai jamais fais de MySQL donc je te donne une syntaxe non normalisé (je vais me faire tapper sur les doigts) mais qui toutefois devrai fonctionner
telynor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2006, 21h28   #3
Membre du Club
 
Avatar de liza83
 
Étudiant
Inscription : mai 2004
Messages : 52
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2004
Messages : 52
Points : 69
Points : 69
[QUOTE=Pahcixam]
Moi je voudrais réccuperer le nom des armes stockées dans "equipement" pour chaque id d'arme stockée dans la table user_equipe, et celà pour un seul id de joueur, toujours de cette table user_equip.
QUOTE]

petite précision : passes tu en paramètre l'id du joueur ?

Si c'est la cas tu peux faire une requète telle que

Code :
1
2
3
4
5
6
 
SELECT EQUIPEMENT.NOM,  USER_EQUIP.ID_JOUEUR
FROM EQUIPEMENT
 INNER JOIN USER_EQUIP
  ON EQUIPEMENT.ID= USER_EQUIP.ID_ARME
WHERE USER_EQUIP.ID_JOUEUR = 'parametre' ;
liza83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 11h45   #4
Membre habitué
 
Avatar de Pahcixam
 
Étudiant
Inscription : avril 2006
Messages : 266
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 266
Points : 108
Points : 108
Effectivement je passe en paramètre l'id du joueur. Je vais essayé la requête et je vous tient au courant car je n'ai pas tout à fait finit le script.
Pahcixam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 11h52   #5
Membre habitué
 
Avatar de Pahcixam
 
Étudiant
Inscription : avril 2006
Messages : 266
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 266
Points : 108
Points : 108
Bon j'ai testé avec cette requête:

Code :
1
2
3
4
$sql = 'SELECT EQUIPEMENT.NOM, USER_EQUIP.ID_JOUEUR FROM 
EQUIPEMENT INNER JOIN USER_EQUIP ON EQUIPEMENT.ID= 
USER_EQUIP.ID_ARME WHERE USER_EQUIP.ID_JOUEUR 
="'.$_SESSION['id'].'"';
Je n'ai aucune erreur seulement, cette requête ne me retourne rien, seulement un array vide.

Pourtant dans ma table equipement j'ai une arme avec l'id 1, et dans la table d'equipement du joueur j'ai une arme de type id 1, donc il devrait me retourné le nom de cette dernière qui est stockée dans EQUIPEMENT non ?

Je sais pas trop comment y expliquer. En tout cas merci de m'avoir répondu, mais là je sais pas trop quoi faire.
Pahcixam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 11h59   #6
Membre habitué
 
Avatar de Pahcixam
 
Étudiant
Inscription : avril 2006
Messages : 266
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 266
Points : 108
Points : 108
L'erreur vient peut-être de moi alors,

je sais bien qu'ici c'est sql mais voilà, je traitre ma requête comme ceci et j'obtient cette Notice:

Code :
[Thu Aug 24 11:57:31 2006] [error] [client 127.0.0.1] PHP Notice:  Undefined index:  EQUIPEMENT.NOM in C:\\www\\medievalheros\\beta2\\equipement.php on line 24, referer: http://127.0.0.1/beta2/play.php?page=equipement
Et voici le code:
Code :
1
2
3
4
5
6
	$sql = 'SELECT EQUIPEMENT.NOM from EQUIPEMENT, USER_EQUIP
	WHERE EQUIPEMENT.id = USER_EQUIP.id_arme';
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
	$data = mysql_fetch_array($req);
 
	echo 'nom :'.$data['EQUIPEMENT.NOM'];
Comment je fait pour réccuperer le nom dans une requête comme celle-ci ? Et ceci dans les deux requêtes.
Pahcixam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 12h13   #7
Membre régulier
 
Inscription : avril 2004
Messages : 114
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 114
Points : 83
Points : 83
n'ayant jamais fais de php, j ai du mal a comprendre.

Toutefois

Code :
1
2
3
4
$sql = 'SELECT EQUIPEMENT.NOM, USER_EQUIP.ID_JOUEUR FROM 
EQUIPEMENT INNER JOIN USER_EQUIP ON EQUIPEMENT.ID= 
USER_EQUIP.ID_ARME WHERE USER_EQUIP.ID_JOUEUR 
="'.$_SESSION['id'].'"';
le session[] c'est un tableau ?

si oui alors tu ne peux pas faire comme ca.

Il faut executer ta requete autant de fois que tu a de joueur dans ton tableau.

Si ca n'est pas un tableau mais juste un identifiant, colle ta requete telle qu'elle est exécutée stp
telynor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 12h59   #8
Membre habitué
 
Avatar de Pahcixam
 
Étudiant
Inscription : avril 2006
Messages : 266
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 266
Points : 108
Points : 108
Non, en fait c'est juste des paramètre extraits d'une BDD est stocké dans un fichier de sessions. Dans le cas de ma requête, l'id est un chiffre.

Voici la requête telle qu'elle est exécutée:

Code :
1
2
3
SELECT EQUIPEMENT.NOM, USER_EQUIP.ID_JOUEUR FROM EQUIPEMENT
 INNER JOIN USER_EQUIP ON EQUIPEMENT.ID= USER_EQUIP.ID_ARME WHERE 
USER_EQUIP.ID_JOUEUR ="1"
Pahcixam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 13h31   #9
Membre régulier
 
Inscription : avril 2004
Messages : 114
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 114
Points : 83
Points : 83
1 est un entier et non une chaine, donc il ne faut pas mettre de guillemet
telynor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 16h42   #10
Membre habitué
 
Avatar de Pahcixam
 
Étudiant
Inscription : avril 2006
Messages : 266
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 266
Points : 108
Points : 108
J'ai fait la modif, mais je n'ai toujours pas de résultat affiché car ça me retourne:

Code :
[Thu Aug 24 16:41:14 2006] [error] [client 127.0.0.1] PHP Notice:  Undefined index:  EQUIPEMENT.NOM in C:\\www\\medievalheros\\beta2\\equipement.php on line 17, referer: http://127.0.0.1/beta2/play.php

et si je remplace par nom tout cours c'est pareil, que dois-je mettre ?
Pahcixam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 17h20   #11
Membre Expert
 
Inscription : mars 2005
Messages : 1 565
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2005
Messages : 1 565
Points : 2 178
Points : 2 178
Utilise print_r(ton_array) pour débugger quand tu travailles avec des arrays sous php. Ca fait longtemps que j'ai pas touché à php mais je suis sûr que ton erreur vient du fait quand l'array il n'y pas la clé que tu mentionnes dans ton echo.
vmolines est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 17h47   #12
Membre habitué
 
Avatar de Pahcixam
 
Étudiant
Inscription : avril 2006
Messages : 266
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 266
Points : 108
Points : 108
Donc voilà j'ai fait ce que tu m'a dit et les réponse que j'attende sont belle et bien là:

Code :
Array ( [0] => Dague courte [NOM] => Dague courte [1] => 1 [ID_JOUEUR] => 1 )
Alors pourquoi il me l'affiche pas quand je fait echo $data['nom']; ????
Pahcixam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 17h48   #13
Membre habitué
 
Avatar de Pahcixam
 
Étudiant
Inscription : avril 2006
Messages : 266
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 266
Points : 108
Points : 108
Bon je retire ce que je viens de dire, ça marcje maintenant. Allez savoir ce qui allait pas ...
Pahcixam 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 21h48.


 
 
 
 
Partenaires

Hébergement Web