Avatar billede Slettet bruger
09. januar 2008 - 20:08 Der er 17 kommentarer og
1 løsning

Problemer med at sende bestemt data fra input felt til database.

Jeg har nogle input som sender data til min database.

Mit problem er ikke at sende inputtet til data'en, men at bestemme hvad der må sendes.

jeg har fx et inputfelt som skal sende et telefon nummer.
Jeg det skal være sådan at når når man sender data skal der komme en fejl besked frem når brugeren prøver at sende bogstaver eller når telefonnummeret ikke er 8 tegn langt.

Håber i forstår.

Jeg har i forvejen denne if sætning som sender en fejlbesked hvis brugernavnet ikke er udfyldt:

-------------------
if len(strUSERNAME) = 0 then
fejl = true
session("fejltekst") = session("fejltekst") & "Brugernavnet må ikke være på 0 tegn.<br>"
end if

-------------------


Håber nogen kan hjælpe.
Avatar billede Slettet bruger
09. januar 2008 - 20:12 #1
Lige en ting mere...

Telefon nummeret skal enten være på 0 eller 8 bogstaver.


DDD
Avatar billede nielle Nybegynder
09. januar 2008 - 20:34 #2
Sådan?

Set re = New RegExp
With re
    .Pattern = "^(\d{8})?$"
End With

If Not re.Test(text) = True Then
    session("fejltekst") = session("fejltekst") & "Telefonnummeret skal være 8 cifre, eller ikke udfyldt.<br>"
End If
Avatar billede Slettet bruger
09. januar 2008 - 20:47 #3
Muligvis.
Nu ved jeg ikke rigtigt.

jeg bruger jo strUSERNAME i brugernavn

Hvis jeg skal bruge intFON ind... hvor skal det så stå?
Avatar billede nielle Nybegynder
09. januar 2008 - 20:54 #4
Her:

...

If Not re.Test(intFON) = True Then

...
Avatar billede Slettet bruger
09. januar 2008 - 21:01 #5
Hmm det virker nogenlunde.

Den skriver godt nok fejlbeskeden når man ikke skriver 8 tal.
Desværre så skriver den ingen fejl besked når man skriver bogstaver istedet for tal.

Og selvom fejlen kommer så sender den data til min database.
Avatar billede nielle Nybegynder
09. januar 2008 - 21:12 #6
Det lyder godt nok underligt at den skulle akceptere tegn. Det burde den bestemt ikke?!

Hvad angår at den gemmer i basen, så skyldes det sikkert at der lige skal en:

fejl = true

ind i If-sætningen.
Avatar billede Slettet bruger
09. januar 2008 - 21:16 #7
Jeg havde gættet den med fejl = true

Men så sender den bare mig til en side kan ikke vises

og i stien skriver den bare /False istedet for /test1.asp
Avatar billede nielle Nybegynder
09. januar 2008 - 21:20 #8
Så har du jo nok en fejl i den del af koden som sender brugeren videre ved en fejl.

Hvis du viser den del af koden skal jeg meget gerne hjælpe med den del også. :^)
Avatar billede Slettet bruger
09. januar 2008 - 21:25 #9
Den har virket fint indtil nu det kom ind. Så tror jeg ikke. men her er den:



    if fejl    <> true then
        %><!--#include file="db_open.asp"--><%
          conn.Execute("INSERT INTO test(brugernavn, telefon) Values('" & strUSERNAME & "', " & intFON & ")")
        %><!--#include file="db_close.asp"--><%
    session("tekstfrasidsteside") = session("tekstfrasidsteside") & "Din bruger er nu oprettet, og skal blot aktiveres af en Adminstrator, før du kan benytte den.<br>"
    Response.Redirect("test1.asp")
    else
