webForumDet fria alternativet

Räkna lite poster

Databaser & SQL

4 svar · 357 visningar · startad av Helmertz

Medlem sedan maj 2005353 inlägg
Frågan#1

Jag använder mig av MySQL tillsammans med PHP för mitt hemmagjorda blogsystem. I tabellen för varje inlägg i bloggen har jag ett fält som heter nyhet_typ som innehåller värden som skolan, personligt o.s.v.

Nu till "problemet". Nederst på sidan har jag en förteckning över hur många poster det finns i varje kategori, ex: Humor (5). Detta skriver jag ut med nedanstående kod.

  $pers = mysql_query("SELECT nyhet_id, nyhet_typ FROM nyheter WHERE nyhet_typ = 'Personligt'");
  $personligt = mysql_num_rows($pers);

  $skol = mysql_query("SELECT nyhet_id, nyhet_typ FROM nyheter WHERE nyhet_typ = 'Skolan'");
  $skolan = mysql_num_rows($skol);

  $kult = mysql_query("SELECT nyhet_id, nyhet_typ FROM nyheter WHERE nyhet_typ = 'Kultur'");
  $kultur = mysql_num_rows($kult);

  $webb = mysql_query("SELECT nyhet_id, nyhet_typ FROM nyheter WHERE nyhet_typ = 'Web'");
  $web = mysql_num_rows($webb);

  $kropp = mysql_query("SELECT nyhet_id, nyhet_typ FROM nyheter WHERE nyhet_typ = 'Kroppen'");
  $kroppen = mysql_num_rows($kropp);
  
  $lok = mysql_query("SELECT nyhet_id, nyhet_typ FROM nyheter WHERE nyhet_typ = 'Lokalt'");
  $lokalt = mysql_num_rows($lok);
  
?>
<p>Läs alla notiser i en av dessa kategorier:</p>
<ul>
<li><a href="personligt">Personligt</a> (<?=$personligt?>)</li>
<li><a href="skolan">Skolan</a> (<?=$skolan?>)</li>
<li><a href="kultur">Kultur</a> (<?=$kultur?>)</li>
<li><a href="web">Web</a> (<?=$web?>)</li>
<li><a href="kroppen">Kroppen</a> (<?=$kroppen?>)</li>
<li><a href="lokalt">Lokalt</a> (<?=$lokalt?>)</li>
</ul>

vilket innebär att jag måste skriva till en SQL-fråga och en post i listan för varje ny kategori jag kommer på. Dessutom tar koden ganska stor plats och gör därmed filen jobbigare att leta igenom. Vad jag är ute efter är en simplare fråga som bara letar igenom en kolumn efter samma värden och räknar hur många som finns av varje..

Medlem sedan dec. 200012 464 inlägg
#2
SELECT nyhet_typ,count(*) as items
 FROM nyheter
group by nyhet_typ
Medlem sedan maj 2005353 inlägg
#3

LarsG skrev:

SELECT nyhet_typ,count(*) as items
 FROM nyheter
group by nyhet_typ

Tackar. Du har inte lust att printa ned lite PHP om hur jag presenterar informationen sen..? :p

Medlem sedan dec. 200012 464 inlägg
#4

Vadå, det är ju en högst ordinär loop över mysql_fetch_xxx och

echo  $row['nyhet_typ'] . " (" . $row['items'] . ")";
Medlem sedan maj 2005353 inlägg
#5

Jag hade inte använt mig av "count as x" tidigare bara, men tack för förklaringen :)

267 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)