Jag skall bygga en topplista till mitt forum.
En databas innehåller för enkelhetens skull i princip bara en lista med massor med användarnamn. T.ex.
Användarnamn1
Användarnamn3
Användarnamn2
Användarnamn1
Användarnamn1
Användarnamn4
Användarnamn3
Användarnamn2
Användarnamn2
Användarnamn1
Jag vill att detta skall bli en topplista som i detta fallet skulle bli:
1. Användarnamn1 - 4 inlägg
2. Användarnamn2 - 3 inlägg
3. Användarnamn3 - 2 inlägg
4. Användarnamn4 - 1 inlägg
Hur gör man?
EkströmMedlem sedan feb. 20021 690 inlägg Sparar du antal inlägg i ett fält i samma tabell som användarnamnen? Det vore smart prestandamässigt iaf.
Nej. I mitt forum har datatyperna:
- Rubrik
- Meddelande
- Användarnamn
- Datum
Sedan kom jag på att det hade varit skojigt att ha en topplista på de mest aktiva skribenterna. Jag har för mig det finns en speciell sak i SQL-frågan som man kan ställa för att få detta. Eller?
Prova det här (inte säker på att det fungerar som det ska):
SELECT Anvandarnamn, COUNT(Meddelande) AS msgCount
FROM Forum
GROUP BY Namn, msgCount
ORDER BY 2 DESC;
Kan inte använda GROUP BY med 'msgCount'
kommer det fram
Men jag har för mig att det skall finnas något i SQL som gör detta. Tar samman alla som innehåller alla. Något i stil med COUNT...
Ingen som kan? :q
@ndersMedlem sedan juni 200026 914 inlägg I juventus1s fråga ska du nog gruppera på enbart Anvandarnamn. I övrigt kan nog den fungera, utan att jag satt mig in allt för mycket i vad det hela handlar om. ;)
mvh.
Hur presenterar jag det sen då?
<%
Set Connect = Server.CreateObject("ADODB.Connection")
SQL = "SELECT Anvandarnamn, COUNT(Meddelande) AS msgCount FROM Forum GROUP BY Anvandarnamn ORDER BY 2 DESC;"
Set RecSet = Connect.Execute(SQL)
%>
Vad mer behövs för att visa topplistan?
LarsGMedlem sedan dec. 200012 465 inlägg En vanlig utskriftsloop
while not recset.eof
response.write recset("anvandarnamn") & " " recset("msgcount") & "<p>"
recset.movenext
wend
Resulterar i en tom sida...
Är ni säkra på att SQL-frågan är korrekt?
LarsGMedlem sedan dec. 200012 465 inlägg Den ser väl rimlig ut. Har du något
on error resume next
någonstans? Ta bort det i så fall.
Nepp! Inga On Error Resume Next. Jag har testat att hämta data från den med SELECT * FROM osv. och det funkar utmärkt...
Hela min kod ser alltså ut så här:
<%
Set Connect = Server.CreateObject("ADODB.Connection")
' <--- Koppling till mySQL-databas.
<%
SQL = "SELECT Anvandarnamn, COUNT(Meddelande) AS msgCount FROM Forum GROUP BY Anvandarnamn ORDER BY 2 DESC;"
Set RecSet = Connect.Execute(SQL)
Do Until RecSet.EOF
%><%=RecSet("Anvandarnamn")%><%
recset.movenext
Loop
Inte ett dugg visas...
LarsGMedlem sedan dec. 200012 465 inlägg Om det finns data i tabellen forum så skall det bli ett resultat av frågan.
Lägg till lite testutskrifter
<%
Set Connect = Server.CreateObject("ADODB.Connection")
' <--- Koppling till mySQL-databas.
<%
SQL = "SELECT Anvandarnamn, COUNT(Meddelande) AS msgCount FROM Forum GROUP BY Anvandarnamn ORDER BY 2 DESC"
Set RecSet = Connect.Execute(SQL)
if recset.eof then
response.write " Tomt <br>"
else
response.write " Inte tomt <br>"
Do Until RecSet.EOF
%><%=RecSet("Anvandarnamn")%><%
recset.movenext
Loop
end if
%>
Det borde komma någon utskrift.
Den var tomt, alltså verkar SQL-frågan vara felaktig..?
Vad kan detta vara?
Jag kan tillägga att det måste vara min PWS som strular. Det funkar på webbhotellet! :)
Tack!