Checkbox-ID

magic_halli

Erfahrenes Mitglied
Hallo,

hat eine ganz normale Checkbox eine ID, welche z.B. automatisch erstellt wird, wenn man die Checkbox anklickt oder wenn man die Formulardaten abschickt...
Kann ich, falls vorhanden, die ID ansprechen bzw. auslesen und den entsprechenden Datensätzen zuordnen, damit ich später die ausgewählten Datensätze verarbeiten kann?

Ciao, Rico
 
Hi

gib der Checkbox doch in der Schleife im Value die ID der Datensätze mit. Diese kannst Du dann anklicken und mitteles Request.Form("Feld") übergeben. Die Werte liest Du Dir in der Where-Bedingung mit dem In-Operator wieder aus.

z.B fürs Löschen von Datensätzen:

Delete from [Tabelle] where ID in (1,3,4,6) oder
Delete from [Tabelle] where ID in (" & Request.Form("IDFeld") & ")

gleiches auch beim Select.
 
...Danke Luzie, das hat wunderbar funktioniert. Ich lasse mir die ausgewählten Datensätze löschen.

Allerdings, wenn ich auf Löschen-Button drücke, soll es mir danach wieder all meine Datensätze auf der gleichen Seite anzeigen (selbstverständlich ohne die eben gelöschten :) )... Das geschieht aber nicht, nur wenn ich die Seite im IE aktualiesiere, dann passt die Ansicht.

Gibts eine Funktion, welche nach betätigen des Buttons automatisch aktualisiert? Wie und Wo muß ich das einbauen?


Danke, Rico
 
Wenn Anzeigen der Daten und Löschvorgang auf einer Seite stehen, musst Du den Löschvorgang ja abfragen. Im u.g. Beispiel den Request.Form.Count

Dies ist nur ein Beispiel

If Request.Form.Count>0 then
strSQL = "delete from [tabelle] where ID in (" & Request.Form("feld") & ")"
objConn.Execute( strSQL ) ' Ausführen des Löschvorgangs
objConn.close
objConn=Nothing
Response.redirect "DeineSeite.asp" ' Neuladen der Seite.
end if

Respone.redirect läd Dir Deine Seite automatisch neu und die gelöschten Datensätze dürften nicht mehr vorhanden sein.

Teste es mal durch.
 
Hi,

ich habe jetzt mal alles bisl umgeschrieben und siehe da, es wird einfach nicht mehr aus der Datenbank gelöscht!

Hier ist mal der relevante Code:

<form>
...
<input type="checkbox" name="check" value="<%=rs("chkID")%>">
...
<%
if request.form("check")= "on" then
if request.form.count > 0 then
set rs2=Server.CreateObject("ADODB.recordset")
SQL2 = "DELETE FROM Insert_Fach WHERE
chkID IN ("& (Request.Form("check")) &");"
conn.execute SQL2
conn.close
response.redirect("look_belegung.asp")
end if
end if
%>

<p><input type="submit" name="send" value="Löschen"></p>
<p><input type="reset" name="stay" value="Zurücksetzten"></p>
</form>
...

Meine Vermutung liegt bei if request.form("check")= "on" then ... das vielleicht die Vereinbarung mit dem on nicht korrekt ist?!
Natürlich kann auch was anderes nicht passen bei dem Code?

Leider habe ich den Zustand, wo das löschen funktionierte, nicht gesichert und ich erinnere mich auch nimmer recht an meine Gedanken und Schritte vor dem ganzen Geändere:-(

Bye Rico
 
Hi

Also, ob die Abfrage jetzt nach Request.Form("on") oder dem einfachen Request.Form.count ist, spielt wohl keine Rolle. Du solltest Dich nur für eines entscheiden. Request.form.count ist halt ein Zähler, wenn er >0, also in dem Falle immer, wenn das Formular abgeschickt wird, wird das das Script ausgeführt.

Poste doch mal Deinen jetzigen Code der Seite, wenn Du Dich nicht mehr erinnern kannst, wie es vorher war. ;)
 
... der Code den ich oben geschickt habe ist eigentlich schon der, um den es geht. Weiter oben mache ich nur einen einfachen Select und lasse mir paar Sachen in einer Tabelle ausgeben.

Ich habe jetzt mal probiert, was passiert, wenn ich mich für eine if-Schleife entscheide... Ich habe if request.form("check")= "on" then mal weggelassen - da wird die Seite gar nicht mehr aufgebaut. Ansonsten zeigt es mir alle Datensätze an... nur dieses löschen geht einfach nicht!

Ich hänge mal den ganzen Code ran - glaube aber nicht, das da ein Fehler vorliegt. Es dreht sich alles irgendwie um die if-Konstruktion rund um die DELETE-Anweisung.

Code:
<body>
<%
set conn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.recordset")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/inetpub/wwwroot/asp_net/diplom.mdb"

SQL = "SELECT * FROM Insert_Fach Order By Veranstalltung;"
rs.open SQL, conn
conn.execute SQL
%>

