---
title: "Räkna kommentarer"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/105378-räkna-kommentarer"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Leijonkungen"
published: "2004-06-10T08:13:27.000Z"
updated: "2004-06-11T14:40:57.000Z"
replies: 14
views: 435
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/105378-räkna-kommentarer"
---

# Räkna kommentarer

## #1 — Leijonkungen, 2004-06-10T08:13Z

Hej på er!

Skulle behöva hjälp med en sak. Besitter en ytterst liten kompetens på området jämfört med den de flesta av er har på detta forum, men börjar lära mig allt mer.

Jag har en nyhetsfunktion på min förstasida som visar de sex senaste nyheterna. Under varje nyhet skulle jag dock vilja räkna hur många kommentarer som finns, och om det inte finns några skriva ut "Bli först med att kommentera". Denna fråga kanske hör hemma mer under "PHP" nu när jag tänker efter, men anyway.

Tabellen jag hämtar nyheter i från heter just "nyheter" och kommentarerna ligger i "nyheterkommentarer". De sex nyheterna "repeatas" alltså från ett recordset som sorterar nyheterna efter senaste id-nummer.

Den funktion jag är ute efter liknar den som finns här: <http://www.xlab.co.uk> Fast utan "posted osv".

Använder MySQL 4, PHP 4 och Mac OS X 10.3.

Tacksam för hjälp!

Permalänk: https://www.webforum.nu/p/105378

## #2 — UlfT, 2004-06-10T08:22Z

Re: Räkna kommentarer

> **Leijonkungen skrev:**
>
> Denna fråga kanske hör hemma mer under "PHP" nu när jag tänker efter, men anyway.

Nej, det var helt rätt postat. Använd dig av count i sql. Om vi tänker oss att kommentartabellen (i exemplet kallad "kommentarer"), kopplar kommentarerna till den nyhet de avser, med hjälp av nyckeln "newsId", så kan du räkna antalet kommentarer på följande vis:

```
select count(*) from kommentarer where newsId=3
```

om det nu var nyhet nummer tre du ville räkna kommentarerna för i det fallet.

Permalänk: https://www.webforum.nu/p/1366803

## #3 — Leijonkungen, 2004-06-10T08:32Z

Det låter rimligt!
Men eftersom detta ska skapas dynamiskt måste det till något annat eller hur? 3:an funkar ju bara för just nyhet nummer tre. Testade med nyhet 246, som jag visste hade 4 kommentarer och fick på så sätt fram att det var just fyra stycken.

```
SELECT count(*) FROM nyhetskommentarer where nyheterID=246
```

 

Men om jag förstått saken rätt måste det till någon sorts php-kod inuti sql-satsen för att det ska bli dynamiskt vi varje post eller?
Så här skrivs exempelvis nyhetskategorin ut om det kan hjälpa:

```php
<?php echo $row_rsNyheter['Kategori']; ?>
```

Permalänk: https://www.webforum.nu/p/1366804

## #4 — Leijonkungen, 2004-06-10T10:35Z

Ingen som vet?
Det är ju en funktion som man ser på nära nog varenda blog nu för tiden. Är den väldigt avancerad?

Permalänk: https://www.webforum.nu/p/1366864

## #5 — UlfT, 2004-06-10T10:38Z

Det stämmer att du måste ha med en del annan kod för att ta fram vilket nyhetsid som du vill räkna kommentarer för. Exakt vilken kod som krävs, beror på situationen. Men man skulle ju kunna försöka beskriva det i stora drag:

1) Hämta de sex senaste nyheterna från nyhetstabellen. Då hämtar du samtidigt deras id-värden, för dessa ska du ju använda senare när du räknar kommentarer.

2) Loopa igenom nyheterna.
\- För varje nyhet: Skriv nyheten, och använd nyhetens id till att räkna kommentarer genom att generera en sql-sats likt den jag visade, där nyhetens id ingår. Gör du denna kommentarräkning samtidigt som du skriver ut nyheten, och därmed känner till nyhetens id, då borde det inte vara så svårt. :)

Permalänk: https://www.webforum.nu/p/1366866

## #6 — Leijonkungen, 2004-06-10T10:44Z

Absolut, men hur ska SQL-satsen se ut då?
Det här fungerar ju uppenbarligen inte, men kan man få samma grej på något sätt?

```
SELECT count(*) FROM nyhetskommentarer where nyheterID='<?php echo $row_rsNyheter['nyheterID']; ?>'
```

Permalänk: https://www.webforum.nu/p/1366868

## #7 — UlfT, 2004-06-10T10:47Z

> **Leijonkungen skrev:**
>
> Absolut, men hur ska SQL-satsen se ut då?
> Det här fungerar ju uppenbarligen inte, men kan man få samma grej på något sätt?
> 
>
>
> ```
> SELECT count(*) FROM nyhetskommentarer where nyheterID='<?php echo $row_rsNyheter['nyheterID']; ?>'
> ```

Använd inte apostrofer när det är numeriska värden i fälten.

Permalänk: https://www.webforum.nu/p/1366869

## #8 — Melea, 2004-06-10T10:48Z

:)

```
SELECT count(*) FROM nyhetskommentarer where nyheterID = $row_rsNyheter[nyheterID]
```

Permalänk: https://www.webforum.nu/p/1366870

## #9 — Leijonkungen, 2004-06-10T10:58Z

