Requete SQL complexe et problème de tableau

Eléphant du PHP | 61 Messages

03 févr. 2007, 12:56

Bonjour à tous je suis actuellement en train de réaliser un site avec des jeux ou les membre en s'inscrivant peuvent etre les filleuls d'autre membre.
Je cherche ainsi a afficher les 2 derniers filleuls inscrit --> leur date d'inscription et leur pseudo.
J'ai deux tables:
_membre_info --> idmembre ,idparrain
_membre_profils--> idmembre,date_inscription

Ainsi je n'arrive pas a faire ma requete suivante:
"choisir idmembre et pseudo ou idparrain=idmembre dans membre_info et avec cette idmembre on recupere date_inscription dans membre_profils"

Voilà mon code:
$req=mysql_query('SELECT idmembre FROM membre_info WHERE idparrain=\''.$_SESSION['idmembre'].'\'') or die(mysql_error());
$sql='SELECT i.login, p.date_inscription 
			FROM membre_info AS i ,membre_profils AS p 
			WHERE p.idmembre='.$req.' ORDER BY date_inscription DESC LIMIT 0,3 AND i.idmembre='.$req.'';
$req=mysql_query($sql) or die(mysql_error());
Et l'erreur que j'ai:
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 'id #4 ORDER BY date_inscription DESC LIMIT 0,3 AND i.idmembre=R
Merci d'avance !

Mammouth du PHP | 19672 Messages

03 févr. 2007, 12:59

Normal : ta variable $req est une ressource, pas un résultat. Entre ton $req = mysql_query(etc...) et la seconde requête, il faut récupérer la valeur reqournée.

Autre option : ne faire qu'une seule requête avec une jointure. Fais des tests, c'est parfaitement possible et ce sera en outre plus rapide à exécuter.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 1961 Messages

03 févr. 2007, 13:00

Bonjour,

$req est une ressource, elle ne contient pas de valeurs directement exploitables.
Tu devras extraire idmembre de $req et utiliser idmembre à la place de req.

EDIT :
Grillé :twisted:
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

ViPHP
ViPHP | 1961 Messages

03 févr. 2007, 13:04

Re,

Je ne suis pas sur que même avec la correction de $req ta requête fonctionne.

La syntaxe LIMIT avant le AND me semble bizarre :?:
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 61 Messages

03 févr. 2007, 13:04

A oui oups je n'avais pas vu cependant je vais me tourner vers les jointure...
Je me redocumente car les jointures c'est aps très bien assimilés :lol:
Et je vous tient au courant en espérant que j'y arriver tout seul !

Eléphant du PHP | 61 Messages

03 févr. 2007, 13:37

En partant d'une requete avec jointure voilà ce que j'ai essayer de faire :
'SELECT i.idmembre,i.login,p.date_inscription 
			FROM membre_info i JOIN membre_profils p ON i.idmembre=p.idmembre ORDER BY p.date_inscription DESC LIMIT 0,3
			WHERE i.idmembre=???';
Mon problème est d'indiquer l'idmembre de chaque filleuls.
Je dois faire une requete pour cela du type :
SELECT idmembre FROM mebre_info WHERE idparrain=\''.$_SESSION['idmembre'].'\''
Mais je ne sais aps du tout comment faire pour l'intégrer... :cry: