webForumDet fria alternativet

Enkelt adminsystem, får det icke att fungera.

ASP

11 svar · 356 visningar · startad av Opelomega

Medlem sedan aug. 2003137 inlägg
Frågan#1

Hej

Har försökt knåpa ihp en enkelt adminsystem men inte lýckats något vidare. Det enda jag vill få ut av det hela är att ta bort posten från databasen. Och att det innan är listat på en sida.
Ni får gärna komma med något enklare/bättre exempel.

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DSN=;Password"
sqlstmt = "SELECT * from formular Order by ID Desc"
Set RS = conn.execute(sqlstmt)
If rs.eof then
response.write "<CENTER>Det finns inget i databasen.</CENTER>"
response.end
End If
Do while not rs.eof
fornamn = Request.Form("fornamn")
efternamn = Request.Form("efternamn")
epost = Request.Form("epost")
hemtel = Request.Form("hemtel")
arbtel = Request.Form("arbtel")
mobtel = Request.Form("mobtel")
postadress = Request.Form("postadress")
postnummer = Request.Form("postnummer")
ort = Request.Form("ort")
epost2 = Request.Form("epost2")
sdate = Date
%>

<TABLE>
<TR>

<TD><input type="checkbox" name="ID" value="<%=ID%>"><%=ID%></TD>
<TR><TD><%=fornamn%></TD></TR>
<TR><TD><%=efternamnepost%></TD></TR>
<TR><TD><%=epost%></TD></TR>
<TR><TD><%=epost2%></TD></TR>
<TR><TD><%=hemtel%></TD></TR>
<TR><TD><%=arbtel%></TD></TR>
<TR><TD><%=mobtel%></TD></TR>
<TR><TD><%=postadress%></TD></TR>
<TR><TD><%=postnummer%></TD></TR>
<TR><TD><%=ort%></TD></TR>
<TR><TD><%=sdate%></TD></TR>
</TABLE>

\<%
rs.MoveNext
loop 
%\>

<TABLE>
<TR><TD><B>Nr</B></TD></TR>
<TR><TD><B>Namn</B></TD></TR>
<TR><TD><B>E-post</B></TD></TR>
<TR><TD><B>Telefonnr</B></TD></TR>
<TR><TD><B>Sort</B></TD></TR>
<TR><TD><B>Kategori</B></TD></TR>
<TR><TD><B>Rubrik</B></TD></TR>
<TR><TD><B>Annonsen</B></TD></TR>
<TR><TD><B>Datum</B></TD></TR>
<TR><TD><B>Tid</B></TD></TR>
</TABLE>

\<%
IF IsEmpty(request.form("ID")) THEN
response.write "\<CENTER\>Du måste markera en checkbox innan du kan radera ett inlägg.\<BR\>" 
response.write "Var vänlig tryck på webbläsarens bakåtknapp.\</CENTER\>"
response.end
End IF

set rs = nothing
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DSN=;Password="
For each record in request("ID")
sqlstmt = "DELETE \* from formular WHERE ID=" & record
Set RS = conn.execute(sqlstmt)

Next 
response.write "\<CENTER\>Raderat\</CENTER\>"
set rs = nothing
set conn = nothing
%\>--\>
Medlem sedan mars 2003772 inlägg
#2

Har du nån <form> tagg då ?
Du måste posta datan tillbaka till sidan så den får tillbaka nåt värde.

Medlem sedan mars 2003772 inlägg
#3

Välkommen till Webforum förresten!
Testa detta: (ändringarna är i fetstil)


<% 
IF request.form("ID") <> "" THEN 
Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open "DSN=;Password=" 
For each record in request("ID") 
sqlstmt = "DELETE * from formular WHERE ID=" & record 
Set RS = conn.execute(sqlstmt) 

Next 
response.write "<CENTER>Raderat</CENTER>" 
set rs = nothing 
set conn = nothing
End if
%>

<% 
Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open "DSN=;Password" 
sqlstmt = "SELECT * from formular Order by ID Desc" 
Set RS = conn.execute(sqlstmt) 
If rs.eof then 
response.write "<CENTER>Det finns inget i databasen.</CENTER>" 
response.end 
End If 
Do while not rs.eof 
fornamn = Request.Form("fornamn") 
efternamn = Request.Form("efternamn") 
epost = Request.Form("epost") 
hemtel = Request.Form("hemtel") 
arbtel = Request.Form("arbtel") 
mobtel = Request.Form("mobtel") 
postadress = Request.Form("postadress") 
postnummer = Request.Form("postnummer") 
ort = Request.Form("ort") 
epost2 = Request.Form("epost2") 
sdate = Date 
%> 

