Namen dynamisch einer Checkbox geben
Moosmutzel
- html
0 Marc0 Julian Hofmann
Ich hab folgendes Problem:
Ich lese aus einer Datenbank Datensätze via ASP aus. In jeder Zeile, die in der Tabelle erscheint, wird auch eine Checkbox erzeugt. Das heißt sie werden in einer Schleife, von ASP erzeugt, Zeile für Zeile geschrieben.
Nun möchte ich die Namen dynamisch vergeben, da ich vorher nicht weiß wieviel Datensätze aus der Datenbank gelesen werden. Wie funktioniert das. Ein weiteres Problem wäre dann, wie ich diese dynamisch vergebenen Namen in der anderen Datei wieder abrufe.
Für Eure Hilfe wäre ich Euch sehr dankbar!
Grüße Moosmutzel
Hallo
Das heißt sie werden in einer Schleife, von ASP erzeugt, Zeile für Zeile geschrieben.
Willst du nicht hier schon auch gleich den Namen vergeben? Das kannst du doch relativ elegant mir einer Zählvariable lösen, die du bei jedem durchlauf inkrementierst.
Gruss, Marc
Willst du nicht hier schon auch gleich den Namen vergeben? Das kannst du doch relativ elegant mir einer Zählvariable lösen, die du bei jedem durchlauf inkrementierst.
Und wie mach ich das? Ich weiß inzwischen nicht mehr wo hinten und vorn ist, weil ich schon soviel ausprobiert habe! Ich schick dir mal ein wenig Quellcode mit, okay? Vielleicht kannst du mal drüber schauen und sagen was ich falsch mach!
Zuerst der, wo die Checkbox angezeigt werden soll:
<form name="Delete" action="delete_artikel.asp" method="post">
<table width="95%" border="1" cellspacing="0" cellpadding="4">
<tr>
<td>
Artikel
</td>
<td >
Anzahl
</td>
<td >
Datum der Bestellung
</td>
<td align="center">
Löschen
</td>
</tr>
<%
on error resume next
rs.MoveFirst
do until rs.eof
%>
<tr>
<td >
<% =rs.Fields("Artikelbezeichnung") %>
</td>
<td >
<% =rs.Fields("Anzahl") %>
</td>
<td >
<% =rs.Fields("Datum") %>
</td>
<td align="center">
<input type="checkbox" name="check" value="">
<script type="text/javascript">
ID=<% =rs.Fields("ID") %>;
document.write(ID);
document.Delete.artikel.value = ID;
</script>
<!--Hier wird per JavaScript dem value der Wert der ID übergeben//-->
</td>
</tr>
<%
rs.MoveNext
loop
%>
Und dann die zweite Datei, wo mit Hilfe der ID, bestimmte (durch die Checkbox angewählte) Datensätze gelöscht werden sollen:
<% varBereich = Request.Form("bereich") %>
<% varAnzahl = Request.Form("anzahl") %> <!--Anzahl der Datensätze in der Datenbank//-->
<%
' Verbindung vorbereiten
Set verbindung = Server.CreateObject("ADODB.Connection")
dbSrc = "BESTELLUNGEN"
verbindung.Open "Provider=MSDASQL.1; DSN=" & dbSrc
For i=0 To varAnzahl
varArtikel=Request.Form("check")
If Request.Form("check")="on" Then
varArtikel=Request.Form("check")
verbindung.execute "DELETE * FROM GF WHERE (ID='"&varArtikel&"')"
Next
%>
Bitte hilf mir!
Hallo Moosmutzel
Ich bin mir nicht sicher, ob ich wirklich derjenige bin, der dir helfen kann und zwar weil ich noch nie mit asp gearbeitet habe (wo sind die profis?). Aber ich versuchs:
Ich hab gesehen, dass du (letztlich durch den loop) jeder checkbox den gleichen value gibst (nämlich null, value=""). hier solltest du vor dem ersten durchlauf eine variable definieren variable=0. nachdem du die erste zeile mit den Feldern und der Checkbox erzeugt hast, aber bevor du den loop aufrufst, muss du die variable um eins erhöhen, irgendwie variable++ oder variable+=1 oder variable = variable + 1 (ich kenn die asp-syntax überhaupt nicht, sorry)
später dann kannst du auf diesen value eine abfrage machen.
Ich hoffe ich hab dir etwas auf die sprünge geholfen.
Gruss, Marc
Hey,
Du kannst Namen und Wert für die Checkbox direkt im Tag angeben:
<input type="checkbox" value="<% = rs.Fields("feldname") %>" name="<% = hier_dann_ein_anderer_wert %>">
Du kannst also für 'value' und 'name' jede Konstruktion eingeben, die einen gültigen Ausdruck zurückliefert, sei es nun der Wert eines Datenfeldes oder eine Zählvariable.
Gruß
Matthias
Hallo Moosmutzel,
nachdem Du Datensätze ausgibst, gehe ich davon aus, dass die Erzeugung eh in einer Schleife erfolgt. Das einfachste wäre dann die Checkboxen zu numerieren (ggf. mit fixem Anfangsnamen). Die Nummer kann über die Schleife mit hochgezählt werden.
Wie das in ASP aussieht weiss ich jetzt nicht, aber eben irgendwie in der Art:
print "<input type=\checkbox" name="tollername$zaehler" value="$value">";
Der anderen Seite könntest Du per hidden-Field den Endwert des Zählers übergeben, so dass die Seite weiss, wieviel Werte sie bekommt/bekommen hat.
Grüße aus Würzburg
Julian