Avatar billede kongsteddk Nybegynder
08. september 2002 - 21:14 Der er 23 kommentarer og
1 løsning

Tjek om data eksistere i database....

Hej!

Jeg sidder og roder med lidt ASP, og har der i blandet noget login, hvor der kan ændres brugernavn. Men den tjekker ikke om navnet findes i forvejen, selvom den burde gøre det. Koden ser ud som følger:

IF Request.Querystring("user") = "newupdate" then
    sqltjek = "SELECT * FROM bruger"
    SET rstjek = Conn.Execute(sqltjek)
    IF rstjek("brugernavn") = Request.Form("Brugernavn") = TRUE THEN
        Response.Write ("<p> Det valgte brugernavn er brugt!<br><a href=java script:history.go(-1)>Tilbage...</a>")
    ELSE
        sql = "Insert into bruger ....(Har kortet det af!!!)....
        Set RS = Conn.Execute(SQL)
        Response.Redirect ("index.asp?id=" & Request.Querystring("id"))
    End If

    response.redirect("index.asp?id=" & Request.Querystring("id"))

End If

Hvor er fejlen?
Avatar billede eagleeye Praktikant
08. september 2002 - 21:27 #1
Der er noget her som ikke er helt godt:


    sqltjek = "SELECT * FROM bruger"
    SET rstjek = Conn.Execute(sqltjek)
    IF rstjek("brugernavn") = Request.Form("Brugernavn") = TRUE THEN


Denne SQL sætninger sqltjek = "SELECT * FROM bruger" hendter alle brugernavn ud af databasen.

Det den skulle hendte ud var den record hvor brugernavnet findes og hvis brugernanvet ikke findes er det OK at ændre til det...... men hvis man ikke ændre brguernavnet så skal den ikke fejle så du må angive en uink ID for brugeren så du også kan tjekke om det er den samme bruger... hvis du forstår?


Dernæst denne if sætning er der et = TRUE for meget:
IF rstjek("brugernavn") = Request.Form("Brugernavn") = TRUE THEN

IF rstjek("brugernavn") = Request.Form("Brugernavn") THEN
Avatar billede eagleeye Praktikant
08. september 2002 - 21:32 #2
Eks: i Formen laver du et felt som dette som gemmer den unikke ID på en person:

<input type="hidden" name="memberID" value="<%=memberID%>">


og så her jeg denne SQL som tjekke om brugernaet findes:


strSQL = "SELECT * FROM members WHERE username='" & username & "' AND memberID <> " & Request.Form("memberID") & ";"
    set rs = myConn.Execute(strSQL)
    if (rs.BOF AND rs.EOF) then

      ....INDSÆT nye data..

    else
      Response.write "Username allready in use. Select a new."
    end if
Avatar billede kongsteddk Nybegynder
08. september 2002 - 21:35 #3
Hver bruger har sit eget id, men hvis peter nu vil ændre sit brugernavn fra peter til hansen, og hansen er taget, så har det jo et andet id, så jeg kan jo ikke lave en sql der siger sql = "Select * FROM bruger WHERE id = ...... Det går jo galt, og hvis jeg siger at den skal søge hvor brugernavnet hansen finde vil den jo melde fejl hvis den ikke findes. Hvad skal skrives?
Avatar billede kongsteddk Nybegynder
08. september 2002 - 21:36 #4
Okay. Prøver lige!
Avatar billede kongsteddk Nybegynder
08. september 2002 - 21:42 #5
Og hvad så hvis man skal oprette en ny, og den skal gå ind og tjekke om den findes?
Avatar billede eagleeye Praktikant
08. september 2002 - 21:45 #6
Hvis du vil oprette en ny og tjekke på om brugernavnet findes så kan dette anvednes...  username kommer så fra et indsastnings felt i en form:


    strSQL = "SELECT * FROM members WHERE username='" & username & "';"

    set rs = myConn.Execute(strSQL)
    if (rs.BOF AND rs.EOF) then
      'Brugernavnet er frit indsæt user(member) data
      ...INDSÆT HER:..

    else
      Response.write "Username allready in use. Select a new."
    end if