[b]<form method="post" name="frm" action="sidansnamn.asp">[/b]
<TABLE> 
<TR> 
<TD>[b]<input type="checkbox" name="ID" value="<%=ID%>" onClick="document.frm.submit();">[/b]
<%=ID%></TD> 
<TR><TD><%=fornamn%></TD></TR> 
<TR><TD><%=efternamnepost%></TD></TR> 
<TR><TD><%=epost%></TD></TR> 
<TR><TD><%=epost2%></TD></TR> 
<TR><TD><%=hemtel%></TD></TR> 
<TR><TD><%=arbtel%></TD></TR> 
<TR><TD><%=mobtel%></TD></TR> 
<TR><TD><%=postadress%></TD></TR> 
<TR><TD><%=postnummer%></TD></TR> 
<TR><TD><%=ort%></TD></TR> 
<TR><TD><%=sdate%></TD></TR> 
</TABLE> 

<% 
rs.MoveNext 
loop 
%> 

<TABLE> 
<TR><TD><B>Nr</B></TD></TR> 
<TR><TD><B>Namn</B></TD></TR> 
<TR><TD><B>E-post</B></TD></TR> 
<TR><TD><B>Telefonnr</B></TD></TR> 
<TR><TD><B>Sort</B></TD></TR> 
<TR><TD><B>Kategori</B></TD></TR> 
<TR><TD><B>Rubrik</B></TD></TR> 
<TR><TD><B>Annonsen</B></TD></TR> 
<TR><TD><B>Datum</B></TD></TR> 
<TR><TD><B>Tid</B></TD></TR> 
</TABLE> 
[b]</form>[/b]

PS. Använd KOD taggarna när du skriver kod i forumet.

Medlem sedan aug. 2003137 inlägg
#4

Tackar, jag känner mig verklingen välkommen.
Är van att kod bli markerat av sig självt.

Nej det fungerar inte riktigt glömde lista all kod, glömde den viktigaste biten. Fick nu också ett felmedelande när jag markerade checkboxen.

All kod inklusive hjälpen jag fått av er:


<% 
IF request.form("ID") <> "" THEN 
Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open ""
For each record in request("ID") 
sqlstmt = "DELETE * from formular WHERE ID=" & record 
Set RS = conn.execute(sqlstmt) 

Next 
response.write "<CENTER>Raderat</CENTER>" 
set rs = nothing 
set conn = nothing
End if
%>

<% 
Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open "DSN;"
sqlstmt = "SELECT * from formular Order by ID Desc" 
Set RS = conn.execute(sqlstmt) 
If rs.eof then 
response.write "<CENTER>Det finns inget i databasen.</CENTER>" 
response.end 
End If 
Do while not rs.eof 
fornamn = Request.Form("fornamn") 
efternamn = Request.Form("efternamn") 
epost = Request.Form("epost") 
hemtel = Request.Form("hemtel") 
arbtel = Request.Form("arbtel") 
mobtel = Request.Form("mobtel") 
postadress = Request.Form("postadress") 
postnummer = Request.Form("postnummer") 
ort = Request.Form("ort") 
epost2 = Request.Form("epost2") 
sdate = Date 
%> 

<form method="post" name="frm" action="admin.asp">
<TABLE> 
<TR> 
<TD><input type="checkbox" name="ID" value="<%=ID%>" onClick="document.frm.submit();">
<%=ID%></TD> 
<TR><TD><%=fornamn%></TD></TR> 
<TR><TD><%=efternamnepost%></TD></TR> 
<TR><TD><%=epost%></TD></TR> 
<TR><TD><%=epost2%></TD></TR> 
<TR><TD><%=hemtel%></TD></TR> 
<TR><TD><%=arbtel%></TD></TR> 
<TR><TD><%=mobtel%></TD></TR> 
<TR><TD><%=postadress%></TD></TR> 
<TR><TD><%=postnummer%></TD></TR> 
<TR><TD><%=ort%></TD></TR> 
<TR><TD><%=sdate%></TD></TR> 
</TABLE> 

<% 
rs.MoveNext 
loop 
%> 