Response.Redirect("test1.asp?brugernavn=" & strUSERNAME & "&telefon= " & intFON & ")
    end if
Avatar billede nielle Nybegynder
09. januar 2008 - 21:29 #10
Min kode har nu ikke ændret på hvordan din fungere...

Men prøv at rette denne linje:

Response.Redirect("test1.asp?brugernavn=" & strUSERNAME & "&telefon= " & intFON & ")

til:

Response.Redirect("test1.asp?brugernavn=" & strUSERNAME & "&telefon=" & intFON)

så tror jeg at det går bedre.
Avatar billede Slettet bruger
09. januar 2008 - 21:31 #11
Sådan var den også i starten.
Og det virkede indtil den sagde der var en ufærdig streng så tilføjede jeg:
& "

Og så virkede det..

Men prøver lige.
Hvorfor er det man ikke skal havde det med?
Avatar billede Slettet bruger
09. januar 2008 - 21:34 #12
Microsoft VBScript compilation error '800a0409'

Unterminated string constant

/new/test/test2.asp, line 41

Response.Redirect("test1.asp?brugernavn=" & strUSERNAME & "&telefon= " & intFON)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
Avatar billede nielle Nybegynder
09. januar 2008 - 21:34 #13
"-tegn starter og slutter en streng. Så hvis du har

& "

i enden af din streng, så startere du en streng som du aldrig nogensinde slutter.


Desuden havde du et mellemrum for meget i

... "&telefon= " ...

som skulle være:

... "&telefon=" ...
Avatar billede nielle Nybegynder
09. januar 2008 - 21:37 #14
09/01-2008 21:34:04 - så har du et "-teng for meget et eller andet sted tidligere i din kode.
Avatar billede nielle Nybegynder
09. januar 2008 - 21:38 #15
"-tegn skal *altid* komme i par - en i starten af teksten og en i slutningen.

Det gør de ikke her:

Response.Redirect("test1.asp?brugernavn=" & strUSERNAME & "&telefon= " & intFON & ")

- hvor der jo er 5 ialt.
Avatar billede Slettet bruger
09. januar 2008 - 21:46 #16
Ahhhh ja sevfølgelig..
Havde glemt den første " som står før test1.asp

Se nu virker det...
Det var en fejl fra min side.
Kan bare ikke helt forstå det, jeg har nemlig ikke rørt den linje.
Men det er også lige meget.

Har lige et spørgsmål mere.
Jeg vil gerne lære hvad det forskellige ting betyder.

Kan du forklare mig helt præcis hvad denne sætning gør:

Set re = New RegExp
With re
    .Pattern = "^(\d{8})?$"
End With

ex hvad gør: New RegExp
og hvad gør: .pattern = "^ (\d(8))?$"

Skal jo lære det og ikke bare kopier :0D

Men tusind tak send det lige i et svar.
Avatar billede nielle Nybegynder
09. januar 2008 - 22:09 #17
Løsningen bruger "regulære udtryk". Dem har jeg skrevet 4 artikler om her på Eksperten, og du burde i hvert fald læse den 1. som giver grundteorien og den 3. som viser syntaksten i nogle forskellige sprog, herunder ASP:

http://www.eksperten.dk/artikler/1156
http://www.eksperten.dk/artikler/1160



Og så de konkrete spørgsmål:

> ex hvad gør: New RegExp

Den opretter en regulært udtryk. Regexp' bruges til at finde mønstre i tekst - f.eks. mønsteret af 8 ciffre som står i rækkefølge efter hinanden - dvs. noget som ligner et telefonnummer.

> .pattern = "^ (\d(8))?$"

Den sætter mønskeret som regesp'en skal kigge efter. Iøvrigt skrev jeg altså

.pattern = "^(\d(8))?$"

uden mellemrum mellem ^ og (.



Mønsteret er;

^(\d(8))?$

- og det skal tolkes sådan her:

\d  - betyder "digit", eller "ciffer" på dansk.

\d{8} - betyder derfor "præcis 8 cifre".

(\d{8})? - betyder "præcis 8 cifre eller ingenting".

^ - betyder "starten af teksten".

$ - betyder "slutninen af teksten"

^(\d{8})?$ - betyder "starten af teksten, efterfulgt af præcis 8 cifre eller slet ingenting, efterfulgt af slutningen på teksten".

Eller blot "ingenting, eller 8 præcis cifre".

Håber at det forklarede det?
Avatar billede Slettet bruger
09. januar 2008 - 22:16 #18
Hold da fast...
Du er godt nok god til at forklare....

1000 tak..

Det må jeg lege lidt med..

Og læse dine artikler.

Super fedt. Tak
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