Avatar billede Slettet bruger
22. juli 2004 - 08:51 Der er 16 kommentarer og
1 løsning

If else, og lidt SQL

Hejsa.

Jeg har en lille webside, hvor der kun er bestemte personer som kan logge ind.

Jeg ønsker, at når en person logger ind (via en access database), skal personen stå som online på websiden.

Noget i retning af:
Hvis Poul er logget ind, skal der vises et grønt billede ud for Pouls profil, eller skal der bare vises et rødt billede.

Hvordan ordner jeg det lille problem?
Avatar billede keysersoze Ekspert
22. juli 2004 - 09:12 #1
Der har du flere muligheder fx;

http://activedeveloper.dk/artikler/default.asp?articleid=172

http://activedeveloper.dk/artikler/default.asp?articleid=173

og endelig kan du bare sætte en mærke i din brugertabel (fx et ja/nej felt) der opdateres til "ja" og når de logger ud opdateres til "nej"
Avatar billede Slettet bruger
23. juli 2004 - 21:33 #2
keysersoze:
Hejsa igen. Jeg har nu kigget på de 2 eksempler du har linket til.
Men jeg hælder allermest til den løsning du nævnte til sidst, af flere grunde.
Derfor: Hvis du kan vise/poste et komplet eksempel til mig, vil jeg gladeligt tildele dig 200 points.
Avatar billede keysersoze Ekspert
23. juli 2004 - 21:57 #3
jamen - der er sådan set ikke mere at fortælle end det. Du laver en kolonne i din tabel der fx hedder "online" og er af typen "ja/nej" - når du bruger logger ind opdaterer du feltet til ja (UPDATE tabel SET online = TRUE WHERE id = xx) og når brugeren logger ud sættes feltet til nej (UPDATE tabel SET online = FALSE WHERE id = xx). feltet id er så den unikke nøgle i din tabel og xx er den pågældende bruger der enten logger ind eller ud
Avatar billede Slettet bruger
24. juli 2004 - 08:30 #4
keysersoze:

Hej igen.
Jeg har nu oprettet en kolone der hedder online som er af ja/nej typen.

Men øhhh... resten kan jeg ikke finde ud af. Kan du ikke venligst skrive et komplet eksempel? Jeg er ret ny på dette felt. :-/

Der er 2 ting kan jeg se:
1: En update.
2: en if-else, som aflæser om personerne er online. Hvis personerne ikke er det, skal "rød.jpg" vises, ud for hver person. Men hvis personerne er online, skal "grøn.jpg" vises, ud for hver person.
Eller misforstår jeg noget?

Det er ikke så svært, vel? Jeg er ikke så dygtig til det endnu, men det skal nok komme. :-)
Avatar billede keysersoze Ekspert
24. juli 2004 - 08:35 #5
1'eren har jeg givet;

UPDATE tabel SET online = TRUE WHERE id = xx
UPDATE tabel SET online = FALSE WHERE id = xx

2

If rs("online") = TRUE Then
  Response.Write "<img src=""grøm.jpg"">
Else
  Response.Write "<img src=""rød.jpg"">
End If
Avatar billede Slettet bruger
24. juli 2004 - 14:24 #6
keysersoze:

Hejsa igen.

Det ser godt ud! Jeg tester det hele lidt senere i dag.

Jeg giver dig lige points med det samme, så er det ude af verden.  :-)
Avatar billede Slettet bruger
24. juli 2004 - 19:06 #7
Hejsa igen, keysersoze.

Det virker altså ikke. Der må være en eller flere fejl undervejs.

Access-database-navn: zxc.mdb
Tabel-navn: login
Kolonne-navn: online
Kolonne-type: ja/nej


Her er hvad jeg har fået stykket sammen:

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

UPDATE login SET online = TRUE WHERE id = 67
UPDATE login SET online = FALSE WHERE id = 69

If rs("online") = TRUE Then
  Response.Write "<img src=""pics/goen.gif"">"
Else
  Response.Write "<img src=""pics/roed.gif"">"
End If
%>

<table border="0px" cellpadding="5px" cellspacing="0px" align="center" style="width: 100%; background-color: #eaeaea;">
    <tr>
        <td>Jesper<%Response.Write rs("online")%>
        </td>
    </tr>
    <tr>
        <td>Michael<%Response.Write rs("online")%>
        </td>
    </tr>
</table>

<%
'--[ Slukker og lukker ]-->
Conn.Execute(strSQL)
Conn.close
Set Conn = Nothing
%>

Fejl der vises i browseren:

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0401)
Slut på sætning var ventet
test3.asp, line 42, column 13
UPDATE login SET online = TRUE WHERE id = 67
------------^

Det er det bedste jeg kan få stykket sammen, efter dine anvisninger, keysersoze.

Kan du ikke venligst hjælpe mig med at få det til at virke? Ellers kan jeg jo ikke bruge det til noget som helst.

På forhånd tak.
Avatar billede Slettet bruger
24. juli 2004 - 19:11 #8
Ide:
Skal jeg lægge .ASP-dokumentet og databasen til download på mit website? Fordi så er det måske hurtigere og nemmere at reparere for dig?

