Avatar billede Slettet bruger
18. juli 2004 - 18:04 Der er 21 kommentarer og
1 løsning

Hvordan ordner jeg dette lille problem?

Jeg har en lille webside, hvor få udvalgte personer kan logge ind og skrive kommentarer, via en access database i et ASP-dokument.
Og det virker fint nok.

Men for at undgå, at personerne hver gang skal skrive deres navn i et selvstændigt input-textfelt (så man kan se hvem der har skrevet kommentaren), vil jeg gerne lave det sådan, at personerne bare skal klikke i en chekbox, som representerer deres navn via et felt i databasen.
Det er nemlig meget hurtigere og nemmere for disse personer. :-)

Nogenlunde sådan havde jeg forestillet mig det (i grove træk):
<form id="form1" action="http://www.websted.dk/cgi-bin/formmail.php" method="post">
Karsten <input type="radio" name="navn" value="karsten">
Morten <input type="radio" name="navn" value="morten">
Benny <input type="radio" name="navn" value="morten">
Osv.
</form>

Så hvordan kan jeg ordne problemet med:
A: at indsætte data i Access-databasen? Og hvilke typer felter skal der bruges?
B: med at ASP-dokumentet skal fremvise resultatet med, hvem der har klikket sit navn til?
C: Andet jeg burde vide, for at få det til at virke?

Ide:
Kan jeg ikke bare indsætte navnet på den person som er logget ind? Det ville nemlig have været langt det nemmeste.  :-)
Hvis man kan det, hvordan ordner jeg så det?

Jeg håber at jeg har forklaret mig nogenlunde forståeligt... :-)
Avatar billede eagleeye Praktikant
18. juli 2004 - 18:16 #1
Hvis du har en tabel med brugernavn i, ville det være smartest at gemme folk ID og ikke selve brugernavnet i den tabel hvor du gemmer kommentarer. Da du så altid ud fra ID'et kan finde brugernavnet og det spare ogås plads i databasen.

A: Så jeg ville lave et tal felt i kommentar tabellen.

B: Hvis du briger det med ID'et kan det gøre med en JOIN sådan her:
SQL = "select kommentar.*, brugere.brugernavn from kommentar inner join brugere on kommentar.brugerID = brugere.ID"
Avatar billede jamiros Novice
18. juli 2004 - 18:19 #2
Logger man ind med session?
Avatar billede Slettet bruger
18. juli 2004 - 18:24 #3
Øhhh....  ID og session???

Altså:
Via en alm. form, sendes man videre til en loginchek-side, som ser sådan ud:
<%
session("navn") = Request.Form("navn")
session("password") = Request.Form("password")

navn = session("navn")
password = session("password")

IF session("navn") = "" or session("password") = "" THEN
Response.Redirect("login.asp?fejl=nothing")
END IF

If Len(session("navn")) > 0 And Len(session("password")) > 0 THEN

Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("zxc.mdb")

set id = myConn.Execute("SELECT id,navn,password FROM login WHERE navn = '"& navn &"' AND password = '"& password &"'")

If Not (id.BOF Or id.EOF) Then
session("valid-login") = id("id")

response.redirect("logged_in.asp")
Else
Response.Redirect("login.asp?fejl=forbudt")

myConn.Close
Set myConn = Nothing
END IF
end if
%>


Hjælper disse koder til noget som helst?
Avatar billede Slettet bruger
18. juli 2004 - 18:30 #4
Inde i min Access-database, kan jeg se at der er et felt som hedder ID.
Det er det første felt-navn i tabellen, som bare en fortløbende Autonummerering.

Er det en ID?
Avatar billede Slettet bruger
18. juli 2004 - 18:39 #5
Jeg frygter, at dette bliver gjort langt mere kompliceret end nødvendigt...

Er der ikke en lettere måde at gøre det på?
Avatar billede Slettet bruger
18. juli 2004 - 18:55 #6
Ok, så fandt jeg ud af det:
<%=objRS("navn")%>

På den måde trak jeg navnet ud af databasen, på den person som har logget sig ind.

Hmmm...
Avatar billede eagleeye Praktikant
18. juli 2004 - 18:57 #7
Det kan være det umiddelbart virker svært, men hvis du tillader folk at skifter brugernavn vil du gælde dig over du bruger folks unike ID (autonummer) og ikke deres brugernavn.
Avatar billede eagleeye Praktikant
18. juli 2004 - 18:58 #8
Men hvis folks skal logge ind hvorfor så ikke bare gemme ID'et på den som er logget ind og så automatisk skrive det i den tabel med kommentarer?
Så kan en person heller ikke udgive sig for at være en anden.
Avatar billede Slettet bruger
18. juli 2004 - 19:15 #9
eagleeye:
Din kommentar (18:58:22) lyder som noget jeg kan bruge. :-)