Nu börjar vi närma oss men är inte riktigt där ännu.
Inget felmeddelande denna gång, men nu skriver den ut 0 även fast det finns kommentarer under en viss nyhet. Den skriver alltså ut den senaste nyhetens antal kommentarer (0). Hur får jag den att blir unik för varje nyhet?

Här är koden som skriver ut nyheterna:

```php
<?php do { ?>
          <span class="NyhetsHeaderRed"><?php echo $row_rsNyheter['Rubrik']; ?></span><BR>
		  <span class="Datum"><?php echo strftime('%e %B %Y', strtotime($row_rsNyheter['Datum'])); ?></span><BR>
		 
		  <BR>
		  <span class="Nyhetskategori">
<?php if (!empty($row_rsNyheter['nyhetsbild'])) { echo '<IMG src="./bilder/nyhetsbilder/' . $row_rsNyheter['nyhetsbild'] . '" hspace="2" vspace="2" align="' . $row_rsNyheter['bildplacering'] . '">'; } ?>

		  
		  <?php echo $row_rsNyheter['Kategori']; ?></span> | <?php echo nl2br($row_rsNyheter['fd_Text']); ?><BR>
          <BR>
          <A href="nyheter/read.php?nyheterID=<?php echo $row_rsNyheter['nyheterID']; ?>#kommentera"><IMG src="./bilder/kommentera_liten.gif" width="167" height="23" border="0" class="vitbild"></A>
          <BR>
          <BR><CENTER><IMG src="bilder/pix_dedede.gif" width="352" height="1"></CENTER>
          <BR>
          <BR>
          <?php } while ($row_rsNyheter = mysql_fetch_assoc($rsNyheter)); ?>
```

 

Som ni ser har jag en bild som man klickar på för att kommentera i dag. Men jag vill att man snabbt ska se om något kommenterat eller inte.

Jag hade ju tänkt att man kunde skriva ut denna kod mitt i loopen:

```php
<?php echo $row_rsRakna['count(*)']; ?>
```

 

Som sagt, kom ihåg att jag är novis i jämförelse med er.  :r

Permalänk: https://www.webforum.nu/p/1366877

## #10 — Melea, 2004-06-10T11:04Z

Nått sånt här kanske.

```php
<?php while ($row_rsNyheter = mysql_fetch_assoc($rsNyheter)); ?>
          <span class="NyhetsHeaderRed"><?=$row_rsNyheter['Rubrik']?></span><BR>
          <span class="Datum"><?=strftime('%e %B %Y', strtotime($row_rsNyheter['Datum']))?></span><BR>
         
          <BR>
          <span class="Nyhetskategori">

<?php if (!empty($row_rsNyheter['nyhetsbild'])) { echo '<IMG src="./bilder/nyhetsbilder/' . $row_rsNyheter['nyhetsbild'] . '" hspace="2" vspace="2" align="' . $row_rsNyheter['bildplacering'] . '">'; } ?>

          <?=$row_rsNyheter['Kategori']?></span> | <?=nl2br($row_rsNyheter['fd_Text'])?><BR>
          <BR>
          <A href="nyheter/read.php?nyheterID=<?=$row_rsNyheter['nyheterID']?>#kommentera"><IMG src="./bilder/kommentera_liten.gif" width="167" height="23" border="0" class="vitbild"></A>
          <BR>
          <BR><CENTER><IMG src="bilder/pix_dedede.gif" width="352" height="1"></CENTER>
          <BR>
          <BR>
<?
}
?>
```

Permalänk: https://www.webforum.nu/p/1366880

## #11 — Leijonkungen, 2004-06-10T11:14Z

Men var i detta skulle antalet kommentarer skrivas ut menar du?
Jag vill alltså ersätta bilden med något i stil med:

X kommentarer. Skriv något du också!

eller, om det inte finns några kommentarer:

Bli först med att kommentera denna nyhet!

Permalänk: https://www.webforum.nu/p/1366885

## #12 — Leijonkungen, 2004-06-10T11:59Z

\*bump\*
Please, jag behöver verkligen assistans med det här.
Jag vet att det finns sjukt kompetenta människor i detta forum!

Permalänk: https://www.webforum.nu/p/1366917

## #13 — Leijonkungen, 2004-06-10T14:21Z

Ingen som vet...? :(

Permalänk: https://www.webforum.nu/p/1367017

## #14 — Pace, 2004-06-10T14:28Z

Förvänta dig inget svar efter tre sekunder, det finns folk som jobbar, studerar eller av annan orsak inte hinner svara på alla inlägg i raketfart.

Om du ska hämta antalet kommentarer till respektive nyhet så kan du lösa det genom en sql-fråga.

```
SELECT news.newsid, title, COUNT(commentid) AS numcomments 
FROM news
LEFT JOIN comments ON (comments.newsid = comments.newsid)
GROUP BY news.newsid
ORDER BY postdate DESC
```

Då får du förutom nyheten även ett fält (numcomments) som innehåller antalet kommentarer som gjorts till respektive nyhet.

Permalänk: https://www.webforum.nu/p/1367024

## #15 — Leijonkungen, 2004-06-11T14:40Z

Ledsen om jag var pushig, det var inte meningen.
Din lösning fungerade ju givetvis utmärkt!
Stort tack för all hjälp och trevlig helg!

Permalänk: https://www.webforum.nu/p/1367633

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/105378-räkna-kommentarer
