Avatar billede lindsten Nybegynder
28. marts 2002 - 19:50 Der er 9 kommentarer og
1 løsning

if-bet. tekststreng fra <form> sammmenlignet m tekst fra accessDB

Jeg henter Brugernavn og Password fra en form via Request.Form(... og gennemløber databasen 'ecom' for at se om der er en person med det pågældende brugernavn. Jeg godt kan udskrive både variablen 'Bruger' og 'brugerN', men problemet er at i if-betingelse fungere det ikke - "if(brugerN == Bruger)". Jeg håber der er en der kan hjælpe mig. Her er koden.

<% @Language = Javascript %>
<%
Bruger = Request.Form("Bnavn");
Pass = Request.Form("Pword");
connection = Server.CreateObject("ADODB.Connection");
connection.Open("eCom");
res = connection.execute("SELECT * FROM forfatter");
while (!res.EOF){
  brugerN = res.Fields("brugernavn");
  passW = res.Fields("password");
  if(brugerN == Bruger){
    Response.write(brugerN +" " +passW +"<br>");
    break;
  }
  res.MoveNext();
}
%>
Avatar billede coltau Juniormester
28. marts 2002 - 20:22 #1
Variablene skal sikkert trimmes for blanke tegn ellers er der et problem med store og små bogstaver.
Jeg bruger VB og kender ikke kommandoerne til det. I VB ville man skrive:
  if(LCase(Trim(brugerN)) == LCase(Trim(Bruger))

Håber du selv kender kommandoerne.
Avatar billede coltau Juniormester
28. marts 2002 - 21:12 #2
Så fandt jeg til små bogstaver.

Bruger = Request.Form("Bnavn").toLowerCase();
og her
brugerN = res.Fields("brugernavn").toLowerCase();
Avatar billede coltau Juniormester
28. marts 2002 - 22:10 #3
Er det ikke bedre at lade Databasen finde brugeren for dig. ?

res = connection.execute("SELECT * FROM forfatter WHERE brugernavn=" + Bruger);
if (!res.EOF){
  Response.write(res.Fields("brugernavn") + " " + res.Fields("password") +"<br>");
} else
{
// Findes ikke
}
Avatar billede lindsten Nybegynder
28. marts 2002 - 22:29 #4
Når jeg prøver denne metode år jeg en fejl. Objekterne, Request.Form og res.Fields, understøtter ikke denne egenskab eller metode.
Avatar billede coltau Juniormester
28. marts 2002 - 23:27 #5
I hvilken linie. Det lyder som om at første linie skal ændres fra.
<% @Language = Javascript %>
til:
<% @Language = JScript %>
Avatar billede coltau Juniormester
28. marts 2002 - 23:29 #6
Hvis du siger at koden som du viser ikke fejler men bare viser forkert så skal nedenstående kode virke.

<% @Language = JScript %>
<%
Bruger = Request.Form("Bnavn");
Pass = Request.Form("Pword");
connection = Server.CreateObject("ADODB.Connection");
connection.Open("eCom");
res = connection.execute("SELECT * FROM forfatter");
res = connection.execute("SELECT * FROM forfatter WHERE brugernavn=" + Bruger);
if (!res.EOF){
  Response.write(res.Fields("brugernavn") + " " + res.Fields("password") +"<br>");
} else
{
// Findes ikke
}%>
Avatar billede coltau Juniormester
28. marts 2002 - 23:29 #7
ok - en linie for meget. !

res = connection.execute("SELECT * FROM forfatter"); ' Skal slettes
Avatar billede lindsten Nybegynder
28. marts 2002 - 23:44 #8
Men det gør den ikke. Et jeg får fejl i sql-sætningen, derudover kan jeg ikke få det til at virke med if(!res.EOF). Hvad siger den sætning. Kan den anvendes i en if-konstruktion.
Jeg syntes det er nogle gode forslag men det virker ikke, håber du ikke er blvet trat af at se på problemet. Jscript er scriptsprog fra Microsoft, mens JavaScript er fra Netscape.
Avatar billede lindsten Nybegynder
29. marts 2002 - 08:59 #9
hej coltau
Måske var jeg en smule trat igår. Her en undskyldning for ikke at acceptere dit sidste forslag. Hvordan giver jeg dig nu point, jeg er ny og det er første gang jeg spørger om hjælp ?. Dit sidste kode forslag virker nemlig, hvis sql-sætningen ændres til feks:

res = connection.execute("select * from forfatter where forfatter.brugernavn = '" + Request.Form("Bnavn") + "'");

Kan du hjælp med if(!res.EOF) - jeg forstår ikke testen. Siger den at, hvis der er en record i sætte så udfør eller hvad ?
Avatar billede coltau Juniormester
29. marts 2002 - 12:37 #10
if(!res.EOF)
Hvis(if) ikke(!) slut på fil(res.EOF)

Hvis udtrækket er tomt vil EOF være == true ellers vil EOF være == false.

Den anvendes også til at gennemløbe et recordset som i dit eget eksempel hvor den hænger sammen med res.MoveNext, som flytter pegepinden til næste record.
Når pegepinden står på sidste record og du udføre linien: res.MoveNext får du ikke en ny record - men res.EOF skifter fra false til true og while-løkken slutter.

Håber det giver lidt mening. Jeg aner ikke hvordan man giver point - men det er noget med at vælge et svar og så lukke. ?

PS. Du skrev: "Jscript er scriptsprog fra Microsoft, mens JavaScript er fra Netscape"
Jeg fandt ud af at det er ligegyldig om man anvender <% @Language = JScript %> eller <% @Language = JavaScript %> Det giver samme resultat.
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