Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ilość komentarzy...
Forum PHP.pl > Forum > Przedszkole
jarred_php
witam
napotkałem na problem w programowaniu (nie pierwszy) winksmiley.jpg

Chce wyswietlić ilosć komentarzy do kazdego newsa (mam 3 na stronie): przykład

Cytat
pierwszy news | komentarzy(1)
drugi news | komentarzy(2)
trzeci news | komentarzy(1)


Napisałem cos takiego:
Kod:
  1. <?php
  2. $id = $_GET['id'];
  3. // ile komentarzy w danym newsie
  4. $query2 = mysql_query("SELECT COUNT(id) FROM comments WHERE nr='$id'") or die (mysql_error());
  5. $ile_com = mysql_fetch_array($query2);
  6. print 'Komentarzy <b>['.$ile_com[0].']</b>
  7. ?>


po prostu chce wyswietlić na stronie do kazdego komentarza ilosć newsów... a ten kod co napisałem wyświetla je dobrze ale tylko z podanym id. tongue.gif

struktura tabel:
  1. --
  2. -- Struktura tabeli dla `news`
  3. --
  4.  
  5. CREATE TABLE `news` (
  6. `id` int(11) NOT NULL AUTO_INCREMENT,
  7. `title` varchar(50) NOT NULL DEFAULT '',
  8. `area` text NOT NULL,
  9. `autor` varchar(25) NOT NULL DEFAULT '',
  10. `data` varchar(14) NOT NULL DEFAULT '',
  11. `ip` text NOT NULL,
  12. PRIMARY KEY (`id`)
  13. ) TYPE=MyISAM;

  1. --
  2. -- Struktura tabeli dla `comments`
  3. --
  4.  
  5. CREATE TABLE `comments` (
  6. `id` int(11) NOT NULL AUTO_INCREMENT,
  7. `nr` varchar(5) NOT NULL DEFAULT '',
  8. `nick` varchar(25) NOT NULL DEFAULT '',
  9. `email` varchar(50) NOT NULL DEFAULT '',
  10. `text` varchar(255) NOT NULL DEFAULT '',
  11. `ip` varchar(15) NOT NULL DEFAULT '',
  12. `data` varchar(14) NOT NULL DEFAULT '',
  13. PRIMARY KEY (`id`)
  14. ) TYPE=MyISAM


pozdrawiam
aleksander
  1. SELECT news.*, COUNT(comments.id) AS ile_komentarzy
  2. FROM news LEFT JOIN comments ON news.id = comments.nr
sobstel
Cytat(aleksander @ 2005-12-26 11:08:38)
  1. SELECT news.*, COUNT(comments.id) AS ile_komentarzy
  2.  
  3. FROM news LEFT JOIN comments ON news.id = comments.nr

na koncu zapomniales chyba GROUP BY news.id ?
jarred_php
no działa winksmiley.jpg
  1. <?php
  2. $com = mysql_query("SELECT news.*, COUNT(comments.id) AS ile_komentarzy FROM news LEFT JOIN comments ON news.id = comments.nr GR
    OUP BY news.id DESC"
    ) or die (mysql_error());
  3. $row = mysql_fetch_array($com);
  4. ?>


tylko jeszcze jak to wrzucić do tabeli, żeby ładnie chodziło
  1. <?php
  2. while ($news = mysql_fetch_row($query))
  3. {
  4. print '<table align="center" width="400" border="0" rules="none" bgcolor="#004080">
  5. <tr><td align="center" width="5%"><img src="../news/img/news.gif"></td><td width="75%" class="title">'.$news[1]. '
  6. </td><td style="" width="20%" class="title" align="center">'.date('d/M/y', $news[4]).'</td></tr></table>';
  7. print '<table width="400" align="center"><TR><TD>' .$news[2]. '</TD></TR>';
  8. print '<TR HEIGHT="10"><TD></TD></TR>';
  9. print '<TR><TD>';
  10. print 'Napisał: <b>' .$news[3]. '</b>&nbsp;&nbsp;';
  11. print 'Adres IP: <b>' .$news[5]. '</b>&nbsp;&nbsp;';
  12. print '<a class="com" href="comments.php?id='.$news[0].'">Komenty</a> ';
  13. print '<b>[' .$row['ile_komentarzy']. ']</b>';
  14. print '</TD></TR>';
  15. }
  16. ?>

jakaś petla ma być czy jak ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.