webForumDet fria alternativet
Logga in / Bli medlem

Databas/QueryString problem

ASP

26 svar · 285 visningar · startad av ConnyFox

Medlem sedan aug. 20011 087 inlägg
Trådstart#1

Bör väll börja med att jag e VÄLDIGT nybörjare med asp och databaser så d kan vara djävligt grova missar här. behöver hur som helst veta vad som e fel på scriptet för d funkar inte o jag har noll koll.. ;)

Ok jag har tre olika sidor
Text_admin.asp, text_form.asp och text_change.asp

text_admin.asp
listar upp alla databas inlägg och ger varje inlägg en länk för att ändra innehållet.

<%
RecSet.MoveFirst
Do until RecSet.EOF
%>
<tr><td>
<img src="bilder/<%=RecSet("bild")%>.gif"> 
</td><td>
<b><%=RecSet("namn")%></b> : <%=RecSet("texterna")%>
</td><td width="50">
 - <a href="text_delete.asp?ID=<%=RecSet("ID")%>">Ta Bort</a><br>
 - <a href="text_form.asp?ID=<%=RecSet("ID")%>" target="iframe">Ändra</a>
<br>
</td></tr>

<%
RecSet.MoveNext
loop

RecSet.Close
connection.Close
%>

text_form.asp
ska ta imot id nummer från länken i admin till en form och sedan skicka vidare innehållet i formen och id nummret till en sida som ändrar inlägget i databasen

<form action="text_change.asp?ID=<% =Request.Querystring("id") %>" method="post">
<input name="texterna" size="20">
<a href="javascript:document.add.submit()"><img SRC="bilder/skicka.gif" name="skicka" value="Skicka" class="input"></a>
<a href="javascript:document.add.reset()"><img SRC="bilder/radera.gif" name="radera" value="Radera" class="input"></a>
</form>

text_change.asp
Ska alltså ändra inlägget med det id numret och kolumnen texter till det som skickas från text_form.asp

<%
database = Server.MapPath("text.mdb")
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& database

Set RecSet = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM texter WHERE texterna LIKE '"& Request.Querystring("id")("edit") &"'"
RecSet.Open SQL, Connection, 3, 3

RecSet.Uppdate
RecSet.Close
Connection.Close

response.redirect "text_admin.asp"
%>
Medlem sedan dec. 200012 464 inlägg
#2

Hur har du tänkt att det skall fungera när man gör ändringar?
Nu lägger du aldrig ut några fält där man kan editera värdena.

t.ex.

text_form.asp

<%
response.buffer=true
database = Server.MapPath("text.mdb")
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& database
set rs = connection.execute("select name,texterna from texter where id = " & request.querystring("id"))

if not rs.eof then
%>
 <form action='UPDATE.ASP' method='POST'>
 <input type='TEXT' name='NAMN' value='<%=rs("namn")%>'>
 <input type='TEXT' name='TEXTERNA' value='<%=rs("texterna")%>'>
 <input type='HIDDEN' name='ID' value='<%=request.querystring("id")%>'>
 <input type='SUBMIT' value='Uppdatera'>
<%
else
response.write "Den posten finns inte!"
response.redirect "text_admin.asp"
end if
rs.close
Connection.close
%>

text_change.asp

<%
database = Server.MapPath("text.mdb")
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& database

SQL = "Update texter set name = '" & replace(request.form("name"),"'","''") & "','" & _
 replace(request.form("name"),"'","''") & "'" & _
" WHERE id = " & Request.Form("id")

connection.execute sql,,128
Connection.Close

response.redirect "text_admin.asp"
%>

Första lektionen: Använd aldrig recordset för att göra uppdateringar.

Medlem sedan aug. 20011 087 inlägg
#3

tack men jag får ett error på denna raden, varför?

set RecSet = connection.execute("select name,texterna where id = " & request.querystring("id")

Kompileringsfel i Microsoft VBScript fel '800a03ee'

')' förväntas.

/StajlText 1.0/text_form.asp, rad 16

set RecSet = connection.execute("select name,texterna where id = "')' & request.querystring("id")
------------------------------------------------------------------^

Medlem sedan dec. 200012 464 inlägg
#4

Det står ju precis vad som är fel.

set RecSet = connection.execute("select name,texterna where id = " & request.querystring("id"))
Medlem sedan aug. 20011 087 inlägg
#5

Hehe jo jag har fixat d nu missade ett ")" ;)

men nu får jag ett annat fel..

Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'

[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'texterna where id ='.

/StajlText 1.0/text_form.asp, rad 6

Medlem sedan aug. 20011 087 inlägg
#6

Jag är som sagt nybörjare på detta o fattar typ ingenting ;) *skyller på* hehe

Medlem sedan feb. 20012 412 inlägg
#7

Hej,

är fältet id av text eller numerisk typ?

red:

är det av texttyp bör det vara:

set RecSet = connection.execute("select name,texterna where id = '" & request.querystring("id") & "' ")

kolla också så att fälten är rättstavade

mvh Jörgen :)

Medlem sedan aug. 20011 087 inlägg
#8

Asså jag börjar fundera på om d kan vara så att sidan känner av att det sitter en inkompetent djävel här o ger mig massa fel bara för att djävlas!!

nu får jag detta..

Kompileringsfel i Microsoft VBScript fel '800a03ee'

')' förväntas.

/StajlText 1.0/text_form.asp, rad 6

set RecSet = connection.execute("select name,texterna where id = '" & request.querystring("id")"'")
-----------------------------------------------------------------------------------------------^

VAD E FEL? *ARGH* blir så trött på detta hehe *dunkar huvudet i skärmen så webkameran flyger all världens väg*

Medlem sedan dec. 200012 464 inlägg
#9

Det ser mer ut som om request.querystring("id") inte innehåller något värde. Du får kolla på den sida som länkar till text_form att det kommer med i länken.

Medlem sedan feb. 20012 412 inlägg
#10

Kolla på min kod ovan, du har glömt ett &

mvh Jörgen :)

Medlem sedan dec. 200012 464 inlägg
#11

Id är väl en räknare?

Medlem sedan aug. 20011 087 inlägg
#12

Detta är min kod nu, är nått fel?

<%
response.buffer = true
database = Server.MapPath("text.mdb")
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& database
set RecSet = connection.execute("select name,texterna where id = '" & request.querystring("id") & "'")
if not RecSet.eof then
%>

<html>
<head>
<title>Untitled</title>
<link rel="stylesheet" href="mall.css">
</head>

<body topmargin="0" leftmargin="0">

<form action="text_change.asp" method="POST">
<input type="TEXT" name="NAMN" value="<%=rs("namn")%>">
<input type="TEXT" name="TEXTERNA" value="<%=rs("texterna")%>">
<input type="HIDDEN" name="ID" value="<%=request.querystring("id")%>">
<input type="SUBMIT" value="Uppdatera">
<%
else
response.write "Den posten finns inte!"
response.redirect "text_admin.asp"
end if
rs.close
Connection.close
%>

Medlem sedan feb. 20012 412 inlägg
#13

Med tanke på att koden från början var:

SQL = "SELECT * FROM texter WHERE texterna LIKE '"& Request.Querystring("id")("edit") &"'"

fick jag känslan av att id är av typen text, men det är nog högst troligt att querystringen är tom, precis som LarsG säger.

red: om värdet kommer från ett formulär enligt koden ovan bör det vara request.form("id") istället för request.querystring("id")

mvh Jörgen :)

Medlem sedan dec. 200012 464 inlägg
#14

Det beror på vad id är för datatyp. Om det är en räknare så skall du inte ha med apostrofer kring sökvärdet.

Sen så skapar du ett recordset som du kallar för recset men när du lägger ut värden i fälten så använder du namnet rs. Du får ändra så att det blir samma namn överallt.

Medlem sedan aug. 20011 087 inlägg
#15

Jao ID är en Räknare och den funkar som den ska!

Här är länken som länkar till text_form.asp

<a href="text_form.asp?ID=<%=RecSet("ID")%>" target="iframe">Ändra</a>

Det är för att text_form.asp ska veta vilket databas inlägg som skall ändras

Medlem sedan feb. 20012 412 inlägg
#16

okey, då ska det vara nästan så som LarsG skrev från början:

set RecSet = connection.execute("select name,texterna where id = " & request.form("id"))
Medlem sedan dec. 200012 464 inlägg
#17

Tabellnamnet kom aldrig med i select-frågan!

<%
response.buffer = true
database = Server.MapPath("text.mdb")
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& database
set RecSet = connection.execute("select name,texterna [b] from texter [/b] where id = " & request.querystring("id") )
if not RecSet.eof then
%>

<html>
<head>
<title>Untitled</title>
<link rel="stylesheet" href="mall.css">
</head>

<body topmargin="0" leftmargin="0">

<form action="text_change.asp" method="POST">
<input type="TEXT" name="NAMN" value="<%=recset("namn")%>">
<input type="TEXT" name="TEXTERNA" value="<%=recset("texterna")%>">
<input type="HIDDEN" name="ID" value="<%=request.querystring("id")%>">
<input type="SUBMIT" value="Uppdatera">
<%
else
response.write "Den posten finns inte!"
response.redirect "text_admin.asp"
end if
rs.close
Connection.close
%>
Medlem sedan aug. 20011 087 inlägg
#18

haha vafan kan inte vara NÅGOT som e rätt i min kod *asg*

<%
response.buffer = true
database = Server.MapPath("text.mdb")
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& database
set RecSet = connection.execute("select name,texterna FROM texter where id = " & request.querystring("id") )
if not RecSet.eof then
%>

<html>
<head>
	<title>Untitled</title>
	<link rel="stylesheet" href="mall.css">
</head>

<body topmargin="0" leftmargin="0">

<form action="text_change.asp" method="POST">
<input type="TEXT" name="NAMN" value="<%=rs("namn")%>">
<input type="TEXT" name="TEXTERNA" value="<%=rs("texterna")%>">
<input type="HIDDEN" name="ID" value="<%=request.querystring("id")%>">
<input type="SUBMIT" value="Uppdatera">
<%
else
response.write "Den posten finns inte!"
response.redirect "text_admin.asp"
end if
RecSet.close
Connection.close
%>

</body>
</html>

och länken som skickar en till sidan

<a href="text_form.asp?ID=<%=RecSet("ID")%>" target="iframe">Ändra</a>

hehe har gjort precis som ni skrivit men får ändå error..

Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'

[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'id ='.

/StajlText 1.0/text_form.asp, rad 6

Medlem sedan dec. 19998 577 inlägg
#19

Se till att request.querystring("id") innehåller ett värde, annars blir det fel.

Medlem sedan aug. 20011 087 inlägg
#20

jo men d e väll det som den här länken gör?

<a href="text_form.asp?ID=<%=RecSet("ID")%>" target="iframe">Ändra</a>
397 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
126 ms — deklarationer (db)
129 ms — hämta statistik (db)
139 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)