Page 1 sur 2

Quand les variables $_GET n'en font qu'à leur tête ...

Posté : 28 avr. 2006, 18:03
par FireHunter
Bonjour à tous,

J'ai crée un systeme de news qui ma foi, marche très bien :D

Cependant le problème réside dans le fait que le systeme de commentaires est foireux.

Voci mon code ( c'est un fichier PHP inclus )
<?php

// On se connecte
mysql_connect("localhost", "user", "password");
mysql_select_db("database");

// On envoie la requête pour connaître le nombre de commentaires
$query_coms = mysql_query('SELECT * FROM news_commentaires WHERE id_news='.$news['id'].'');
$coms_nb = mysql_num_rows($query_coms);

// On envoie la requête pour savoir l'id
$query_id_coms = mysql_fetch_array($query_coms);

// On respecte le français ^^
if ($coms_nb = 1 )
{
	$pluriel_sing = "commentaire";
}
else
{
	$pluriel_sing = "commentaires";
}

// On affiche
echo '<a href="view_coms.php?idnews='.$query_id_coms['id'].'">Il y a '.$coms_nb.' '.$pluriel_sing.'</a>';
?>
Où est l'erreur et comment la corriger ?

Le script affiche bien la ligne echo à la fin du script, mais le lien est de ce type

Code : Tout sélectionner

http://pm2.network-hosting.com/v3/includes/news/view_coms.php?idnews=
Merci de votre aide ;)

Posté : 28 avr. 2006, 18:06
par Hermès
d'où sort le $news['id'] ?

Posté : 28 avr. 2006, 18:08
par Invité
le $news['id'] sort du fichier dans lequel est inclut le code que j'ai posté ;) j'ai testé ce fichier : il fonctionne parfaitement

Posté : 28 avr. 2006, 18:11
par Invité
Voici d'ailleurs ce code, si cela peut vous aider ;)

<fieldset><legend><strong>News</strong></legend>
<table style="border: 1px solid black; border-collapse: collapse;">
<?php
// On se connecte à MySQL
mysql_connect("localhost", "user", "password");
mysql_select_db("database");

// On envoie la requête
$ask = mysql_query("SELECT * FROM site_news ORDER BY id DESC LIMIT 0,10");

// On remets en ordre le joyeux bordel obtenu 
while ($news  =mysql_fetch_array($ask))
{ // On affiche
?>
<tr border="1px solid black"><td border="1px solid black">Par <strong><?php echo $news['pseudo']; ?></strong> le <i><?php echo date('d/m/Y à H\hi', $news['timestamp']); ?></i> :<br /><span style="border: 1px dashed black;">
<?php
// On enlève les antislash et on crée les <br /> 
$news['message'] = nl2br(stripslashes($news['message']));
// Et on affiche 
echo $news['message']; ?>
</span><br /><?php include ("coms_nb.php"); ?>
<?php
} // On ferme la boucle

// On se déconnecte
mysql_close();

/* ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| */
   //___________________________________________________________________________________\\
  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Fin du Script ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \\
 //______________________________________________________________________________________\\
 /* ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| */
 ?>
 </table>
</fieldset>

Posté : 28 avr. 2006, 18:14
par Hermès
Transformes la ligne
$query_coms = mysql_query('SELECT * FROM news_commentaires WHERE id_news='.$news['id'].'');
en deux lignes :
$req = 'SELECT * FROM news_commentaires WHERE id_news='.$news['id'];
$query_coms = mysql_query($req);
Fais un echo de $req pour avoir ta requete en clair et balance-la dans ton phpMyAdmin pour savoir ce qu'il te donne.
Dis-nous s'il te met une erreur ou bien s'il y a bien un résultat (possédant un id).

Posté : 28 avr. 2006, 18:18
par Invité
ok juste le temps de me connecter à PhpMyAdmin ;)

Posté : 28 avr. 2006, 18:23
par FireHunter
SELECT * FROM news_commentaires WHERE id_news=1
Voici ce que le echo affiche
MySQL n'a retourné aucun enregistrement. (traitement: 0.0004 sec.)
et voila ce que retourne PHPMyAdmin

Posté : 28 avr. 2006, 18:37
par Hermès
Ben voila, ta table news_commentaire n'a pas d'entrée pour l'id_news 1.

Donc le problème ne vient pas de ton code mais de ta table dans laquelle il manque des données.

Posté : 28 avr. 2006, 18:38
par Invité
erreur fatale XD : il y a un eneregsitremet dans la table ^^'

Posté : 28 avr. 2006, 18:41
par Hermès
Et pourtant MySQL n'a retourné aucun enregistrement quand tu lui envoies la requête en clair =)

Posté : 28 avr. 2006, 18:42
par Invité
si tu veux je te fais un screen =)

Posté : 28 avr. 2006, 18:51
par Invité
Image

Posté : 28 avr. 2006, 18:52
par Invité
bah tien mtn y en a un mdrrrr

Posté : 28 avr. 2006, 18:56
par FireHunter
Bref, le problème vient du script apparemment. . Mais où ?

Posté : 28 avr. 2006, 19:03
par Ryle
Les infos de connexion à la base sont ils corrects ? ajoute un "or die(mysql_error())" après le mysql query (au cas où il te dirait qu'il trouve pas la base, la table ou autre..)

Par ailleurs, pour le respect du français : ($coms_nb = 1 ) retournera toujours vrai, puisque tu affectes 1 à $coms_nb... pour comparer il faut utiliser 2 signes "égale" :)