20. december 2009 - 12:40Der er
15 kommentarer og 1 løsning
Intern mail-system / ASP / Acces
Jeg har fået lavet et lille community-system med funktionerne: Opret bruger, Se alle brugere og et login. Nu sidder jeg og bikser med et intern mail-system hvori bruger som er logget ind kan skrive til hinanden. Jeg har min acces-database (databse.mdb) hvori der er følgende:
Tabeller: Bruger, Mail
I (bruger) har jeg felterne: UserID (auto), profil, adgangskode, email.
og i (mail) har jeg felterne: MailID (auto), til, fra, emne, besked, læst.
Når en bruger har oprettet sin profil kan han/hun ved siden (default.asp) logge sig ind, hvorefter de lander på (dinside.asp) kildekoden til dinside.asp er følgende: ----------------------------------------
<!--#include file="protect.inc"--> <% ' Databaseforbindelse - husk at angive sti til din database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("database.mdb") Conn.Open DSN
strSQL = "Select * From bruger Where UserID = " & Request.Querystring("UserID") Set rs = Conn.Execute(strSQL)
'strSQL = "Select * From mail Where mailID = " & Request.Querystring("UserID")
response.write "<a href='mail.asp?UserID=" & rs("UserID") & "'>" & "Du har " & rs("Hvor mange mails man har?") & " beskeder i din anbakke</a>"
' Luk databaseforbindelse Conn.Close Set Conn = Nothing %> ----------------------------------------
Mit spørgsmål: Som i kan se har jeg prøvet selv at formulere sætningen til at udskrive et link der skal sige, eksempvis: "Du har 9 beskeder i indbakken" Og linket skal så åbne siden (mail.asp)
Nogen der kan hjælpe mig med at lave den rigtige sætning, og selve postsystemet på siden (mail.asp) Og kunne forestille mig, at man skal lave relationer i selve databasen mellem tabellerne: bruger og mail?
Hvordan gør jeg så, at Til-feltet og fra-feltet indeholder UserID? Er det relationerne jeg skal ind og få til at passe, for det har jeg prøvet, og så kommer den med fejlmeddelelse. Ved ikke om jeg gør det korrekt.
Feltet FRA skal indeholde en entydig adresse på afsender, og det er kun UserID på afsender (brugernavn osv kan vel rettes af bruger i en relevant side). Tilsvarende med feltet TIL
På det sted, hvor bruger sender en mail til en anden, så vælger han vel modtager fra en liste over brugere - er det en combo-boks, så kan 'value' indeholder UserID, og teksten brugernavnet - fx <select name="modtagere"> <option value="1">admin</option> <option value="2">sigurd48</option> <option selected value="3">MrGold</option> </select> listen dannes med asp-udtræk af (bruger) tabellen Så har du UserID på den valgte (sættes i TIL-feltet), og den, der er logget ind kender du jo i forvejen (han skal stå i FRA-feltet)
Ok, nu er jeg begyndt at forstå princippet i det.. og har fået gjort sådan at medlemmer nu kan sende mails til hinanden. Altså har fået lavet funktion hvor eksempelvis bruger1 kan sende en mail til bruger2
Men har lidt problemer med at lave den funktion du har postet hvor man kan se sine mails, her er koden jeg bikser med: ----------------------------------------------------------
<!--#include file="protect.inc"--> <% ' Databaseforbindelse - husk at angive sti til din database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("database.mdb") Conn.Open DSN
strSQL = "Select * From bruger Where UserID = " & Request.Querystring("UserID") Set rs = Conn.Execute(strSQL)
feltet læst lav det om til et heltalsfelt, og default til 0 så bruger vi 0 for 'ikke læst mail' og 1 til læst. ret linjen sSQL="SELECT COUNT(*) as ccount from mail Where TIL = " & Request.Querystring("UserID") & " and læst=false" til sSQL="SELECT COUNT(*) as ccount from mail Where TIL = " & Request.Querystring("UserID") & " and læst=0"
brugeren (dvs modtager) skal på sin side have mulighed for at markere, at mail er læst, og dermed at værdien i læst sættes til 1
den siger bare: An error occurred on the server when processing the URL. Please contact the system administrator. If you are the system administrator please click here to find out more about this error.
-------------------------------------------------------------------------------- SELECT COUNT(*) as ccount from mail Where TIL = 1 and læst=0 -------------------------------------------------------------------------------- An error occurred on the server when processing the URL. Please contact the system administrator. If you are the system administrator please click here to find out more about this error.
dine to data TIL = 1 læst=0 mindst den ene af dem har du oprettet som tekst. Når det er tekst, så skal der ' omkring værdien - dvs sSQL="SELECT COUNT(*) as ccount from mail Where TIL = '" & Request.Querystring("UserID") & "' and læst='0'" eller sSQL="SELECT COUNT(*) as ccount from mail Where TIL = '" & Request.Querystring("UserID") & "' and læst=0" eller sSQL="SELECT COUNT(*) as ccount from mail Where TIL = " & Request.Querystring("UserID") & " and læst='0'"
ok - husk nu forskellen på tal og tekst (tekst-felter skal have ' omkring data).
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.