IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

select count retourne "Object id #x" [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut select count retourne "Object id #x"
    Bonjour,

    Je suis en train de programmer un petit script en PHP pour faire un forum très simple. J'ai deux tables MySQL à savoir topics et posts. A l'arrivée sur le forum je voudrais montrer les 'topics' et le nombre de 'posts' que chacun contiennent. Lorsque je veux compter les 'posts' avec select count le navigateur affiche Object id #x au lieu du nombre de posts comptés.

    Voici le fragment de code en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    	$display_block = "<table cellpadding=3 cellspacing=1 border=1>
    	<TR>
    	<TH> Topic title </TH>
    	<TH> # of posts </TH>
    	</TR>";
    	while($topic_info = mysqli_fetch_array($get_topics_res)){
    		$topic_id = $topic_info['topic_id'];
    		$topic_title = $topic_info['topic_title'];
    		$topic_time = $topic_info['topic_time'];
    		$topic_owner = $topic_info['topic_owner'];
     
    		$get_num_posts = "select count(post_id) from posts where topic_id=$topic_id";
    		$get_num_posts_res = mysqli_query($conn, $get_num_posts);
     
    		$display_block .= "
    		<TR>
    		<TD><a href = 'showtopic.php?topic_id = $topic_id'>
    		<STRONG> $topic_title </STRONG></A><BR>
    		CREATED on $topic_time by $topic_owner</TD>
    		<TD align = center> $get_num_posts_res </TD>
    		</TR>\n";}
    Merci d'avance pour votre aide!

    webrider

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Salut, deux questions pour que tu comprennes ton erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while($topic_info = mysqli_fetch_array($get_topics_res)){
    d'où viens $get_topics_res ?
    pourquoi utilises-tu mysqli_fetch_array ?


    quand tu auras la réponse à ces question bien en tête... jette un coup d'oeil à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $get_num_posts_res = mysqli_query($conn, $get_num_posts);
    $display_block .= "[...]$get_num_posts_res";
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour Swoög,

    Alors $get_topics_res contient les éléments de la table topics après un select et un query en PHP. J'utilise ensuite un fetch_array pour sortir chaque ligne sous forme de tableau à l'aide du while (fetch_array renvoie false quand il n'y a plus de ligne). J'obtiens donc un tableau avec le topic_id, topic_title, topic_time et topic_owner pour chaque ligne.
    Avec le topic_id je fais un select dans le tableau posts pour savoir combien d'entre eux ont le même topic_id :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $get_num_posts = "select count(post_id) from posts where topic_id=$topic_id";
    $get_num_posts_res = mysqli_query($conn, $get_num_posts);
    Je me pose cependant la question suivante : Que contient $get_num_posts_res ? Est-ce un entier reflétant le comptage? Si non, que dois-je faire pour l'obtenir?

    Merci.

    webrider

  4. #4
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    je vais reformuler ma première question comment obtiens-tu $get_topics_res ? quelle fonction te donne sa valeur... et quelle est sa valeur ?

    tu verras que ça répondra à ta propre question ^^
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  5. #5
    Invité
    Invité(e)
    Par défaut
    La fonction qui me permet d'obtenir $get_topics_res est un mysqli_query() qui me retourne un tableau de mes données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $get_topics = "select topic_id, topic_title, topic_time, topic_owner from topics order by topic_time desc";
    $get_topics_res = mysqli_query($conn, $get_topics) or die (mysqli_error($conn));
    Si je comprends bien, il s'agit du même type de donnée que $get_num_posts. Mais alors, comment obtenir la valeur du comptage?

  6. #6
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    de la même façont que tu le fait pour $get_topics_res

    si tu relis la doc, tu verras que mysqli_query ne renvoit pas le resultat en lui même, mais une ressource vers le resultat sur le serveur, c'est pour ça que tu as besoin de mysqli_fetch_array
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  7. #7
    Invité
    Invité(e)
    Par défaut
    Je m'en vais de ce pas relire ma doc et merci de m'avoir "décoincé"!

    Bon dimanche.

    webrider

  8. #8
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Je déplace vers PHP, merci de poster dans le forum du langage de programmation à moins d'être sûr que le problème vient du moteur MySQL.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Retourner un object suite à une requête select
    Par [R]Viper dans le forum Accès aux données
    Réponses: 1
    Dernier message: 06/04/2012, 08h46
  2. [MySQL] Select Count retourne un bool à false ?
    Par old_pierre dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/01/2012, 09h34
  3. onmouseover=&quot;Menu_HoverStatic(this)&quot; object expected
    Par cyrano_de_bergerac dans le forum ASP.NET
    Réponses: 0
    Dernier message: 01/10/2010, 16h01
  4. [Java][debutant]select count(*) ne retourne rien !!
    Par Invité dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/01/2007, 11h39
  5. Select et insert avec des caracteres speciaux (quote ')
    Par Paco75 dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/10/2006, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo