10. april 2005 - 17:08Der er
48 kommentarer og 1 løsning
Besked tæller + Liste
Hejsa.
Jeg har fået bikset en tagwall sammen og nu skal jeg så have gjort sådan at beskederne som brugeren skriver bliver talt sammen så man kan gå ind i brugerens profil og se det samlede antal beskeder han har skreven. Og samtidig skal jeg have lavet en liste så den som har skreven flest beskeder kommer øverst også den der har skrven næst flest kommer nr. 2 også videre også videre.
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
<% Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/Tagwall.mdb") strSQL = "SELECT TOP 100 * FROM Beskeder ORDER BY BeskederSkreven desc" set rs = Conn.execute(strSQL)
if rs.EOF then Response.write "Der er ingen brugere i databasen." else Do Until rs.EOF %> <a href="profil.asp?id=<%=rs("id")%>"><%=Server.HtmlEncode(rs("brugernavn"))%> - <%=rs("beskederskreven")%></a><br></b> <% rs.movenext loop Conn.Close Set myConn = Nothing end if %>
Jamen det virker jo som det skal. Den skriver hvad der står i databasen og udskriver det. Men problemet er jo bare at når man skriver en besked til tagwallen overskriver den jo ikke den første men opretter et nyt felt.
Okay du må da også lige sige vi er flyttet videre til et helt tredje problem ... troede du mente toplisten ikke virkede det var det du spurgte til..
hvad vil du have der sker når en profil poster ? skal hans tekst bare opdateres? lyder da underligt er det ikke meningen der netop skal komme en ny tabel?
<html> <!--#Include file="../Plus/title.asp"--> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title><%=titlen%></title> <link rel="stylesheet" href="../Skrift/css.css"> </head> <!--#Include file="../Moentsystem/moenter.asp"--> <!--#include file="../Plus/beskyt.asp" --> <!--#include file="../Plus/Tjek.asp" --> <!-- #include file = "../Plus/Online.asp" --> <center> <b>Top liste over Beskeder:</b><br><br> <% Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/Tagwall.mdb") strSQL = "SELECT * FROM Beskeder ORDER BY BeskederSkreven desc" set rs = Conn.execute(strSQL)
if rs.EOF then Response.write "Der er ikke skreven nogle beskeder i Tagwallen." else Do Until rs.EOF %> <a href="profil.asp?id=<%=rs("id")%>"><%=Server.HtmlEncode(rs("brugernavn"))%> - <%=rs("beskederskreven")%></a><br> <% rs.movenext loop Conn.Close Set myConn = Nothing end if %>
<% Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/Tagwall.mdb") strSQL = "SELECT DISTINCT Brugernavn FROM Beskeder ORDER BY BeskederSkreven desc" set rs = Conn.execute(strSQL)
if rs.EOF then Response.write "Der er ikke skreven nogle beskeder i Tagwallen." else Do Until rs.EOF %> <a href="profil.asp?id=<%=rs("id")%>"><%=Server.HtmlEncode(rs("brugernavn"))%> - <%=rs("beskederskreven")%></a><br> <% rs.movenext loop Conn.Close Set myConn = Nothing end if %>
Men så får jeg fejlen:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC Microsoft Access Driver] ORDER BY clause (BeskederSkreven) conflicts with DISTINCT.
at du har oprettet et indlæg? hvorfor er den så 0 i den ene og 1 i den anden? jeg er ved at forstå hvad det er tror jeg.. fordi den oprettet en ny række hver gang?
Jep fordi den jo udskriver alle de rækker der er i databasen så det vil sige hvis nu brugeren Hjemmeskoen skriver 40 beskeder udskriver den Hjemmeskoen 40 gange på listen men med besked nr. 40 øverst fordi den har det højeste tal. Og den skal kun udskrive 1 Gang eks. hvis nu Hjemmeskoen har skreven 39 Beskeder skal den skrive:
Hjemmeskoen - 39
Også skal den overskrive det når besked nr. 40 bliver skreven altså
strSQL = "SELECT DISTINCT(Brugernavn), SUM(beskederskreven) as beskederskreven FROM Beskeder ORDER BY BeskederSkreven desc"
og ingen er dem er primary key vel?
kan forestille mig der skal rettes en lille smule mere.. men hvis den ikke giver fejl er det fint nok.. hvis udskriften ikke er helt som den skal være kan det let rettes..
indrømmer .. jeg er dårlig til at sætte mig ind i andres kode hehe
Well jeg forstår ikke lige det ikke gider... vi siger distinct på navnet.. og sum i alle de felter det navn optræder.. det næsten lige før det er nemmere at skifte database struktur... men du må også gerne lukke spørgsmålet og stille det igen blot på toplisten .. for tror ikke der er så mange der kan overskue dette spørgsmål mere.
laver du database strukturen om er det i hvertfald lettere for mig, men også nemmere for dig i fremtiden.
brugerne i en tabel.. og beskederne i en anden tabel.
Det er okay. Jeg fik et svar fra en ven. Ellers tak for hjælpen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.