<div align="center"><center>
<%
dim anfz, anfz2, endz, endz2

do while not rs.eof
anfz = (rs.Fields("Anfangszeit"))
anfz2 = left(anfz, 5)
endz = (rs.Fields("Endzeit"))
endz2 = left(endz, 5)
%>
<form action="look_belegung.asp" method="post" name="delete">

<table border="1" width="100%">
<tr>
<td width="9%"><input type="checkbox" name="check" value="<%=rs("chkID")%>"></td>
<td width="13%"><%response.write rs.Fields("Veranstalltung")%></td>
<td width="13%"><%response.write rs.Fields("Tag")%></td>
<td width="13%"><%response.write rs.Fields("Monat")%></td>
<td width="13%"><%response.write rs.Fields("Jahr")%></td>
<td width="13%"><%response.write(anfz2)%></td>
<td width="13%"><%response.write(endz2)%></td>
<td width="13%"><%response.write rs.Fields("RaumNr")%></td>
</tr>
</table>

<%rs.movenext
loop%>
</center></div>

<%
if request.form("check")= "on" then
if request.form.count > 0 then
set rs2=Server.CreateObject("ADODB.recordset")
SQL2 = "DELETE FROM Insert_Fach WHERE chkID IN ("& (Request.Form("check")) &");"
conn.execute SQL2
conn.close

response.redirect("look_belegung.asp")
end if
end if
%>
<p><input type="submit" name="send" value="Löschen"></p>
<p><input type="reset" name="stay" value="Zurücksetzten"></p>
</form>

<p align="center"><a href="startseite_stundenplanverwaltung.htm"><b>Startseite</b></href></p>

<%
rs.close
conn.close%>
</body>

Ich hoffe, man kann halbwegs etwas durchblicken, denn die Strukturierung des Textes ist hier nicht gut möglich.

Danke für Dein Bemühen, Rico
 
Du hast den Löschen-Code inmitten des Formulars geschreiben, das kann so nicht funktionieren.
Die Verbindung zur Datenbank soll ja über Select und auch über Delete passieren, deshalb wäre es besser, wenn Du diese über dem Header anlegest oder halt als include.

Ferner kann man Aktionen, die ausgeführt werden sollen, in Funktionen schreiben und diese dann an entspr. Stelle ausführen lassen. In Deinem Falle, wenn das Formular abgeschickt worden ist. Ist hier nur ein Beispiel, ohne den Code wirklich optimiert zu haben und ein Hinweis auf diese Möglichkeit

Bsp.

<%@LANGUAGE="VBSCRIPT" %>
<%
dim strDatabase
strDatabase = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=c:/inetpub/wwwroot/asp_net/diplom.mdb"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strDatabase

' --- Funktion-Löschen

function getDelete()
SQL2 = "DELETE FROM Insert_Fach WHERE chkID IN ("& (Request.Form("check")) &");"
getDelete = conn.execute SQL2
conn.close
response.redirect("look_belegung.asp")
end function

' --- Löschen ausführen

if Request.Form.count >0 then
getDelete()
end if

%>
<html>
<head>
<title>Test von Luzie</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<%
SQL = "SELECT * FROM Insert_Fach Order By Veranstalltung;"
set rs=Server.CreateObject("ADODB.recordset")
rs.open SQL, conn
' -- conn.execute SQL --- kann man sich sparen, da Du das Recordset aufrufst
%>
<div align="center">
<form action="look_belegung.asp" method="post" name="delete">
<table border="1" width="100%">
<%
dim anfz, anfz2, endz, endz2

do while not rs.eof
anfz = (rs.Fields("Anfangszeit"))
anfz2 = left(anfz, 5)
endz = (rs.Fields("Endzeit"))
endz2 = left(endz, 5)
%>
<tr>
<td width="9%"><input type="checkbox" name="check" value="<%=rs("chkID")%>"></td>
<td width="13%"><%response.write rs.Fields("Veranstalltung")%></td>
<td width="13%"><%response.write rs.Fields("Tag")%></td>
<td width="13%"><%response.write rs.Fields("Monat")%></td>
<td width="13%"><%response.write rs.Fields("Jahr")%></td>
<td width="13%"><%response.write(anfz2)%></td>
<td width="13%"><%response.write(endz2)%></td>
<td width="13%"><%response.write rs.Fields("RaumNr")%></td>
</tr>
<%rs.movenext
loop %>
<tr>
<td colspan="9">
<input type="submit" name="send" value="Löschen">
<input type="reset" name="stay" value="Zurücksetzten">
</td>
</tr>

</table>
</form>
</div>
<p align="center"><a href="startseite_stundenplanverwaltung.htm"><b>Startseite</b></a></p>

<%
rs.close
conn.close
%>
</body>
</html>
 
Zuletzt bearbeitet:
Hey Luzie,

hab recht vielen Dank für Deine Hilfe... Ich habe alles nochmal überarbeitet und jetzt läufts genauso wie ich es mir vorgestellt habe - juhu :) !

Bye Rico
 

Neue Beiträge

Zurück