/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
At tjekke om brugernavnet allerede eksiste~
Fra : Flemming Jensen


Dato : 27-09-02 09:32

Hejsa

Jeg har en side hvor man kan oprette en bruger ved at udfylde en masse
felter, hvor brugernavn selvfølgelig er en af dem. Jeg skal så have den til
at tjekke i databasen om brugernavnet allerede eksisterer og hvis det gør,
så skrive at brugernavnet er optaget, men jeg er ikke helt sikkert på
hvordan.

Jeg har tænkt lidt på at gøre brugernavn til primærnøglen(bruger Acess), og
på den måde gør det umuligt at oprette to brugere med samme brugernavn, men
så giver den vel bare en træls fejl, hvis brugernavnet allerede findes. Men
der må være noget, hvor man kan fange fejlen og skrive den om til f.eks.
Desværre, brugernavnet findes allerede, eller noget i den stil.

Jeg har også tænkt på en simpel funktion der lige søger databasen igennem og
hvis der så findes en post i "Brugernavn" med det brugernavn brugeren har
indtast så skriver det ene, og hvis den ikke kan finde brugernavnet, så bare
køre videre uden fejl. Det er denne løsning jeg helst vil bruge.

På forhånd tak

__
Flemming Jensen



 
 
Jesper Stocholm (27-09-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 27-09-02 09:52

Flemming Jensen mumbled :

> Jeg har en side hvor man kan oprette en bruger ved at udfylde en masse
> felter, hvor brugernavn selvfølgelig er en af dem. Jeg skal så have
> den til at tjekke i databasen om brugernavnet allerede eksisterer og
> hvis det gør, så skrive at brugernavnet er optaget, men jeg er ikke
> helt sikkert på hvordan.
>
> Jeg har tænkt lidt på at gøre brugernavn til primærnøglen(bruger
> Acess), og på den måde gør det umuligt at oprette to brugere med samme
> brugernavn, men så giver den vel bare en træls fejl, hvis brugernavnet
> allerede findes. Men der må være noget, hvor man kan fange fejlen og
> skrive den om til f.eks.

det er der da også. For det første, så er der et unikt fejlnummer
associeret til hver fejl du kan få i ASP. Derfor bør du finde ud af,
hvilket nummer, der hører til den fejl man får ved at indsætte en række,
hvor primærnøglekravet brydes.

Din kode bør være noget retning af

strSQL = "INSERT INTO Table1 ... brugernavn,password ..."

on error resume next
   oCon.Execute(strSQL)
   Response.Write Err.Number
   Response.end
on error goto 0

Nu har du så fejlnummeret for primærnøgle-fejlen. Lad os sige, at denne
fejl er -213455321

Nu sletter du koden ovenfor og laver næsten det samme igen:

strSQL = "INSERT INTO Table1 ... brugernavn,password ..."
on error resume next
   oCon.Execute(strSQL)
   SELECT CASE Err.Number
       CASE 0
           ' fejlnummer 0 er det samme som "ingen fejl"
           Response.write "Dine data er nu indsat."
       CASE -213455321
           Response.Write "Brugernavnet er allerede taget."
       CASE ELSE
           Response.Write "Der skete en fejl"
   END SELECT
on error goto 0



--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

Flemming Jensen (27-09-2002)
Kommentar
Fra : Flemming Jensen


Dato : 27-09-02 10:10

Ja, se det lyder fornuftigt! Der er vel ingen grund til selv at kode det
hele. Jeg prøvede lige sidste gang efter jeg skrev denne besked, og fik det
til at virke, men så slog det mig, at det var utroligt dum ting jeg havde
gang i. Kig lige her:

' Hent fra databasen de poster hvor Brugernavn er = det brugernavn brugeren
har skrevet i formen
strSQL = "SELECT * FROM Brugere Where Brugernavn = '" & StrBrugernavn & "'"
Set rs = Conn.Execute( strSQL )

DO While Not rs.EOF

IF rs("Brugernavn") = StrBrugernavn THEN
OpretBruger = False
Response.Write("Desværre, brugernavnet findes allerede")
ELSE
END IF

rs.MoveNext
LOOP

Hvis variablen Opretbruger så er true fortsætter den med resten af siden, og
hvis ikke skriver den bare "Desværre, brugernavnet findes allerede", på en
tom skærm! :( Ved mindre jeg skriver hele koden med baggrund osv. ind der
ved alle de forskellige fejl punkter der kan opstå. Det holder da ikke.

Men er det okay at bruge de fejl access giver? Eller er det bedre selv at
lave det som jeg har gjort, bare selvfølgelig ikke så svinsk som mig! :D

Tak
__
Flemming Jensen



Jesper Stocholm (27-09-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 27-09-02 10:24

Flemming Jensen wrote :

> Ja, se det lyder fornuftigt! Der er vel ingen grund til selv at kode
> det hele. Jeg prøvede lige sidste gang efter jeg skrev denne besked,
> og fik det til at virke, men så slog det mig, at det var utroligt dum
> ting jeg havde gang i. Kig lige her:
>
> ' Hent fra databasen de poster hvor Brugernavn er = det brugernavn
> brugeren har skrevet i formen
> strSQL = "SELECT * FROM Brugere Where Brugernavn = '" & StrBrugernavn

denne kan du med fordel lave om til

strSQL = "SELECT COUNT(*) as numberOfRows FROM ..."

Så returnerer den enten 0 - hvis navnet ikke allerede findes - eller 1
hvis det findes.

dvs du kan lave det som

oRec = oCon.Execute(strSQL)

if cint(oRec("numberOfRows")) = 0 then
   ' navn fandtes ikke
else
   ' navn findes
end if

> Hvis variablen Opretbruger så er true fortsætter den med resten af
> siden, og hvis ikke skriver den bare "Desværre, brugernavnet findes
> allerede", på en tom skærm! :( Ved mindre jeg skriver hele koden med
> baggrund osv. ind der ved alle de forskellige fejl punkter der kan
> opstå. Det holder da ikke.

jeg forstår ikke, hvad du mener.

> Men er det okay at bruge de fejl access giver? Eller er det bedre selv
> at lave det som jeg har gjort, bare selvfølgelig ikke så svinsk som
> mig!

Jeg kan ikke se nogen problemer i at bruge de fejl Access/ASP giver.

--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

Flemming Jensen (27-09-2002)
Kommentar
Fra : Flemming Jensen


Dato : 27-09-02 10:27

For lige at rette mig selv! Det jeg skrev der var jo lidt dumt, igen. Siden
ser faktisk helt ens ud pånær et par sætninger, så jeg kan vel bare bygge
hele siden over og under asp kodningen. Altså jeg kan jo godt plotte f.eks.
menu'en til venstre på, før der kommer noget asp, for den skal jo være det
lige meget hvad, osv. Altså bare holde igen med de sætninger, der angiver om
brugeren er oprettet eller om der er en fejl. God idé? Eller skal jeg holde
mig til den fejlfindings metode du beskrev så smukt?

Jeg kunne egentlig også bare lave en true side og en false side i sammen
side altså, stadig uden menu osv, for de skal jo stadig være der lige meget
hvad, og så bare skrive selve fejlen til en variablen som den så henter og
skriver hvis den får false, og hvis den ikke får false, så fortsætter den
med at oprettet brugeren. Hvordan lyder det? Noget jeg har overset eller er
det en god nok idé?

Mange tak

__
Flemming Jense



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste