Avatar billede kanding Nybegynder
14. september 2000 - 01:19 Der er 25 kommentarer og
2 løsninger

sammensætning af string og variabler

Jeg har denne linie som fungere
SQL = \"DELETE FROM mailingliste where id =\"& request(\"id\")
conn.execute (SQL)


Så har jeg denn line som ikke fungere. Hvad er der galt og hvad er reglen for sammensætning af en string med en variabel?

SQL = \"UPDATE mailingliste SET info=\"&request(\"info\")&\"WHERE id =\"& request(\"id\")

Hvis jeg skriver sådan her virker den fint
SQL = \"UPDATE mailingliste SET info=& \'john\' WHERE id =\"& request(\"id\")


John
Avatar billede styrmand Nybegynder
14. september 2000 - 06:43 #1
Nu skriver du ikke, hvilken fejlmeddelelse du får, men prøv denne
SQL = \"DELETE FROM mailingliste where id =\'\"& request(\"id\") & \"\'\"
Det er også muligt at dit id ikke eksisterer.
Endelig er det muligt at din database kræver * efter Delete.

Avatar billede hirtshals Nybegynder
14. september 2000 - 08:21 #2
strSQL = \"Delete * from Login WHERE myID= \" & Request(\"myID\")

Bemærk  >>>>  *  samt  >>>><  myID= \" &

myID er Autonummeringsfelt, dette er testet og virker på en Access base
Avatar billede kanding Nybegynder
14. september 2000 - 08:57 #3
Tak for responsen, men delete funktionen virker fint nok. Det er update funktionen der ikke virker. Hvis jeg skriver:
SQL = \"UPDATE mailingliste SET info= \'OK\' WHERE id =\"& request(\"id\")
conn.execute (SQL)
så virker det. Der står nu OK i det felt der hedder info.

Men hvis jeg requester det som står i info feltet og sender det til access for at opdatere sker der ikke noget eller jeg får en \"expected end of..\" fejl. Jeg har også prøvet at requested data fra et andet felt end info fx. navn feltet og sende det, men jeg tror at det er min sammen sætning af string og variabel. det er denne linie der ikke virker:
SQL = \"UPDATE mailingliste SET info=\"&request(\"info\")&\"WHERE id =\"& request(\"id\")
Avatar billede nktarget Nybegynder
14. september 2000 - 09:18 #4
Hvad hvis du skriver:

SQL = \"UPDATE mailingliste SET info=\'\"&request(\"info\")&\"\' WHERE id =\"& request(\"id\")

Læg mærke til de to \'er. Dem har du jo med i den linie der virker. Det skal du have om tekst i en SQL-sætning, men ikke om tal
Avatar billede sone Nybegynder
14. september 2000 - 10:49 #5
hirtshals: Jeg klapper lige min kæphest ;-)

Der er ikke * i SQL-syntaksen for DELETE:

DELETE FROM tabel WHERE ....

man kan ikke slette et enkelt felt, man sletter altid hele rækken - derfor giver * heller ikke mening!
Avatar billede kanding Nybegynder
14. september 2000 - 11:05 #6
Jo det har jeg også prøvet. Her får jeg ikke nogen fejl, men der sker bare ikke noget. Hvis jeg laver en
SQL = \"UPDATE mailingliste SET info=\'\"&request(\"navn\")&\"\' WHERE id =\"& request(\"id\")
response.write SQL
så kan jeg se hvad SQL sætningen bliver til og her får jeg:
UPDATE mailingliste SET info=\'\' WHERE id =32

Den er simpelthen tom.

en sætning som denne et andet sted i scriptet virker fint

SQL = \"INSERT INTO mailingliste ( navn, adr, post, Bynavn, telf, telf2, email, info ) values (\'\" & request(\"navn\") & \"\',\'\" & request(\"Adr\") & \"\',\'\" & request(\"post\") & \"\',\'\" & request(\"Bynavn\") & \"\',\'\" & request(\"telf\") & \"\',\'\" & request(\"telf2\") & \"\',\'\" & request(\"email\") & \"\',\'\" & request(\"info\") & \"\')\"
conn.execute (SQL)