Avatar billede kongsteddk Nybegynder
08. september 2002 - 22:06 #7
Det virker ikke! Det melder fejl!
Avatar billede eagleeye Praktikant
08. september 2002 - 22:08 #8
Ok.. hvilken fejl ??
Avatar billede kongsteddk Nybegynder
08. september 2002 - 22:10 #9
No value given for one or more required parameters.
Avatar billede kongsteddk Nybegynder
08. september 2002 - 22:11 #10
Ups - Ramte den forkerte knap!
Avatar billede eagleeye Praktikant
08. september 2002 - 22:14 #11
Øhhh??  du skal rette SQL'erne så de passer til din tabel og kolonne navne.
Avatar billede kongsteddk Nybegynder
08. september 2002 - 22:17 #12
ja - selvfølgelig!
Avatar billede eagleeye Praktikant
08. september 2002 - 22:18 #13
Hvilken linie kommer fejlen i er det en SQL sætning ?? er det ved rette brugernavn eller ved indsæt ny bruger?
Avatar billede kongsteddk Nybegynder
08. september 2002 - 22:22 #14
Fejlen peger på den linie der starter med SET rs = Conn....., så det er jo en eller anden fejl i sql-sætningen.
Den melder fejl ved både opdatering og oprettelse!
Avatar billede eagleeye Praktikant
08. september 2002 - 22:23 #15
Ja hvordan ser SQL sætningen ud som er lige føre den linie..

Prøv evt at udskrive SQL sætningen og se om alle parametre er med.
Avatar billede kongsteddk Nybegynder
08. september 2002 - 22:33 #16
Jeg får følgende output fra SQL'en ved en Response.Write

SELECT * FROM bruger WHERE brugernavn = joker AND id <> 77;
Avatar billede eagleeye Praktikant
08. september 2002 - 22:34 #17
Der skal ' omkring navnet joker .. 'joker'

Så det ser sådan ud:
SELECT * FROM bruger WHERE brugernavn = 'joker' AND id <> 77;
Avatar billede kongsteddk Nybegynder
08. september 2002 - 22:41 #18
Virker heller ikke!
Avatar billede eagleeye Praktikant
08. september 2002 - 22:43 #19
Hvordan ser linien ud som laver SQL'en?
Avatar billede kongsteddk Nybegynder
08. september 2002 - 22:45 #20
Sådan ser en Response.Write ud

SELECT * FROM bruger WHERE brugernavn = 'joker' AND id <> '77'

Og sådan ser koden ud:

    sqltjek2 = "SELECT * FROM bruger WHERE brugernavn = '" & Request.Form("brugernavn") & "' AND id <> '" & Request.Querystring("userid") & "'"
Avatar billede eagleeye Praktikant
08. september 2002 - 22:48 #21
Hvis ID er tal så skal der ikke ' ommkring, det er lidt forvirne men ved tekst skal der ' omkring. Prøv med denne SQL:

  sqltjek2 = "SELECT * FROM bruger WHERE brugernavn = '" & Request.Form("brugernavn") & "' AND id <> " & Request.Querystring("userid")
Avatar billede kongsteddk Nybegynder
08. september 2002 - 22:52 #22
Så kom jeg lidt længere. Nu påstår den at brugernavnet findes. Det er jo i og for sig også rigtigt, men jeg burde altså have lov til at opdatere brugeren!
Avatar billede eagleeye Praktikant
08. september 2002 - 23:01 #23
Denne SQL sætning finder ingen/en record hvor brugernavn = indtastede brugernevn og id forskellig fra den bruger bruger som er ved at rette brugernavnet. Så hvis man ikke retter i brugernavnet så vil den ikke finde den record hvor brugernavne=brugernav_fra_formen OG unik_ID = ID_fra_form:

  sqltjek2 = "SELECT * FROM bruger WHERE brugernavn = '" & Request.Form("brugernavn") & "' AND id <> " & Request.Querystring("userid")

Passer brugernavnet og ID sammen?
Avatar billede kongsteddk Nybegynder
08. september 2002 - 23:04 #24
Fandt lige en fejl i indholdet af databasen! Der var 2 brugere med samme brugernavn! Så det virker nu! Takker 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