webForumDet fria alternativet

Topplista

13 svar · 253 visningar · startad av koltrasten

koltrastenMedlem sedan okt. 2002259 inlägg
#1

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
#2

Sparar du antal inlägg i ett fält i samma tabell som användarnamnen? Det vore smart prestandamässigt iaf.

koltrastenMedlem sedan okt. 2002259 inlägg
#3

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?

juventus1Medlem sedan dec. 2000401 inlägg
#4

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;
koltrastenMedlem sedan okt. 2002259 inlägg
#5

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
#6

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.

koltrastenMedlem sedan okt. 2002259 inlägg
#7

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
#8

En vanlig utskriftsloop

while not recset.eof
response.write recset("anvandarnamn") & " " recset("msgcount") & "<p>"
recset.movenext
wend
koltrastenMedlem sedan okt. 2002259 inlägg
#9

Resulterar i en tom sida...

Är ni säkra på att SQL-frågan är korrekt?

LarsGMedlem sedan dec. 200012 465 inlägg
#10

Den ser väl rimlig ut. Har du något

on error resume next

någonstans? Ta bort det i så fall.

koltrastenMedlem sedan okt. 2002259 inlägg
#11

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
#12

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.

koltrastenMedlem sedan okt. 2002259 inlägg
#13

Den var tomt, alltså verkar SQL-frågan vara felaktig..?

Vad kan detta vara?

koltrastenMedlem sedan okt. 2002259 inlägg
#14

Jag kan tillägga att det måste vara min PWS som strular. Det funkar på webbhotellet! :)

Tack!

131 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
128 ms — hämta tråd, inlägg och bilagor (db)