Page 1 sur 1

Problème de requête ou de IF, je sais pas trop

Posté : 16 févr. 2009, 05:42
par auclairp
Voici le contexte, je me suis créer une Bdd avec la liste de mes DVD (table=description) et aussi une liste de gens à qui j'en prète (table=all_loan)

donc je fais lister mes DVD qui sont dans la table description, mais j'aimerais que dans ma liste qu'il soit possible de savoir si un DVD est déjà prêté ou non, donc joindre les deux liste.

Voici ce que j'ai fait:
$champs    = "description.code, description.nom, description.nomfr, description.genre, description.description, description.video, description.prix, description.HDDVD, all_loan.user, all_loan.date_prets, all_loan.date_retour";    

$nom_table =  "description LEFT JOIN all_loan ON description.code=all_loan.code";	
$groupby = 	"GROUP BY description.code";  

$result = mysql_query("SELECT ".$champs." FROM ".$nom_table." ".$groupby."  ORDER BY code");

<? 	   		
	while ($rows=mysql_fetch_array($result))
	{  
?>
BLABLABLA

Pour connaitre la disponibilité du film, j'ai tenter cela....
<? if ($rows['user']== TRUE && $rows['date_prets']== true && $rows['date_retour'] == "0")
										{ echo '<img src="images/no.png" border="0"> <br>Non Disponible all_loan</a><br>';
										  if ($niveau_dvd>=71) {?><font color="#660000" size="4"><? echo $rows['loanto'];?></font><?} else {}
										}
								else 	{ echo "Disponible";
										}
										
								?>
vous comprendrez que cela ne fonctionne pas. Pour ce qui est du $rows['date_retour'] le champ est 0 lorsque le film est sortie

J'ai essayer divers solution.... mais mes problème sont les suivants;

- Je dois regrouper puisque suite au LEFT JOIN les films se répète autant de fois qu'il y a eu de prêts du même DVD
- Je ne veux pas effacer l'enregistrement une fois que le film est retourner
- Le même code de DVD se répète à plusieurs reprises

Avez vous une solution !!!!

Posté : 16 févr. 2009, 09:33
par Albat90
Bonjours,
Serait-il possible que tu nous fasse part de ton MLD?

Et que tu marque à quoi correspondent les champs et leur valeurs pour telle situation.
De plus, il y a un truc qui m'échappe.
<? echo $rows['loanto'];?>
C'est quoi ce louanto? je ne le vois nul part dans ta requête :shock:

Albat90 ;)

Posté : 16 févr. 2009, 12:23
par auclairp
Tu as raison, LOANTO a pas sa place là dedans.... merci, pour le MLD c'est quoi au juste ???

Posté : 16 févr. 2009, 14:02
par zigz4g
MLD = Modèle logique des données
Ca represente tes tables dans ta base de donnees.

Posté : 16 févr. 2009, 17:16
par auclairp

Code : Tout sélectionner

-- -- Structure de la table `all_loan` -- CREATE TABLE `all_loan` ( `id` int(11) NOT NULL auto_increment, `code` text NOT NULL, `user` text NOT NULL, `date_prets` bigint(20) NOT NULL default '0', `date_retour` bigint(20) NOT NULL default '0', `usager_sortie` text NOT NULL, `usager_retour` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Liste de tous les films emprunter' AUTO_INCREMENT=513 ; -- -------------------------------------------------------- -- -- Structure de la table `description` -- CREATE TABLE `description` ( `id` int(11) NOT NULL auto_increment, `code` text NOT NULL, `nom` text NOT NULL, `nomfr` text NOT NULL, `genre` text NOT NULL, `description` text NOT NULL, `video` text NOT NULL, `acteur1` text NOT NULL, `acteur2` text NOT NULL, `acteur3` text NOT NULL, `sound` text NOT NULL, `original` text NOT NULL, `HDDVD` text NOT NULL, `prix` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=852 ; -- -------------------------------------------------------- -- Contenu de la table `all_loan` -- INSERT INTO `all_loan` VALUES (286, '000700', 'USER1', 1219586501, 1225651449, '', ''); INSERT INTO `all_loan` VALUES (287, '000728', 'USER1', 1219586543, 1234393092, '', ''); INSERT INTO `all_loan` VALUES (288, '000727', 'USER1', 1219586585, 1224358308, '', ''); INSERT INTO `all_loan` VALUES (289, '000727', 'USER2', 1220210989, 1224358308, '', ''); INSERT INTO `all_loan` VALUES (290, '000728', 'USER2', 1220210994, 0, '', ''); INSERT INTO `all_loan` VALUES (291, '000735', 'USER2', 1220210998, 0, '', ''); INSERT INTO `all_loan` VALUES (292, '000700', 'USER2', 1220211003, 0, '', ''); INSERT INTO `all_loan` VALUES (293, '000740', 'En Attente', 1221317989, 1221370412, '', ''); INSERT INTO `all_loan` VALUES (294, '000741', 'En Attente', 1221318066, 1221370415, '', ''); INSERT INTO `all_loan` VALUES (295, '000742', 'En Attente', 1221318104, 1221370419, '', ''); -- -- Contenu de la table `description` -- INSERT INTO `description` VALUES (675, '000647', 'Hannibal Rising', 'Hannibal Lecter: Les origines du mal', 'Horreur', 'BLABLA', 'VIDEO', 'Li Gong', 'Rhys Ifans', '', 'copier', 'dvd', 'non'); INSERT INTO `description` VALUES (679, '000648', 'Lethal Weapon 1', 'L''arme Fatale 1', 'Action', 'BLABLA', 'VIDEO', 'Mel Gibson', 'Danny Glover', 'Gary Busey', '', 'copier', 'dvd', 'non'); INSERT INTO `description` VALUES (680, '000649', 'Lethal Weapon 2', 'L''arme Fatale 2', 'Action', 'BLABLA', 'VIDEO', 'Mel Gibson', 'Danny Glover', 'Joe Pesci', '', 'copier', '', 'non'); INSERT INTO `description` VALUES (681, '000650', 'Lethal Weapon 3', 'L''arme Fatale 3', 'Action', 'BLABLA', 'VIDEO', 'Mel Gibson', 'Danny Glover', 'Joe Pesci', '', 'copier', 'dvd', 'non'); INSERT INTO `description` VALUES (682, '000651', 'Lethal Weapon 4', 'BLABLA', 'VIDEO', 'Mel Gibson', 'Danny Glover', 'Joe Pesci', '', 'copier', 'dvd', 'non');

Posté : 16 févr. 2009, 22:07
par Sethpolma
D'après ton modèle, il suffit simplement de voir si le DVD est prêté, à savoir s'li y a une date de retour, non ? S'il y en a une, c'est qu'il est chez toi. Sinon, c'est qu'il est chez l'un de tes amis. Ou alors je me fourvoie quelquepart (ce qui est tout à fait possible). :)[/code]

Posté : 16 févr. 2009, 23:51
par auclairp
oui exactement,

Amoins que je me trompe, le problème est que la requête est regroupé, c'est comme s'il y avait 2 requêtes dans la même.

une première qui défile tous les films (biensûre en regroupé car sinon avec le JOIN il répête chaques fois qu'il y a une entrée dans la table all_loan)

et deuxièmement, faire une recherche dans tous les all_loan avec critère (aucun retour) et le code représentant le bon film.


Je m'y comprend plus moi même.