Men jeg er altså ikke særligt dygtig til dette her. Du må hjælpe mig, og jeg kaster glædeligt 200 points efter dig. :-)

En punkt-for-punkt plan laves:
Jeg laver en ny tabel (kommentarer), ikke sandt?
I den tabel opretter jeg 3 koloner:
ID (tal), navn (notat), tid (dato og klokkeslæt) og kommentar (notat), ikke?
Eller...?

Og hvad så mere?
Avatar billede Slettet bruger
18. juli 2004 - 19:15 #10
Vrøvl, 4 kolonner, selvfølgelig.  :-)
Avatar billede Slettet bruger
18. juli 2004 - 19:17 #11
Kolonnen ID skal være af datatypen Autonummerering, kan jeg se.
Avatar billede eagleeye Praktikant
18. juli 2004 - 19:21 #12
Ja jeg vil lave tabellen sådan her:
ID : autonummer
brugerID : Tal
tid : dato/klokkeslæt
kommentar : notat


Når man bliver logget ind vil jeg gemme brugeres ID i session, præsis som du har gjort i denne linje:
session("valid-login") = id("id")


På form siden vil jeg havde en text area som hedder kommentar hvor man skriver sin kommentar.


På siden som gemmer kommentaren vil jeg lave en SQL som denne:

SQL = "insert intokommentar (brugerID, tid, kommentar) values (" &session("valid-login") & ", Now(), '" & replace(Request.Form("kommentar"),"'","''") & "')"
Avatar billede Slettet bruger
18. juli 2004 - 19:32 #13
Tabellen er lavet.

Men næste punkt fatter jeg ikke særligt meget af...  sker det ikke af sig selv?

Vedr. form-siden og kommentar-feltet, er jeg ved at oprette den nu.

Du skriver: "På siden som gemmer kommentaren..." men man skriver da ikke en SQL-sætning inde i et ASP-dokument? Eller gør man? Jeg troede at det skete inde i databasen.

Jeg truede jo med at jeg ikke har særligt meget forstand på dette her.  :-/

Ide: Hvad med at du lavede et komplet eksempel, og enten poste det herinde, eller lagde det til download et eller andet sted?
Jeg tror at det vil spare os for meget tid/misforståelser... :-)
Avatar billede Slettet bruger
18. juli 2004 - 19:33 #14
...jeg behøves nemlig ikke at fatte hvad der sker, bare det virker.  :-)
Avatar billede eagleeye Praktikant
18. juli 2004 - 19:34 #15
>>Men næste punkt fatter jeg ikke særligt meget af...  sker det ikke af sig selv?
Jo det er med i koden.
Avatar billede eagleeye Praktikant
18. juli 2004 - 19:35 #16
Man skriver sin SQL sætning i i ASP dokumentet, præsis som den du har der tjekker om bbrugernanvet findes på din login side.

Eks på koden:


<%
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("zxc.mdb")

SQL = "insert intokommentar (brugerID, tid, kommentar) values (" &session("valid-login") & ", Now(), '" & replace(Request.Form("kommentar"),"'","''") & "')"

myConn.Execute(SQL)

Response.Write "Kommentaren er tilføjet"
myConn.Close
Set my=nothing
%>
Avatar billede eagleeye Praktikant
18. juli 2004 - 19:38 #17
hov der manger et mellemrum i SQL sætningen:
SQL = "insert into kommentar (brugerID, tid, kommentar) values (" &session("valid-login") & ", Now(), '" & replace(Request.Form("kommentar"),"'","''") & "')"
Avatar billede Slettet bruger
18. juli 2004 - 19:54 #18
Jeg prøver lige at arbejde lidt videre med det, og vender tilbage til dig senere i aften.  Det er spisetid nu.  :-)
Avatar billede eagleeye Praktikant
18. juli 2004 - 19:56 #19
ok det helt i orden, uden mad og drikke ... :)
Avatar billede Slettet bruger
21. juli 2004 - 10:16 #20
eagleeye:
Læg venligst et svar så jeg kan tildele dig points, som tak for hjælpen.  :-)
Avatar billede eagleeye Praktikant
21. juli 2004 - 20:47 #21
Ok :)
Avatar billede Slettet bruger
23. juli 2004 - 21:30 #22
Igen: Tak for hjælpen.  :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester