Avatar billede brops Nybegynder
07. juli 2003 - 17:42 Der er 18 kommentarer og
1 løsning

min update sætning virker ikk

jeg har den her update funktion som skal opdatere til min database, posterne den skal opdater er defineret i en form på siden inden.
her er opdate stykket min databaseconnection bliver lavet på hoved-dokumentet:
adminID = (Request.Cookies("admin"))

    sql = "UPDATE admin SET "
    SQL = SQL & navn=request.Form("navn")
    SQL = SQL & Email=request.Form("email")
    SQL = SQL & ommig=request.Form("ommig")
    SQL = SQL & pass=request.Form("pass")
    SQL = SQL &  "WHERE adminID=" + adminID
   
    conn.execute(sql)

database connection:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("db/database.mdb")
%>
men når jeg vil opdatere giver den mig følgende fejl:
Fejltype:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en ugyldig SQL-sætning. "DELETE", "INSERT", "PROCEDURE","SELECT" eller "UPDATE" var ventet.
/clan/ssi_midt/ret_admin_ind.asp, line 14

jeg er ved at omformuler sitet fra Javascript til VBScript... hved java virkede det..
Avatar billede squashguy Nybegynder
07. juli 2003 - 17:49 #1
Guldkorn: når en sql ikke virker, så lav en "response.write sql"

Jeg tror det vil give dig svaret...

(textfelter skal omsluttes af '')
Avatar billede tuctoh Nybegynder
07. juli 2003 - 17:50 #2
sql= "UPDATE admin SET "
    sql= sql& "navn='"&request.Form("navn") &"'"
    sql= sql& "Email='"&request.Form("email")&"'"
    sql= sql& "ommig='"&request.Form("ommig")&"'"
    sql= sql& "pass='"&request.Form("pass")&"'"
    sql= sql&  "WHERE adminID='"  adminID&"'"
Avatar billede squashguy Nybegynder
07. juli 2003 - 17:54 #3
Bemærkning til ovenstående svar:

Du skal ALTID foretage validering af brugerinput. Hvis ikke kan brugeren lave sql injection. http://www.google.com/search?q=sql+injection

Problemet i ovenstående er, at brugeren kan indtaste apostroffer.
Avatar billede brops Nybegynder
07. juli 2003 - 18:03 #4
ok jeg her lidt lost der... men skal nok kigge lidt på det men når jeg ændre det mit til :
sql= "UPDATE admin SET "
    sql= sql& "navn='"&request.Form("navn")&"'"
    sql= sql& "Email='"&request.Form("email")&"'"
    sql= sql& "ommig='"&request.Form("ommig")&"'"
    sql= sql& "pass='"&request.Form("pass")&"'"
    SQL = SQL& "WHERE adminID=" + adminID

OBS sidste line er der hvor den definere den der skal opdateres

så kommer følgende fejl.
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "'admin'Email='admin@admin.dk'ommig='jaja'pass='admin'".
/clan/ssi_midt/ret_admin_ind.asp, line 14
det jeg ikk forstår er at jeg skulle mangle navn men det er med i min update...
Avatar billede nielle Nybegynder
07. juli 2003 - 18:14 #5
Du skal nok sætte nogle mellemrum ind i din SQL streng. Det står altsammen i en stor kompakt blok:

SQL = "UPDATE admin SET"
SQL = SQL & " navn='" & request.Form("navn") & "'"
SQL = SQL & " Email='" & request.Form("email") & "'"
SQL = SQL & " ommig='" & request.Form("ommig") & "'"
SQL = SQL & " pass='" & request.Form("pass") & "'"
SQL = SQL & " WHERE adminID=" + adminID
Avatar billede nielle Nybegynder
07. juli 2003 - 18:16 #6
SQL = "UPDATE admin SET" & _
      " navn='" & request.Form("navn") & "'" & _
      " Email='" & request.Form("email") & "'" & _
      " ommig='" & request.Form("ommig") & "'" & _
      " pass='" & request.Form("pass") & "'" & _
      " WHERE adminID='" + adminID & "'"
Avatar billede brops Nybegynder
07. juli 2003 - 18:24 #7
det har ikk hjulpen noget af det..den vil stadig ikk tage navnet med...
den skriver stadig samme i fejlen...
Avatar billede medions Nybegynder
07. juli 2003 - 18:27 #8
SQL = "UPDATE admin SET" & _
      " [navn]='" & request.Form("navn") & "'" & _
      " [Email]='" & request.Form("email") & "'" & _
      " ommig='" & request.Form("ommig") & "'" & _
      " pass='" & request.Form("pass") & "'" & _
      " WHERE adminID='" + adminID & "'"

//Rune
Avatar billede nielle Nybegynder
07. juli 2003 - 18:28 #9
squashguy's råd (17:49:49) er et godt råd - prøv det!
Avatar billede tuctoh Nybegynder
07. juli 2003 - 18:44 #10
sql= "UPDATE admin SET "
    sql= sql& "navn='"&request.Form("navn") &"',"
    sql= sql& "Email='"&request.Form("email")&"',"
    sql= sql& "ommig='"&request.Form("ommig")&"',"
    sql= sql& "pass='"&request.Form("pass")&"'"
    sql= sql&  "WHERE adminID='"  adminID&"'"
Avatar billede brops Nybegynder
07. juli 2003 - 19:03 #11
både nielle og squashguy hvordan virker det???
jeg kan smide hele koden så kan i se det og evt fortælle hvordan det virker og hvem det er:
<%
 
