• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

das Ding mit den Selectboxen

RhihanSK

New member
Hallo Freunde,

ich hab da ein kleines Prob., kann wohl gerade nicht richtig nachdenken.

Wenn ich auf einer Seite Datensätze aus der Datenbank ausgeben lasse und hinter jeden Datensatz eine Selectbox füge, diese dann per Javascript zum löschen alle auswähle und an ein Script übergebe, wie verarbeite ich nun die ankommenden Daten?

Wenn ich die Daten per GET übergebe erhalte ich folgendes:

Code:
http://www.meineseite.de/verarbeitungsseite.php?list=1&list=5&list=6&list=18

Die ganzen list Parameter sind die Checkboxen, die für den Multiselect den gleichen Namen brauchen. Die Werte dahinter sind dann die ID der zu löschenden Datensätze.

Aber wie kann ich jetzt die ganzen list Parameter verarbeiten. Ich komm da einfach nicht drauf. Hat da jemand eine Idee oder ein Ansatz?

Gruß RhihanSK
 
also in Perl geht das so:

PHP:
my @list = CGI::param('list');
In PHP musst du wohl in dem Namen noch den Indexoperator (die eckigen Klammern) gönnen.
 
jep. <input type... name="list[]"...>

Dann kannst du mit $_GET['list'][$i] auf die entsprechenden Felder zugreifen. $i sollte aus dem Raum der Natürlichen Zahlen stammen (inkl. 0) und die Anzahl der ausgewählten Felder nicht überschreiten (count()). ;)
 
Wenn dir die Validität deines Codes am Herzen liegt und du auf die eckigen Klammern verzichten willst geht vll. folgender Workaround:

Gib jeder Checkbox einen Namen in der Form "list"+Nr. Weiter fügst du dem Formular ein hidden-Feld hinzu (name="highest"), welches die höchste Nummer enthält (alternativ kann das auch im GET-Parameter der Zieladresse angegeben werden).
Dein verarbeitendes Script zählt nun durch alle list-Felder durch, wie folgt:
Code:
$selected = array();
for ($i=0, $highest = intval($_POST['highest']); $i <  $highest;$++)
 if (isset($_POST['list'.$i]))
  $selected[] = $i;
// $selected enthält nun alle ausgewählten "lists"

Grüsse
jeko

PS: Einen langen GET-String wirst du so oder so nicht vermeiden können (auch mit der Verwendung der eckigen Klammern). POST ist eher zu empfehlen.
 
Wenn dir die Validität deines Codes am Herzen liegt und du auf die eckigen Klammern verzichten willst geht vll. folgender Workaround:

Ich weiß nicht wer dieses Gerücht in die Welt gesetzt hat, aber eckige Klammern in Namen sind valide!!!
Innerhalb von CDATA erlaubt, name-Attribut darf CDATA enthalten und nach Validator auch valide.

Mal abgesehen, wäre die Validität diesen Workaround nicht wirklich wert.
 
Zurück
Oben