Det tror jeg lige at jeg gør med det samme. Jeg kommer herind igen om lidt med links til dig.  :-)
Avatar billede keysersoze Ekspert
24. juli 2004 - 19:24 #9
jeg vil ikke downloade og rette i noget - jeg kan hjælpe herigennem og det er det.

Din update-sætninger skal selvfølgelig være SQL-sætninger - du kan jo ikke bare skrive det på den måde. Dette er en SQL hvormed du danner et recordset;

SQL = "UPDATE login SET online = TRUE WHERE id = 67"
Set rs = conn.execute(SQL)

Ydermere skal du selvfølgelig ikke hardcode et id-nummer ind - id-nummeret skal selvfølgelig passe med den som logger ind eller ud
Avatar billede Slettet bruger
24. juli 2004 - 19:28 #10
Nu har jeg uploadet en pakket fil, lige til at downloade, så du nemmere kan fejlfinde scriptet.

Her ligger den: http://www.extend.dk/test.rar

Den fylder 13 kb., og indeholder 4 filer:
- test.asp
- zxc.mdb (i Access 2000 filformat)
- groen.gif
- roed.gif

Nu kan jeg ikke gøre det lettere for dig, keysersoze.

Jeg håber at du vil hjælpe mig med at få det til at fungere.
Avatar billede Slettet bruger
24. juli 2004 - 19:32 #11
Ok, jeg ser først din besked nu. Jeg prøver mig frem igen.
Avatar billede keysersoze Ekspert
24. juli 2004 - 19:33 #12
som sagt vil jeg gerne hjælpe - men jeg vil ikke lave det for dig. Skal jeg lave det for dig koster jeg kroner og øre.

Jeg syntes at du før du går videre skal kigge på følgende tutorials;

http://activedeveloper.dk/artikler/default.asp?articleid=180
http://activedeveloper.dk/artikler/default.asp?articleid=88
Avatar billede Slettet bruger
24. juli 2004 - 19:54 #13
Hejsa igen.

Ja, det er gode sider vedr. beskyttelse, du har linket til.  :-)
Jeg har dog et godt script, som jeg bruger. Tror at jeg engang fik det inde fra Activedeveloper.dk også.

MEN:
Som jeg skrev: Jeg er bestemt ikke særligt god til denne del af programmeringen, hvorfor jeg spurgte efter et klokkeklart og utvetydigt eksempel.
Please tænk på at jeg ikke er dygtig til dette her.

Derfor:
SQL = "UPDATE login SET online = TRUE WHERE id = Michael"
Set rs = conn.execute(SQL)
Var jo ikke som du først skrev til mig. Jeg sidder her og bruger masser af tid på at teste, og får kun fejlmeddelser hele tiden. Og det sidste du skrev, virker heller ikke. :-(

Nu står der i browseren:
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1.
test3.asp, line 40

Og jeg ved ikke hvad jeg skal gøre ved det.  :-(
Avatar billede keysersoze Ekspert
24. juli 2004 - 20:19 #14
Jeg har på intet tidspunkt sagt at jeg ville lave det for dig... kun at jeg ville hjælpe.

som tidligere skrevet så skal feltet "id" selvfølgelig eksistere i din tabel login - og hvis id er et tekstfelt og du vil update den række hvor der står "Michael" i id-feltet skal din sql se sådan ud;

SQL = "UPDATE login SET online = TRUE WHERE id = 'Michael'"
Avatar billede Slettet bruger
24. juli 2004 - 20:33 #15
JEPS! Nu virker den del af systemet! Dejligt!!!

Og ud for brugeren Michael er der også krydset til i Ja/Nej-feltet. Det tyder godt!

Nu kommer der blot et nyt problem, som starter på denne line:
If rs("online") = TRUE Then
  Response.Write "<img src=""pics/goen.gif"">"
Else
  Response.Write "<img src=""pics/roed.gif"">"
End If
%>

<table border="0px" cellpadding="5px" cellspacing="0px" align="center" style="width: 100%; background-color: #eaeaea;">
    <tr>
        <td>Jesper<%Response.Write rs("online")%>
        </td>
    </tr>
    <tr>
        <td>Michael<%Response.Write rs("online")%>
        </td>
    </tr>
</table>

Der står i browseren:
Fejltype:
ADODB.Recordset (0x800A0CC1)
Elementet kan ikke findes i den samling, der svarer til det anmodede navn eller ordenstal.
test3.asp, line 42


Og ja, jeg ved godt at du på intet tidspunkt sagt at du ville lave det for mig... kun at du ville hjælpe. Og det er det jeg håber på. :-)
Avatar billede Slettet bruger
24. juli 2004 - 20:36 #16
Rettelse: pics/goen.gif
er selvfølgelig: pics/groen.gif

Men samme fejl alligevel. :-(
Avatar billede keysersoze Ekspert
24. juli 2004 - 21:05 #17
en enkelt fejl fra min side - sql'en skal se sådan ud

SQL = "UPDATE login SET online = TRUE WHERE id = Michael"
conn.execute(SQL)

rs("online") spørger på et felt i et recordset - dette recordset eksisterer ikke så derfor skal du lave det. fx;

SQL2 = "SELECT * FROM login WHERE id = 'Michael'"
Set rs = Conn.Execute(SQL2)
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