2010-07-14 10 views
0

Je suis un peu novice en PHP et MySQL. Je crée mon propre blog pour le plaisir. Je dois afficher l'information que je voulais, mais ce que je veux faire, c'est compter le nombre de commentaires. J'ai fait 2 tables, la première table est l'article et l'autre est les commentaires. Je ne suis pas sûr de la façon de comprendre cela. Quelqu'un peut-il aider?2 sql dans un php while loop

$input_now1 = "SELECT blog_entries.id, blog_entries.posted, blog_entries.subject, blog_entries.quicktext 
    FROM blog_entries 
    ORDER BY blog_entries.posted DESC 
    LIMIT 0, 3;"; 

$result1 = mysql_query($input_now1); 

?> 
<div id="middle"> 

    <div id="box1"> 
    <?php 
     while($record1 = mysql_fetch_assoc($result1)) 
     { 
     ?> 
     <h2 style="padding-top:5px;"><?php echo $record1['subject']; ?></h2> 
     <div id="header1" style="position:relative;"></div> 
     <div id="maintext" style="position:relative;"> 
      <p><?php echo $record1['quicktext']; ?></p> 
      <a href="blog_articles.php?ID=<?php echo $record1["id"];?>">View Article - <?php echo date("D jS F Y g:iA",strtotime($record1["posted"]));?></a> 
     </div> 
     <div id="text_footer"></div> 
     <?php 
     } 
     mysql_free_result($result1); 
    ?> 
    </div> 
    <?php 
    include 'include/sidebar.php'; 
    ?>   

</div> 

Table1 blog_entries: id posté sujet corps QuickText

Table2 blog_comments: id blog_id posté Nom commentaire

Répondre

1

Nous avions besoin de connaître votre schéma de base de données pour être sûr, mais c'est probablement quelque chose comme ça ...

SELECT COUNT(comment.id) AS numcomments, 
    entry.id,entry.posted,entry.subject,entry.quicktext 
FROM `blog_comments` comment, `blog_entries` entry 
WHERE comment.blog_id=entry.id 
GROUP BY entry.posted, entry.subject, entry.quicktext 
+0

Tableau 1: blog_entries id posté sujet corps QuickText Tableau 2: blog_comments id blog_id posté Nom commentaire – blackbull77

+0

@ blackbull7: vous devriez le mettre dans la question initiale, dans un format plus lisible. J'ai mis à jour ma réponse pour qu'elle corresponde à votre schéma. – Borealid

+0

J'ai mis à jour la question. Comment est-ce que je peux l'enlever avec un peu de temps en php ou est-ce que j'utilise une autre fonction? – blackbull77

0

Je comprends ce que vous dites, peut-être que ce serait mieux si je fait cela a un exemple enter code here ....

$input_now1 = "SELECT blog_entries.id, blog_entries.posted, blog_entries.subject, blog_entries.quicktext 
     FROM blog_entries 
     ORDER BY blog_entries.posted DESC 
     LIMIT 0, 3;"; 

    $result1 = mysql_query($input_now1); 

    $input_now2 = "SELECT COUNT(blog_id) 
FROM blog_comments WHERE blog_id = 'blog_entries.id'"; 

    $result2 = mysql_query($input_now2); 
    $record2 = mysql_fetch_assoc($result2) 
    ?> 
    <div id="middle"> 

     <div id="box1"> 
     <?php 
      while($record1 = mysql_fetch_assoc($result1)) 
      { 
      ?> 
      <h2 style="padding-top:5px;"><?php echo $record1['subject']; ?></h2> 
      <div id="header1" style="position:relative;"></div> 
      <div id="maintext" style="position:relative;"> 
       <p><?php echo $record1['quicktext']; ?></p> 
       <p>Comments: (<?php echo $record2['blog_id']; ?></p> 
       <a href="blog_articles.php?ID=<?php echo $record1["id"];?>">View Article - <?php echo date("D jS F Y g:iA",strtotime($record1["posted"]));?></a> 
      </div> 
      <div id="text_footer"></div> 
      <?php 
      } 
      mysql_free_result($result1); 
     ?> 
     </div> 
     <?php 
     include 'include/sidebar.php'; 
     ?>   

    </div> 

Je suis désolé si je ne suis pas clair sur votre fin . J'essayais de comprendre cela depuis quelques jours et je ne sais pas si j'ai trop réfléchi.

1

Je voudrais juste ajouter quelque chose comme ceci n'importe où dans la limite de la boucle, sorte de déplacer votre code autour. Après le démarrage de la boucle, vous collecterez l'ID, vous pourrez alors lancer COUNT contre et faire écho au compte spécifique. Pas une boucle, il ne traitera pas à moins que la boucle a couru à nouveau ...

<?php  
    $input_now2 = "SELECT COUNT(blog_id) FROM blog_comments WHERE blog_id = 
'$result1[id]'"; 
    $comments_count = mysql_query($input_now2); 
    echo '<p>' . $comments_count . '</p>'; 
    ?> 

Vous pouvez mettre quelque chose de similaire comme ci-dessus ne importe où dans votre boucle pour result1 $ ....

espoir que j'ai compris ce que tu essayes de faire.