så det er ikke noget med at jeg ikke kan requeste.

Jeg synes at det er møøøøøøøøsteeeesk!
Avatar billede nktarget Nybegynder
14. september 2000 - 11:09 #7
Hvad med at skrive request.form eller request.querystring
Avatar billede beasto Nybegynder
14. september 2000 - 12:21 #8
Husker du pinger(=\') rundt om dine variabler ??
Avatar billede kanding Nybegynder
14. september 2000 - 12:45 #9
til spørgsmål 1: Hvad med at skrive request.form eller request.querystring
Jeg går udfra at request.form for allle felter?
Ville syntaksen så blive:
SQL = \"UPDATE mailingliste\" & request.form & \" WHERE id =\"& request(\"id\")
Det vil jeg lige prøve. Men det er lidt spild at sende al data afsted bare for at opdatere et felt.

Til spørgsmål 2:Husker du pinger(=\') rundt om dine variabler ??
Jeg har dene syntaks:
SQL = \"UPDATE mailingliste SET info=\'\"&request(\"navn\")&\"\' WHERE id =\"& request(\"id\")
Min response.write viser også de 2 pinger men der er bare ikke noget i dem.

Endnu engang tak for kampen. Kan det være noget andet i koden som er galt?
Hvis nogen er interesseret kan jeg sende koden så I kan kigge den igennem.

John

Avatar billede beasto Nybegynder
14. september 2000 - 12:49 #10
Jeg tror der er problemer med anførselstegnene i info...

Prøv det her
læderlap = request(\"navn\")
SQL = \"UPDATE mailingliste SET info=\'\"&læderlap&\"\' WHERE id =\"& request(\"id\")



/beast

Avatar billede kanding Nybegynder
14. september 2000 - 13:08 #11
Jeg tror ikke at man kan bruge æøå i variabler. Hvis jeg laver den om til
lap = request(\"navn\")
SQL = \"UPDATE mailingliste SET info=\'\"&lap&\"\' WHERE id =\"& request(\"id\")
response.write SQL

får jeg satdig en tom streng der og ja jeg har indtastet noget i feltet navn :-)
UPDATE mailingliste SET info=\'\' WHERE id =32

jeg har også prøvet response.write lap og der kan jeg se at lap er tom. Som sagt så er der et andet sted i scriptet hvor request(\"navn\") fungerer ok.
Jeg ved ikke hvor jeg skal lede <sigh>
Avatar billede beasto Nybegynder
14. september 2000 - 13:11 #12
Du har selvfølgelig ret...


Kan du ikke smide hele scriptet på ??

/beast
Avatar billede kanding Nybegynder
14. september 2000 - 13:14 #13
OK Here goes. Bemærk at jeg laver en test med reponse.write hvor jeg sætter prut = request(\"id\")
og prøver at vise både den og lap. Jeg får kun prut\'s værdi.
-- SCRIPTET --

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
conn.Open \"DBQ=\"&(Server.MapPath(\".\")) &\"\\mailing.mdb; DefaultDir=DBQ=\"&(Server.MapPath(\".\")) &\"\\;Driver={Microsoft Access Driver (*.mdb)};\"
session(\"login\") = \"ok\"
%>

<HTML>
<HEAD>
<TITLE>Mailingliste</TITLE>
</HEAD>
<BODY BGCOLOR=\"#FFFFFF\" TEXT=\"#000000\">
<%
\' den er void i starten
if request(\"mode\") = \"1\" then

SQL = \"INSERT INTO mailingliste ( navn, adr, post, Bynavn, telf, telf2, email, info ) values (\'\" & request(\"navn\") & \"\',\'\" & request(\"Adr\") & \"\',\'\" & request(\"post\") & \"\',\'\" & request(\"Bynavn\") & \"\',\'\" & request(\"telf\") & \"\',\'\" & request(\"telf2\") & \"\',\'\" & request(\"email\") & \"\',\'\" & request(\"info\") & \"\')\"
conn.execute (SQL)
response.write \"<BR><FONT FACE=\'Arial\' SIZE=\'6\' COLOR=\'#000000\'><STRONG><CENTER>I er nu blevet tilmeldt adresselisten. Velkommen til</CENTER></STRONG></FONT>\"
%>
<h4 align=\"center\"><a href=\"mailingliste.asp\" target=\"\">Tilbage til adresselisten</a>
<%
else
if session(\"login\") = \"ok\" then

if request(\"mode\") = \"slet\" then
SQL = \"DELETE FROM mailingliste where id =\"& request(\"id\")
conn.execute (SQL)
end if
if request(\"mode\") = \"update\" then
lap = request(\"navn\")
prut = request(\"id\")
SQL = \"UPDATE mailingliste SET info=\'\"&lap&\"\' WHERE id =\"& prut 
response.write prut & lap
\'conn.execute (SQL)
end if %> </h4>
<h1 align=\"center\"><font size=\"5\" face=\"Arial, Helvetica, sans-serif\">Adresse
  liste for Skovgårds skolen 1. b</font></h1>
<TABLE BORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"2\" width=\"958\" height=\"80\">
  <TR bgcolor=\"#CCCCCC\" bordercolor=\"#666666\">
    <TD>&nbsp; </TD>
    <TD>&nbsp; </TD>
    <TD> <FONT FACE=\"Arial\" SIZE=\"3\" COLOR=\"#000000\"> <STRONG> Navn </STRONG>
      </FONT> </TD>
    <TD> <FONT FACE=\"Arial\" SIZE=\"3\" COLOR=\"#000000\"> <STRONG>Adresse </STRONG>
      </FONT> </TD>
    <TD><font face=\"Arial\" size=\"3\" color=\"#000000\"><strong>Post</strong></font></TD>
    <TD><font face=\"Arial\" size=\"3\" color=\"#000000\"><strong>By</strong></font></TD>
    <TD> <font face=\"Arial\" size=\"3\" color=\"#000000\"><strong>Telefon</strong>
      2 </font></TD>
    <TD><font face=\"Arial\" size=\"3\" color=\"#000000\"><strong>Telefon2</strong></font></TD>
    <TD><font face=\"Arial\" size=\"3\" color=\"#000000\"><strong>Email</strong></font></TD>
    <TD><font face=\"Arial\" size=\"3\" color=\"#000000\"><strong>Bem&aelig;rkninger</strong></font></TD>
  </TR>
  <%
SQL = \"SELECT * from mailingliste ORDER BY Navn\"
set slet = conn.execute( SQL )
do while not slet.eof
on error resume next %>
  <TR bgcolor=\"#CCCCCC\" bordercolor=\"#666666\">
    <TD> <FONT FACE=\"Arial\" SIZE=\"3\" COLOR=\"#000000\"> <A HREF=\"mailingliste.asp?id=<% = slet(\"id\") %>&mode=slet\">Slet</A>
    </TD>
    <TD> <FONT FACE=\"Arial\" SIZE=\"3\" COLOR=\"#000000\"> <A HREF=\"mailingliste.asp?id=<% = slet(\"id\") %>&mode=update\">Opdater</A>
    </TD>
    <TD> <FONT FACE=\"Arial\" SIZE=\"3\" COLOR=\"#000000\"> <% = slet(\"navn\") %> </FONT>
    </TD>
    <TD> <FONT FACE=\"Arial\" SIZE=\"3\" COLOR=\"#000000\"> <% = slet(\"adr\") %> </FONT>
    </TD>
    <TD> <FONT FACE=\"Arial\" SIZE=\"3\" COLOR=\"#000000\"> <% = slet(\"post\") %> </FONT>
    </TD>
    <TD> <FONT FACE=\"Arial\" SIZE=\"3\" COLOR=\"#000000\"> <% = slet(\"Bynavn\") %> </FONT>
    </TD>
    <TD> <FONT FACE=\"Arial\" SIZE=\"3\" COLOR=\"#000000\"> <% = slet(\"telf\") %> </FONT>
    </TD>
    <TD> <FONT FACE=\"Arial\" SIZE=\"3\" COLOR=\"#000000\"> <% = slet(\"telf2\") %> </FONT>
    </TD>
    <TD> <FONT FACE=\"Arial\" SIZE=\"3\" COLOR=\"#000000\"> <% = slet(\"email\") %> </FONT>
    </TD>
    <TD> <FONT FACE=\"Arial\" SIZE=\"3\" COLOR=\"#000000\"> <% = slet(\"info\") %> </FONT>
    </TD>
  </TR>
  <%
slet.movenext
loop %>
</TABLE>   
<% conn.close
end if
%>
<CENTER> </p>
<table border=\"0\" cellspacing=\"0\" cellpadding=\"2\">
  <tr>
    <td colspan=\"2\" align=\"CENTER\"> <font face=\"Arial\" size=\"2\" color=\"#000000\">
      <strong>Tilmeld dig Adresselisten</strong> </font> </td>
  </tr>
  <form action=\"mailingliste.asp\" method=\"POST\">
    <input type=\"hidden\" name=\"mode\" value=\"1\">
    <br>
    <tr>
      <td> <strong> <font face=\"Arial\" size=\"3\" color=\"#000000\"> Navn: </font>
        </strong> </td>
      <td>
          <input type=\"text\" name=\"navn\" size=\"40\"><br>
      </td>
    </tr>
    <tr>
      <td> <strong> <font face=\"Arial\" size=\"3\" color=\"#000000\"> Adresse: </font>
        </strong> </td>
      <td>
        <input type=\"text\" name=\"adr\" size=\"50\"><br>
      </td>
    </tr>
    <tr>
      <td> <strong> <font face=\"Arial\" size=\"3\" color=\"#000000\">Post nr: </font>
        </strong> </td>
      <td>
        <input type=\"text\" name=\"post\" size=\"10\"><br>
      </td>
    </tr>
    <tr>
      <td> <strong><font face=\"Arial\" size=\"3\" color=\"#000000\">By: </font>
</strong> </td>
      <td>
          <input type=\"text\" name=\"Bynavn\" size=\"50\"><br>
      </td>
    </tr>
    <tr>
      <td><strong><font face=\"Arial\" size=\"3\" color=\"#000000\">Telefon: </font>
</strong> </td>
      <td >
        <input type=\"text\" name=\"telf\" size=\"50\"><br>
      </td>
    </tr>
    <tr>
      <td><strong><font face=\"Arial\" size=\"3\" color=\"#000000\">Telefon2: </font>
</strong> </td>
      <td>
        <input type=\"text\" name=\"telf2\" size=\"50\"><br>
      </td>
    </tr>
    <tr>
      <td><strong><font face=\"Arial\" size=\"3\" color=\"#000000\">E-mail: </font>
</strong> </td>
      <td>
          <input type=\"text\" name=\"email\" size=\"50\"><br>
      </td>
    </tr>
    <tr>
      <td><strong><font face=\"Arial\" size=\"3\" color=\"#000000\">Bem&aelig;rkninger: </font>
</strong> </td>
      <td>
        <textarea name=\"info\" cols=\"50\"></textarea>
        <br>
      </td>
    </tr>
    <tr>
      <td VALIGN=\"TOP\">&nbsp;
</td>
      <td align=\"RIGHT\">
        <input type=\"submit\" value=\"-- Tilmeld --\">
      </td>
    </tr>
  </form>
</table>
<p> <%
end if
%>
<p><a href=\"visnyheder.asp\">Til opslagstavlen</a>
</BODY>
</HTML>
Avatar billede beasto Nybegynder
14. september 2000 - 13:27 #14
Prøv at sætte lap til noget fast (eks Hildur ;-D )


/Beast
Avatar billede kanding Nybegynder
14. september 2000 - 13:32 #15
OK 32hildur er responsen. Bemærk her at lap sættes med \" \" og ikke \' \'
lap = \"hildur\"
prut = request(\"id\")
response.write prut & lap

Hvad er forskellen på \" og \'
Avatar billede beasto Nybegynder
14. september 2000 - 13:37 #16
Jeg er ret sikker på at det hænger sådan sammen at
SQL bruger \' til at indhegne strenge. \" bruges til at vise IIS´en at her slutter / begynder strengen.

Bliver det smidt i DB´en hvis
Lap = \"hildur\"
???

/beast
Avatar billede kanding Nybegynder
14. september 2000 - 14:28 #17
Ja og det rigtige sted. Det gjorde den nu også før da jeg bare skrev OK direlte i syntaksen. Det hele kogt ned. Requesten får ikke fat i feltets data. Kan det have noget feltet at gøre? Nej forresten et andet sted virker det OK. Damn...
Avatar billede stig3 Mester
14. september 2000 - 14:35 #18
Prøv som foreslået at skrive request.form(\"navn\") hvis du bruger method=\"post\" eller request.querystring(\"navn\") hvis du bruger method=\"get\"
Avatar billede beasto Nybegynder
14. september 2000 - 14:37 #19
Jeg er overbevist om at stig3 har fat i noget rigtigt, fejlen er ihvertfald ikke i SQL men i requestet.

/beast
Avatar billede kanding Nybegynder
14. september 2000 - 14:58 #20
Ingen af dem gav noget resultat. Jeg sætter: <form action=\"mailingliste.asp\" method=\"POST\">
nede i det table hvor man indskriver sine data. Se evt. i hele koden længere oppe.
Kan det have noget at gøre med at IF/THEN er før table? Nej vel, det ville være tåbeligt. Jeg må ud at læse om reguest funktionen.
Avatar billede stig3 Mester
14. september 2000 - 15:07 #21
Når du bruger post burde den kunne trækkes ud med request.form(\"navn\").

Et skud i blinde....
Du navngiver et af dine tekstfelter post. Jeg ved ikke om det kunne gøre noget ?

Avatar billede stig3 Mester
14. september 2000 - 15:10 #22
Ellers prøv at hente værdien ind i en variabel i toppen af scriptet. Jeg plejer selv at lægge alle værdierne ind i variabler.

navn = request.querystring(\"navn\")

og så brug variablen i resten af scriptet.
Avatar billede stig3 Mester
14. september 2000 - 15:11 #23
hov
navn = request.form(\"navn\")
Avatar billede kanding Nybegynder
14. september 2000 - 15:22 #24
1. Du navngiver et af dine tekstfelter post. Jeg ved ikke om det kunne gøre noget.
***Du har ret her. Det har jeg været udefor før med en der hed by. Jeg tror ikke at den har indflydelse på dette problem, men den skal rettes, tak
2. Ellers prøv at hente værdien ind i en variabel i toppen af scriptet.
** Det vil jeg prøve. Godt forslag.
3.  hov navn = request.form(\"navn\") 
Hvad mener du, at ASP bliver forvirret over variablen navn og string navn eller?
Avatar billede stig3 Mester
14. september 2000 - 15:25 #25
jeg kom til at skrive request.querystring(\"navn\"), men eftersom du bruger method=post skal det være request.form(\"navn\") i stedet.
Avatar billede kanding Nybegynder
19. september 2000 - 16:10 #26
Til alle der har hjulpet, tak. Problemet er endnu ikke løst og jeg har ikke arbejdet med det på det sidste. Jeg forstår ikke hvorfor request.form(\"navn\") ikke giver noget. Jeg ville bare lige melde tilbage at jeg ikke har glemt Jer. Jeg arbejder nok videre engang i næste uge.
Avatar billede stig3 Mester
19. september 2000 - 16:16 #27
På et tidspunkt kunne jeg ikke bruge post pga noget rettighedsbøvl. Hvis jeg havde været inde på en side med rettigheder på ville browseren ikke acceptere at post\'e.

Det var en IIS 4.0
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