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".
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.
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:
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:
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.
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.
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?
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.