Recupere le nombre de reponses dans un forum

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Recupere le nombre de reponses dans un forum

par ouckileou » 16 oct. 2006, 21:28

Vu que tu ne récupères qu'une ligne et que tu sais dès le départ que tu n'en auras qu'une (car tu spécifies un identifiant de sujet, '2'), tu n'as pas besoin de la boucle, ni même du LIMIT :
<?php
//connexion
$connexion=mysql_connect('localhost','root','') or die ('erreur de connexion');
$ok=mysql_select_db("sessions",$connexion);
//requête
$sql = 'SELECT topic_replies FROM phpbb_topics WHERE topic_id=2';
//exécution de la requête
$req=mysql_query($sql);
//recuperation de la valeur
$data = mysql_fetch_assoc($req);
echo $data['topic_replies'];
?>
N'oublie pas de marquer le topic Résolu une fois que le problème est réglé

par pollux007 » 16 oct. 2006, 21:14

Merci c'est bon maintenant ça marche.

Voici mon code au final
<?php
//connexion
$connexion=mysql_connect('localhost','root','') or die ('erreur de connexion');
$ok=mysql_select_db("sessions",$connexion);
//requête
$sql = 'SELECT topic_replies FROM phpbb_topics WHERE topic_id=2 LIMIT 0, 30';
//exécution de la requête
$req=mysql_query($sql);
//recuperation de la valeur
while($data = mysql_fetch_assoc($req))
    {
    // on affiche les informations de l'enregistrement en cours
echo $data['topic_replies'];
    }
?>
En fait on fait une boucle pour recuperer la valeur a chaque changement et on affiche le resultat avec le nom de la colonne.

Bon et bien maintenant prochaine etape essayer de faire un formulaire pour pouvoir automatiser le lien vers le bon id du topic.

En tout ca merci de ton aide.

par ouckileou » 16 oct. 2006, 19:55

par pollux007 » 16 oct. 2006, 19:47

Oui je vois, mais par contre la je vois pas comment faire pour recuperer la valeur, je connais pas la fonction pour recuperer une valeur.

par ouckileou » 15 oct. 2006, 21:45

Pourtant quand j'execute ma requete dans SQL j'ai bien que la valeur concernée qui s'affiche
Oui, mais tu confonds la valeur renvoyée (qui est le nombre de réponses) et le nombre de lignes renvoyées par ta requête.

Si tu as 4 réponses, ta requête te renvoie 4. Mais ça ne représente qu'une ligne.

Donc toi tu dois récupérer la valeur, et pas le nombre de ligne. Et mysql_num_rows() te renvoie le nombre de lignes.

Tu comprends ton erreur ?

par pollux007 » 15 oct. 2006, 21:32

Pourtant quand j'execute ma requete dans SQL j'ai bien que la valeur concernée qui s'affiche

par ouckileou » 15 oct. 2006, 20:59

Oui c'est normal, tu utilises mysql_num_rows(), et ta requête ne renvoie qu'une ligne :roll:

par pollux007 » 15 oct. 2006, 20:54

C'est bizare dans sql la requete m'affiche bien la bonne valeur mais des que je passe dans php il m'afiche un resultat de 1

Voici mon code au final:
<?php
//connexion
$connexion=mysql_connect('localhost','root','') or die ('erreur de connexion');
$ok=mysql_select_db("sessions",$connexion);
//requête
$sql='SELECT topic_replies FROM phpbb_topics WHERE topic_id=2';
//exécution de la requête
$resultat=mysql_query($sql);
//recuperation de la valeur
$nb=mysql_num_rows($resultat);
echo "Laisser un commentaire ($nb réponses)";
?>
Et il m'affiche un resultat de 1 et pourtant la valeur dans la table est de 4.
[/code]

par ouckileou » 15 oct. 2006, 18:14

Oui mais du coup tu n'as pas besoin du COUNT(*)

Count(*) sert à compter le nombre delignes, j'avais dit ça en pensant compter les lignes de messages liées à un topic simplement. Mais là ut peux sélectionner directement la colonne donc :

Code : Tout sélectionner

SELECT topic_replies FROM phpbb_topics WHERE topic_id = 15

par pollux007 » 15 oct. 2006, 18:10

Si c'est un forum phpbb tu as directement la colonne "topic_replies" dans la table "phpbb_topics"
Oui je sais mais pour choisir la bonne ligne il faut bien utiliser la colonne topid_id non?

par ouckileou » 15 oct. 2006, 18:05

Si c'est un forum phpbb tu as directement la colonne "topic_replies" dans la table "phpbb_topics"

par pollux007 » 15 oct. 2006, 18:02

Voici mon code que je rentre dans phpmyadmin

Code : Tout sélectionner

SELECT COUNT(*) AS `topic_replies` FROM `phpbb_topics` WHERE `topic_id` = 2

par ouckileou » 15 oct. 2006, 18:00

On peut voir la requête ? On ne pourra pas te dire grand chose sur ce qui ne va pas sans savoir ce que tu fais...

par pollux007 » 15 oct. 2006, 17:46

Bon en fait je laissait un espace entre COUNT et le (*) donc c'est pour ca que j'avais une erreur. lol
Mais ensuite le résultat qui s'affiche n'est pas le bon, donc je me demande si le topic_id=2 est bon ou pas car dans la table j'ai 3 réponses et en effectuant la requete sql mon résultat est de 1.

par ouckileou » 15 oct. 2006, 17:41

Le problême est que avec le COUNT (*) j'ai un message d'erreur avec phpmyadmin.
Ou bien je tape une mauvaise requete
ça doit être ça oui ;)

Donc tu restes dans phpMyAdmin, on met au point cette requête sans s'occuper de PHP.

Tu nous donnes la requête que t'as essayée ? Pis le message d'erreur aussi tiens c'est utile parfois :P