Hallo Forum,
ich versuche mich gerade in PHP durch learning by do it. Von Javascript habe ich leider überhaupt keine Ahnung.
Vorgeschichte:
Nach einer MySQL-Abfrage lasse ich die gefundenen Datensätze durch eine Schleife in einer Tabelle ausgeben. Jede Zeile beginnt mit einer Checkbox, die als value die id (den Primärschlüssel) des Datensatzes erhält. Der Benutzer soll nun durch Verwendung der Checkboxen die Ergebnismenge weiter einschränken können. Sinn der Sache: der Benutzer soll sich Adreßdatensätze zusammenstellen können, die dann zu einer Datenquelle für einen Serienbrief weiterverarbeitet werden. Über die URL kann man einen Blick in meine "Baustelle" werfen.
Um die Auswahl der Checkboxen zu beschleunigen, stelle ich eine Funktion per Javascript zur Verfügung, die alle Checkboxen mit einem Klick aktiviert.
Der Code dazu (natürlich nur ausgeliehen, nochmal Danke an den Schreiber):
<script language="JavaScript">
<!-- Begin
var checkflag = "false";
function check(field) {
if (checkflag == "false") {
for (i = 0; i < field.length; i++) {
field[i].checked = true;}
checkflag = "true";
return "Alle abwählen"; }
else {
for (i = 0; i < field.length; i++) {
field[i].checked = false; }
checkflag = "false";
return "Alle wählen"; }
}
// End -->
</script>
Unten im Formular dann den Button:
<input type=button value=" Alle wählen" onClick="this.value=check(this.form.auswahl)"> (auswahl ist der name der Checkboxen)
Das Ganze funzt soweit.
Das Problem:
Um die Checkboxen auswerten zu können, muß ich sie in ein Array zusammenfassen, also aus
<input type='checkbox' name='auswahl' value='$id'>
wird
<input type='checkbox' name='auswahl[]' value='$id'>
Und damit kommt das Javascript-Script nicht mehr zurecht. Die Fehlermeldung ist: 'lenght' ist kein Objekt.
Der Fehler ist sicherlich der, daß die Variablen des Scripts nicht auf beliebig große Arrays vorbereitet sind. Ich habe die Logik von Javascript aber nicht begriffen, um es selber modifizieren zu können.
Frage: Kann jemand das Script für mich modifizieren (und am besten mal mit erklären, was er da tut?) oder hat jemand ein besseres Script zur Hand, das er mir zur Verfügung stellen würde?
Vielen Dank für Eure Mühe und (hoffentlich) Hilfe.
MfG Micha