Recherche dans la bonne table

Eléphant du PHP | 333 Messages

25 juin 2007, 21:33

Voici mon code
// CRITÈRE DE LA REQUÊTE SQL
	$champs    = "description.code, description.nom, description.nomfr, description.genre, description.description, description.video, loan.loanto, loan.date_out, loan.attente, loan.retour";	
	$nom_table =  "loan RIGHT JOIN description ON description.code=loan.code";
	$where = "WHERE description.code LIKE '%".$keywords."%' OR description.nom LIKE '%".$keywords."%' OR description.nomfr LIKE '%".$keywords."%' "; 
Le problème est qu'il recherche dans les 2 tables, moi je voudrais seulement qu'il recherche dan sla table description et qu'il aille prendre quelques éléments dna sc'elle loan.

voyez vous l'erreur
Ce n'est pas toujours facile d'essayer, mais c'est toujours vallorisant lorsqu'on y arrive !!!

Apprenez, ne le faite pas faire par les autres.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

25 juin 2007, 22:38

Enlève le mot clé RIGHT et laisse seulement JOIN car RIGHT JOIN fait une jointure à droite qui ne sert à rien dans ton cas.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 333 Messages

27 juin 2007, 15:10

Non ca ne fonctionne pas, je sais vraiment plus quoi faire. Je reprend mon explication

Voici, j'ai une collection de DVD à la maison que je prète à des amis, donc j'ai 2 tables (description et loan)

Tous les DVD ont un code unique dans la table description, lorsque je prète un dvd, j'ajoute dan sma table loan le nom de la personne, la date de sortie et le code pour lier le DVD à la description. Lorsque le DVD est de retour, je ne l'efface pas, je met une date de retour.

Voici, lorsque je crée une page ou il est possible de consulter toutes les DVD d ema biblio, au bout on peux voir si le film est dispo ou non, sauf que là le hic est qu'il s'affiche le nombre de fois qu'il se retouve dans ma table loan, moi je voudrais qu'il y soit qu'une seule fois,

j'ai essayer en modifiant ma requête boff pas grand chose, avec une condition IF, là pas pire, j'ai dit SI sortie=TRUE et entree=TRUE tu affiche pas, ca c'est OK, mais là le trouble est qu'il ne l'affiche pas dutout même si le retour est fait, car bien sure les 2 champ son définit.

Avez vous d'autre solution
Ce n'est pas toujours facile d'essayer, mais c'est toujours vallorisant lorsqu'on y arrive !!!

Apprenez, ne le faite pas faire par les autres.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

27 juin 2007, 15:48

Je vais t'aider à trouver la solution.
En fait ce que tu veux c'est d'afficher simplement si disponible ou pas devant chaque DVD de la liste des DVD.

Pour celà effectivement il ne faut pas inclure dans la requête les données de la table "loan" car puisqu'un DVD peut être prêté plusieurs fois, il apparait plusieurs fois dans la table "loan" et en liant cette table à la table "description" ça retourne pour 0,N prêt 0,N mêmes informations d'un DVD.

La solution est simple:
tu ajoute un champ "disponible" dans la table "description" que tu mets à 1 au moment du retour et 0 au moment du prêt.
et puis tu extrait la liste des DVD à partir de la table "description" ainsi le champ "disponible" s'affichera pour chaque DVD
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Invité
Invité n'ayant pas de compte PHPfrance

27 juin 2007, 19:50

Merci je vais essayer cela
Je vais t'aider à trouver la solution.
En fait ce que tu veux c'est d'afficher simplement si disponible ou pas devant chaque DVD de la liste des DVD.

Pour celà effectivement il ne faut pas inclure dans la requête les données de la table "loan" car puisqu'un DVD peut être prêté plusieurs fois, il apparait plusieurs fois dans la table "loan" et en liant cette table à la table "description" ça retourne pour 0,N prêt 0,N mêmes informations d'un DVD.

La solution est simple:
tu ajoute un champ "disponible" dans la table "description" que tu mets à 1 au moment du retour et 0 au moment du prêt.
et puis tu extrait la liste des DVD à partir de la table "description" ainsi le champ "disponible" s'affichera pour chaque DVD