<TABLE> 
<TR><TD><B>Nr</B></TD></TR> 
<TR><TD><B>Namn</B></TD></TR> 
<TR><TD><B>E-post</B></TD></TR> 
<TR><TD><B>Telefonnr</B></TD></TR> 
<TR><TD><B>Sort</B></TD></TR> 
<TR><TD><B>Kategori</B></TD></TR> 
<TR><TD><B>Rubrik</B></TD></TR> 
<TR><TD><B>Annonsen</B></TD></TR> 
<TR><TD><B>Datum</B></TD></TR> 
<TR><TD><B>Tid</B></TD></TR> 
</TABLE> 
</form>

	<%
	IF IsEmpty(request.form("ID")) THEN
	response.write "<CENTER>Du måste markera en checkbox innan du kan radera ett inlägg.<BR>" 
	response.write "Var vänlig tryck på webbläsarens bakåtknapp.</CENTER>"
	response.end
	End IF

	set rs = nothing
	Set Conn = Server.CreateObject("ADODB.Connection")
	Conn.Open "DSN=;Password="
	For each record in request("ID")
	sqlstmt = "DELETE * from formular WHERE ID=" & record
	Set RS = conn.execute(sqlstmt)  [B]<-------Fel på denna rad[/B] 

	Next 
   	response.write "<CENTER>Raderat</CENTER>"
    set rs = nothing
	set conn = nothing
	%>

Felmeddelande

ADODB.Connection.1 error '80004005'

