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

Eléphant du PHP | 333 Messages

16 févr. 2009, 05:42

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 !!!!
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.

Eléphant du PHP | 145 Messages

16 févr. 2009, 09:33

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 ;)
La culture, c'est comme la confiture, moins on en a, plus on l'étale.

Eléphant du PHP | 333 Messages

16 févr. 2009, 12:23

Tu as raison, LOANTO a pas sa place là dedans.... merci, pour le MLD c'est quoi au juste ???
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.

Mammouth du PHP | 684 Messages

16 févr. 2009, 14:02

MLD = Modèle logique des données
Ca represente tes tables dans ta base de donnees.
Zigz4g

Eléphant du PHP | 333 Messages

16 févr. 2009, 17:16

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');
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.

Petit nouveau ! | 6 Messages

16 févr. 2009, 22:07

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]
Sethpolma (Jonathan Petitcolas)

Eléphant du PHP | 333 Messages

16 févr. 2009, 23:51

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.
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.