souci de requete

Eléphant du PHP | 299 Messages

02 mai 2010, 21:00

salut a tous!

voila, j' ai une petite enigme php qui , comme d 'habitude, doit être toute bête, mais je ne trouve pas.

J' ai un systeme de commentaires et je fais donc une jointures entre la table coms (commentaires) et users (membres)
			<?php
			
			$com2 = 'SELECT coms.id,coms.id_news,coms.auteur,coms.contenu,users.id,users.pseudo,users.avatar FROM coms LEFT OUTER JOIN users ON coms.auteur = users.pseudo WHERE coms.id_news='.$id.'';
			while ($com = mysql_fetch_assoc($com2))
			
			
			{
			?>
Vous l' avez compris, j' essaie de faire une boucle, mais je me retrouve avec l' erreur:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/buroware/www/includes/news/list_com.php on line 21

Plutot bizarre car je suis sur que ma requete est bien formulée, ma variable $id est plus que bien declarée, et si je vire la jointure ca marche tres bien sur la requetes "coms".

De plus dans phpmyadmin, si je teste:
SELECT coms.id,coms.id_news,coms.auteur,coms.contenu,users.id,users.pseudo,users.avatar FROM coms LEFT OUTER JOIN users ON coms.auteur = users.pseudo WHERE coms.id_news=2
Ca m' affiche bien mes deux tableaux joints (j' ai mis deux car je sais que c' est cette news qui contient mes tests sur les commentaires).

Quelqu' un aurait un debut d' explication sur une erreur eventuelle de ma part?

Merci d' avance de m' éclairer.

Eléphant du PHP | 451 Messages

02 mai 2010, 21:14

Et le mysql_query() il est où dans l'histoire?

Eléphant du PHP | 299 Messages

02 mai 2010, 21:20

erf oui, j' ai vu cette erreur juste avant votre message, voici le resultat:
			$com2 = 'SELECT coms.id,coms.id_news,coms.auteur,coms.contenu,users.id,users.pseudo,users.avatar FROM coms LEFT OUTER JOIN users ON coms.auteur = users.pseudo WHERE coms.id_news='.$id.'';
			$res = mysql_query($com2);
			$nb = mysql_fetch_assoc($res);
			while ($com = mysql_num_rows($nb))
			
			
			{
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/buroware/www/includes/news/list_com.php on line 23

Eléphant du PHP | 451 Messages

02 mai 2010, 21:56

Oui ta requête est fausse tu ne peut pas avoir le nombre de résultat avec mysql_fetch_assoc() et mysql_num_rows() ne sert pas dans une boucle.

Et tu ne pas te servir de $nb dans mysql_num_rows(), il faut te servir de $res

Eléphant du PHP | 299 Messages

02 mai 2010, 22:33

Heu je suis paumé la, alors comment je peux faire?

Eléphant du PHP | 451 Messages

02 mai 2010, 22:44

Il te suffit de faire comme ceci:
$sql = 'Ta requête SQL';

$req = mysql_query($sql);

$nb = mysql_num_rows($req);

while($data = mysql_fetch_assoc($req)) {
}

Eléphant du PHP | 299 Messages

02 mai 2010, 23:01

arf decidement, je venais poster ma solution qui (je n' ai pas bien vu) doit etre la tienne en fait :)

			<?php
			
			$req = 'SELECT coms.id,coms.id_news,coms.auteur AS cauteur,coms.contenu AS ccontenu,users.id,users.pseudo AS cpseudo,users.avatar AS cavatar FROM coms LEFT OUTER JOIN users ON coms.auteur = users.pseudo WHERE coms.id_news='.$id.'';
			$data = mysql_query($req);
			while($com5=mysql_fetch_array($data))


			
			
			{
			?>


Merci de ton aide quand meme :)