SQLState: 37000
Native Error Code: -3100
[INTERSOLV][ODBC SequeLink driver][ACCESS][Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'ID='.

Rad är ut märkt.

Medlem sedan mars 20023 561 inlägg
#5

Variabeln record har inget värde.

Medlem sedan aug. 2003137 inlägg
#6

Okej, och hur löser man detta? Nåt förslag?

Medlem sedan mars 2003772 inlägg
#7

Du behöver ju inte den sista delen av koden eftersom den redan finns högst upp? Och den koden du har högst upp körs bara om Request.Form("ID") inte är tom.

Detta borde ju räcka

<% 
IF request.form("ID") <> "" THEN 
Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open ""
For each record in request("ID") 
sqlstmt = "DELETE * from formular WHERE ID=" & record 
Set RS = conn.execute(sqlstmt) 

Next 
response.write "<CENTER>Raderat</CENTER>" 
set rs = nothing 
set conn = nothing
End if
%>

<% 
Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open "DSN;"
sqlstmt = "SELECT * from formular Order by ID Desc" 
Set RS = conn.execute(sqlstmt) 
If rs.eof then 
response.write "<CENTER>Det finns inget i databasen.</CENTER>" 
response.end 
End If 
Do while not rs.eof 
fornamn = Request.Form("fornamn") 
efternamn = Request.Form("efternamn") 
epost = Request.Form("epost") 
hemtel = Request.Form("hemtel") 
arbtel = Request.Form("arbtel") 
mobtel = Request.Form("mobtel") 
postadress = Request.Form("postadress") 
postnummer = Request.Form("postnummer") 
ort = Request.Form("ort") 
epost2 = Request.Form("epost2") 
sdate = Date 
%> 

<form method="post" name="frm" action="admin.asp">
<TABLE> 
<TR> 
<TD><input type="checkbox" name="ID" value="<%=ID%>" onClick="document.frm.submit();">
<%=ID%></TD> 
<TR><TD><%=fornamn%></TD></TR> 
<TR><TD><%=efternamnepost%></TD></TR> 
<TR><TD><%=epost%></TD></TR> 
<TR><TD><%=epost2%></TD></TR> 
<TR><TD><%=hemtel%></TD></TR> 
<TR><TD><%=arbtel%></TD></TR> 
<TR><TD><%=mobtel%></TD></TR> 
<TR><TD><%=postadress%></TD></TR> 
<TR><TD><%=postnummer%></TD></TR> 
<TR><TD><%=ort%></TD></TR> 
<TR><TD><%=sdate%></TD></TR> 
</TABLE> 

<% 
rs.MoveNext 
loop 
%> 

<TABLE> 
<TR><TD><B>Nr</B></TD></TR> 
<TR><TD><B>Namn</B></TD></TR> 
<TR><TD><B>E-post</B></TD></TR> 
<TR><TD><B>Telefonnr</B></TD></TR> 
<TR><TD><B>Sort</B></TD></TR> 
<TR><TD><B>Kategori</B></TD></TR> 
<TR><TD><B>Rubrik</B></TD></TR> 
<TR><TD><B>Annonsen</B></TD></TR> 
<TR><TD><B>Datum</B></TD></TR> 
<TR><TD><B>Tid</B></TD></TR> 
</TABLE> 
</form>
Medlem sedan aug. 2003137 inlägg
#8

Måste vara dum eller nåt. Jag får inte det att fungerara. Den listar inte något av vad som finns i databasen. Det kommer bara upp en chebox ruta och datumet.Det är allt som visas, förstår verklingen inte vad som är fel.

Medlem sedan mars 20015 287 inlägg
#9

Du har ju i nuläget sagt åt den att lista sådant som den tar emot från ett formulär, och inte något från databasen.

Typ där det står:
fornamn = Request.Form("fornamn")

Har du inte tänkt att det där ska stå:
fornamn = rs("fornamn")

?

Medlem sedan aug. 2003137 inlägg
#10

Tackar för det, det funkade fin fint.

Men ännu fungerar det inte, för när man markerar en checkbox så laddas sidan om. Hur gör man för att ta bort en post, förstår mig inte på det.

<% 
IF request.form("ID") <> "" THEN 
Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open 
For each record in request("ID") 
sqlstmt = "DELETE * from formular WHERE ID=" & record 
Set RS = conn.execute(sqlstmt) 

Next 
response.write "<CENTER>Raderat</CENTER>" 
set rs = nothing 
set conn = nothing
End if
%>

<form name="frm" action="admin.asp" method="post">
<% 
Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open 
sqlstmt = "SELECT * from formular Order by ID Desc" 
Set RS = conn.execute(sqlstmt) 
If rs.eof then 
response.write "<CENTER>Det finns inget i databasen.</CENTER>" 
response.end 
End If 
Do while not rs.eof 
fornamn = Request.Form("fornamn") 
efternamn = Request.Form("efternamn") 
epost = rs("epost") 
hemtel = rs("hemtel") 
arbtel = rs("arbtel") 
mobtel = rs("mobtel") 
postadress = rs("postadress") 
postnummer = rs("postnummer") 
ort = rs("ort") 
epost2 = rs("epost2") 
sdate = Date 
%> 

<TABLE> 
<TR> 
<TD><input type="checkbox" name="ID" value="<%=ID%>" onClick="document.frm.submit();">
<%=ID%></TD> 
<TR><TD><B>Namn*</B></TD><TD><%=fornamn%></TD></TR> 
<TR><TD><B>Efternamn*</B></TD><TD><%=efternamn%></TD></TR> 
<TR><TD><B>E-post*</B></TD><TD><%=epost%></TD></TR> 
<TR><TD><B>E-post2</B></TD><TD><%=epost2%></TD></TR> 
<TR><TD><B>Hemtel*</B></TD><TD><%=hemtel%></TD></TR> 
<TR><TD><B>Arbtel*</B></TD><TD><%=arbtel%></TD></TR> 
<TR><TD><B>Mobtel*</B></TD><TD><%=mobtel%></TD></TR> 
<TR><TD><B>Postadress</B></TD><TD><%=postadress%></TD></TR> 
<TR><TD><B>Postnummer</B></TD><TD><%=postnummer%></TD></TR> 
<TR><TD><B>Ort</B></TD><TD><%=ort%></TD></TR> 
<TR><TD><B>Datum</B></TD><TD><%=sdate%></TD></TR> 
</TABLE> 

<% 
rs.MoveNext 
loop 
%> 
<input type="submit" value="Ta bort">

</TABLE> 
</form>
Medlem sedan mars 20015 287 inlägg
#11

Kan inte se att du ger ID något värde?

ID = rs("id")

samt du får skippa:

onClick="document.frm.submit();"

Om du inte vill skicka formen direkt utan kunna markera flera checkboxar.

Samt slutligen kan du "effektivisera" din delete:

IF request.form("ID") <> "" THEN 
Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open
sqlstmt = "DELETE * from formular WHERE ID in (" & request("ID") & ")"
conn.execute(sqlstmt) 
set conn = nothing
response.write "<CENTER>Raderat</CENTER>" 
End if
Medlem sedan aug. 2003137 inlägg
#12

Tack för all hjälp. Men jag började om och gjorde ett nytt från grunden igen, eftersom detta innehöll så många fel.

Men tack för att ni försökt.

473 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
332 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
332 ms — ändringar (db)