msi079
Messages postés212Date d'inscriptionlundi 2 août 2010StatutMembreDernière intervention25 juillet 2013
-
20 déc. 2012 à 19:16
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 2013
-
26 déc. 2012 à 17:39
salut je suis un tuto sur le net mais je bute sur une jointure de 3 tables . alors si quelqu'un pouvait m'aider .
voici l erreur qui s'affiche :
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\RESO_SOCIAL\functions\conversations.func.php on line 20.
INSERT INTO `conversations_membres` (`id_conversation`, `pseudo_dest`) VALUES
(2, 'isabelle'),
(3, 'isabelle'),
conversations_messages` (
`id_conversation` int(10) NOT NULL AUTO_INCREMENT,
`pseudo_exp` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`corps_message` text COLLATE utf8_unicode_ci NOT NULL,
`date_message` datetime NOT NULL,
PRIMARY KEY (`id_conversation`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=7 ;
INSERT INTO `conversations_messages` (`id_conversation`, `pseudo_exp`, `corps_message`, `date_message`) VALUES
(2, 'msi79', 'je veux te marier', '2012-12-19 21:29:32'),
(3, 'msi79', 'je vais te tracker a mort bb', '2012-12-20 09:01:40'),
utilisteurs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pseudo` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`password` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`sexe` varchar(12) COLLATE utf8_unicode_ci NOT NULL,
`situation` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`apropos` text COLLATE utf8_unicode_ci NOT NULL,
`avatar` varchar(150) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
INSERT INTO `utilisteurs` (`id`, `pseudo`, `password`, `email`, `sexe`, `situation`, `apropos`, `avatar`) VALUES
(1, 'msi79', '0a689fa3811f3d605d82943c32cf17cdd764b291', 'soulzana@yahoo.fr', 'Homme', 'C�libataire', 'suis superrrrrrrrrrrrrrr', 'Photo_00058.jpg'),
(2, 'isabelle', '4303f7fbc75763e3133bf7714fc90f02260848b5', 'isa@live.fr', 'Homme', 'C�libataire', 'c mois la plus belle', '20121126_122254.jpg'),
(3, 'sool', '0a689fa3811f3d605d82943c32cf17cdd764b291', 'sool@yahoo.fr', 'Homme', 'C�libataire', 'le plus puissant', 'jolie.jpg');
et voici ma code php
<?php
////la function qui va recuperer les conversations
function recup_conversation(){
$results = array();
$sql = mysql_query("
SELECT conversations.id_conversation,
conversations.sujet_conversation,
utilisteurs.pseudo,
utilisteurs.avatar,
conversations_messages.date_message,
conversations_messages.pseudo_exp
FROM conversations
LEFT JOIN conversations_messages ON conversations.id_conversation = conversations_messages.id_conversation
INNER JOIN conversations_messages ON conversations.id_conversation = conversations_messages.id_conversation
INNER JOIN utilisteurs ON utilisteurs.pseudo = conversations_messages.pseudo_exp
WHERE pseudo_exp = '{$_SESSION['pseudo']}'
GROUP BY conversations.id_conversation
ORDER BY conversations_messages.date_message
") or die(mysql_error());
while($row = mysql_fetch_assoc($sql)){
$results[] = $row;
}
return $results;
}
?>
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 21 déc. 2012 à 00:04
Salut,
Pourquoi faire un "LEFT JOIN conversations_messages" et un "INNER JOIN conversations_messages" à la fois ? Enlève donc la ligne avec le left join qui ne sert à rien. Soit dit en passant, je te recommande très fortement de ne surtout pas utiliser les fonctions mysql_*.
Comme l'a dit TychoBrahe, évite les fonctions comme mysql_connect etc et passe plutît par quelque chose de plus efficace et de plus puissance comme PDO qui permet de gérer de façon plus souple plusieurs types de BDD. Là, ti jamais tu venais à utiliser autre chose que MySQL, tu serais bon pour changer tout ton code.
Si on se tient uniquement à ton message d'erreur, c'est à cause du fait que mysql_query a échoué et a renvoyé une valeur entière en guise d'erreur (genre O ou 1). Du coup, ton mysql_fetch_assoc à un 0 ou un 1 en paramètre et il prend ça comme un booléen, d'où ton message d'erreur.
As-tu seulement pensé à tester ta requête SQL via la console de ta BDD pour voir si elle tournait bien ? J'en doute.
--
Pylouq Heureux sont ceux qui lisent le Réglement, ils ne finiront peut-être pas au bûcher.
je corrige mes fautes de frappe, désolé pour le double-post
Salut,
Comme l'a dit TychoBrahe, évite les fonctions comme mysql_connect et passe plutôt par quelque chose de plus efficace et de plus puissant comme PDO qui permet de gérer de façon plus souple plusieurs types de SBDD. Là, si jamais tu venais à utiliser autre chose que MySQL, tu serais bon pour changer tout ton code.
Si on s'en tient uniquement à ton message d'erreur, c'est à cause du fait que mysql_query a échoué et a renvoyé une valeur entière en guise d'erreur (genre 0 ou 1). Du coup, ton mysql_fetch_assoc a un 0 ou un 1 en paramètre et il prend ça comme un booléen, d'où ton message d'erreur.
As-tu seulement pensé à tester ta requête SQL via la console de ton SGBD pour voir si elle tournait bien ? J'en doute.
--
Pylouq Heureux sont ceux qui lisent le Réglement, ils ne finiront peut-être pas au bûcher.
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 26 déc. 2012 à 12:40
Salut,
Si on s'en tient uniquement à ton message d'erreur, c'est à cause du fait que mysql_query a échoué et a renvoyé une valeur entière en guise d'erreur (genre 0 ou 1). Du coup, ton mysql_fetch_assoc a un 0 ou un 1 en paramètre et il prend ça comme un booléen, d'où ton message d'erreur.
Pas des entiers non, des bool, donc true ou false. Après, oui, 0 casté en bool donne false, 1 casté en bool donne true et réciproquement. Mais ce n'est pas une raison pour confondre les deux puisqu'ils ne sont pas du même type.
Vous n’avez pas trouvé la réponse que vous recherchez ?
J'ai été voir dans la doc et je corrige ce que j'ai dis plus haut, j'ai confondu avec autre chose ^^" Du coup, msql_query renvoi en valeur booléenne FALSE quand y'a un problème (sinon ça renvoi une ressource). Autant pour moi ^^
--
Pylouq Heureux sont ceux qui lisent le Réglement, ils ne finiront peut-être pas au bûcher.