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

FireHunter
Invité n'ayant pas de compte PHPfrance

28 avr. 2006, 18:03

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

Eléphant du PHP | 312 Messages

28 avr. 2006, 18:06

d'où sort le $news['id'] ?

Invité
Invité n'ayant pas de compte PHPfrance

28 avr. 2006, 18:08

le $news['id'] sort du fichier dans lequel est inclut le code que j'ai posté ;) j'ai testé ce fichier : il fonctionne parfaitement

Invité
Invité n'ayant pas de compte PHPfrance

28 avr. 2006, 18:11

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>

Eléphant du PHP | 312 Messages

28 avr. 2006, 18:14

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

Invité
Invité n'ayant pas de compte PHPfrance

28 avr. 2006, 18:18

ok juste le temps de me connecter à PhpMyAdmin ;)

FireHunter
Invité n'ayant pas de compte PHPfrance

28 avr. 2006, 18:23

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

Eléphant du PHP | 312 Messages

28 avr. 2006, 18:37

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.

Invité
Invité n'ayant pas de compte PHPfrance

28 avr. 2006, 18:38

erreur fatale XD : il y a un eneregsitremet dans la table ^^'

Eléphant du PHP | 312 Messages

28 avr. 2006, 18:41

Et pourtant MySQL n'a retourné aucun enregistrement quand tu lui envoies la requête en clair =)

Invité
Invité n'ayant pas de compte PHPfrance

28 avr. 2006, 18:42

si tu veux je te fais un screen =)

Invité
Invité n'ayant pas de compte PHPfrance

28 avr. 2006, 18:51

Image

Invité
Invité n'ayant pas de compte PHPfrance

28 avr. 2006, 18:52

bah tien mtn y en a un mdrrrr

FireHunter
Invité n'ayant pas de compte PHPfrance

28 avr. 2006, 18:56

Bref, le problème vient du script apparemment. . Mais où ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 avr. 2006, 19:03

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" :)