adminID = -1
    if Request.Cookies("admin") <> "" then
    adminID = (Request.Cookies("admin"))

    sql= "UPDATE admin SET "
    sql= sql& "navn='"&request.Form("navn") &"',"
    sql= sql& "Email='"&request.Form("email")&"',"
    sql= sql& "ommig='"&request.Form("ommig")&"',"
    sql= sql& "pass='"&request.Form("pass")&"'"
    sql= sql&  "WHERE adminID='"  adminID&"'"
   
    conn.execute(sql)
    "response.write sql"
end if
%>
<div align="center"><font size="3" face="Verdana">
  <%
  if (status = OK) then
%>
  </font><font size="3" face="Verdana"> du er har rettet dit bruger info til:
  <br>
  </font>
  <table width="468" border="1" cellspacing="0" cellpadding="0">
    <tr>
      <td width="468">navn</td>
      <td width="468"><%=Request.Form("navn")%></td>
    </tr>
    <tr>
      <td width="468">Rank</td>
      <td width="468"><%=Request.Form("rank")%></td>
    </tr>
    <tr>
      <td width="468"><font size="3" face="Verdana">Email:</font></td>
      <td width="468"><font size="3" face="Verdana"><%=Request.Form("email")%> </font></td>
    </tr>
    <tr>
      <td width="468" height="21">Om dig</td>
      <td width="468"><%=Request.Form("ommig")%></td>
    </tr>
    <tr>
      <td width="468" height="21"><font size="3" face="Verdana">Password:</font></td>
      <td width="468"><font size="3" face="Verdana"><%=Request.Form("pass")%></font></td>
    </tr>
  </table>
  <a href="default.asp"> Tilbage til forside</a>
  <%
else
%>
</div>
<h1 align="center">Fejl</font></h1>
<div align="center">Der opstod en fejl i forbindelse med afsending af dit brugerinfo,
</div>
<p align="center">
  <% end if %>

nu giver den denne fejl:
Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0401)
Slut på sætning var ventet
/clan/ssi_midt/ret_admin_ind.asp, line 12, column 30
sql= sql& "WHERE adminID='" adminID&"'"
Avatar billede eagleeye Praktikant
07. juli 2003 - 19:06 #12
Prøv sådan her med replace af pingerne '

sql= "UPDATE admin SET "
    sql= sql& "navn='" & replace(request.Form("navn"),"'","''") & "', "
    sql= sql& "Email='" & replace(request.Form("email"),"'","''") & "', "
    sql= sql& "ommig='" & replace(request.Form("ommig"),"'","''") & "', "
    sql= sql& "pass='" & replace(request.Form("pass"),"'","''") & "' "
    sql= sql&  "WHERE adminID='" & adminID & "'"



ER adminID  DEFINERET SOM TAL SÅ PRØV DENNE:

sql= "UPDATE admin SET "
    sql= sql& "navn='" & replace(request.Form("navn"),"'","''") & "', "
    sql= sql& "Email='" & replace(request.Form("email"),"'","''") & "', "
    sql= sql& "ommig='" & replace(request.Form("ommig"),"'","''") & "', "
    sql= sql& "pass='" & replace(request.Form("pass"),"'","''") & "' "
    sql= sql&  "WHERE adminID=" & adminID
Avatar billede brops Nybegynder
07. juli 2003 - 19:11 #13
ok adminID er et tal som bliver skrevet som den skal finde i en cookie der er sat og som definere om brugeren er lukket ind
Avatar billede nielle Nybegynder
07. juli 2003 - 19:13 #14
if Request.Cookies("admin") <> "" then
  adminID = (Request.Cookies("admin"))

  sql= "UPDATE admin SET "
  sql= sql& "navn='"&request.Form("navn") &"',"
  sql= sql& "Email='"&request.Form("email")&"',"
  sql= sql& "ommig='"&request.Form("ommig")&"',"
  sql= sql& "pass='"&request.Form("pass")&"'"
  sql= sql&  "WHERE adminID='"  adminID&"'"

  response.write sql  ' <- Her, før fejlen
   
  conn.execute(sql)
end if
Avatar billede brops Nybegynder
07. juli 2003 - 20:00 #15
eagleeye den nederste af dine virkede smidder du et svar får du points men!!!
hvordan validere jeg de intastet data squashguy
det var dig der snakkede om det 30 point til dig oxo eller en anden der kan hjælpe mig med det... jeg har lavet replace på min login men hvordan med resten og hvordan laver jeg så jeg er sikker på de har indtastet en mail i formatet: navn@domain.xxx jeg vil gerne have det placeret i koden fra Kommentar: brops
07/07-2003 19:03:38
Avatar billede eagleeye Praktikant
07. juli 2003 - 20:05 #16
Jeps,

men den jeg har lavet, er der en replace som laver en ping ' om til to pinger ''. I SQL bruges ' til at starte og stoppe en streng præsis på samme måse som " bruge omkring strenge i ASP koden. Skal man havde en ' til databasen skal man skrive to efter hinanden '' så blvier det til en ' i teksten.
Avatar billede brops Nybegynder
07. juli 2003 - 20:07 #17
ok hvad med det med validering af email kan du hjælp med det så er der 60 point til dig:)
Avatar billede eagleeye Praktikant
07. juli 2003 - 20:11 #18
I javascript på form siden eller i ASP koden.??

Her er en function jeg  bruger som er lavet til ASP koden:


Function IsEmail(str)
  Dim ieRegEx
  Set ieRegEx = New RegExp
  ieRegEx.Pattern = "^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"
  IsEmail = ieRegEx.Test(str)
End Function


Og du kalder den sådn her:

email = Request.Form("email")
if isEmail(email) = false then
  Repsonse.Write "Fejl i E-mail adressen prøv igen"
  fejl = true
end if
Avatar billede brops Nybegynder
07. juli 2003 - 20:20 #19
det er lige meget hvor det skal bare være så det er sikkert at imailen er valid... prøver den du smed
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