PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : paramter übergabe problem



jamba
10-07-2004, 18:10
ich habe ein formular. dieses beinhaltet eine bestimmte anzahl (diese wird dynamisch ermittelt) von checkboxes. der user wählt eine bestimmte anzahl dieser checkboxes aus. dann drückt er auf "senden".

ich möchte im folgenden skript wissen welche checkboxes er ausgewählt hat.
wie mach ich das?


das problem das ich bis jetzt habe ist, dass ich nicht weiss wieviele checkboxes es gibt, da die anzahl von den datensätzen in der datenbank abhängt. jetzt weiss ich eben auch nicht auf welches feld von $_POST ich zugreifen muss. das folgende geht eben nicht:



echo $_POST[0];


wer hat einen tip für mich?

danke

Trendman
10-07-2004, 19:00
Das ist eigentlich ganz einfach, Du gibst den checkboxen allen einen eindeutigen Namen (um sie zu unterscheiden), aber setzt ein prefx , z.B. check davor, ergo wären das dann z.B. check_01, check_02, etc.
Dann parst Du foreach ($_POST as $index => $value) alle POST Variablen und kannst Dir per if (substr($value, 0,5) == "check") alle holen, die gesendet wurden.

jamba
10-07-2004, 19:17
das mit dem eindeutigen namen hab ich gemacht. die heissen alle ..._checkbox.

aber das mit dem


foreach ($_POST as $index => $value)
if (substr($value, 0,5) == "check")

hab ich nicht ganz verstanden.

ich krieg dann als parameter z.b. 4 verschiedene parameter: 05_check, 12_check, 34_check und 44_check. diese sind jetzt in $_POST gespeichert. aber kannst du mir vielleicht nochmal erklären wie ich auf die zugreife.

danke

Trendman
10-07-2004, 19:28
das hintenanstellen ist schlecht, mach es wie ich es gesagt habe mit check_ am Anfang. in $_POST['check_022'] wäre dann der passende Wert gespeichert, den check_022 beim absenden hatte. Da Du aber die Anzahl der Checkboxen nicht kennst parst Du durch das array $_POST mit foreach, wie ich es beschrieben habe, dann bekommst Du alle Form Variablen, die übergeben wurden. Diese musst Du jetzt nur prüfen, ob es die checkboxen sind (in meinem Beispiel mit substr, da die ersten 5 Buchstaben immer 'check' sind).

Gaert
10-07-2004, 19:42
Hallo Jamba,

Eine einfachere (und bessere ;) ) Möglichkeit wie die von Trendman beschriebene und ein leicht zu verstehendes Beispiel:



<?php
$zutaten = $_POST['zutaten'];
if (is_array($zutaten)) {
foreach($zutaten as $zutat) {
echo "$zutat<br>";
}
}
?>
<form action="" method="POST">
<p>Kreuzen Sie die gew&uuml;nschten Zutaten an:</p>
<p>
<input type="checkbox" name="zutaten[]" value="salami"> Salami<br>
<input type="checkbox" name="zutaten[]" value="pilze"> Pilze<br>
<input type="checkbox" name="zutaten[]" value="sardellen"> Sardellen<br>
<input type="submit" name="submit" value="Abschicken"></p>
</form>


EDIT:

Falls dir das nicht reicht, gehts auch detaillierter:



<?php
$zutaten = $_POST['zutaten'];
if (is_array($zutaten)) {
foreach($zutaten as $key => $value) {
echo "$key: $value<br>";
}
}
?>
<form action="" method="POST">
<p>Kreuzen Sie die gew&uuml;nschten Zutaten an:</p>
<p>
<input type="checkbox" name="zutaten[zutat1]" value="salami"> Salami<br>
<input type="checkbox" name="zutaten[zutat2]" value="pilze"> Pilze<br>
<input type="checkbox" name="zutaten[zutat3]" value="sardellen"> Sardellen<br>
<input type="submit" name="submit" value="Abschicken"></p>
</form>



Gruß,

Gaert

jamba
10-07-2004, 19:46
ich glaub ich habs kapiert. ich werds probieren.

danke, derweil.

jamba
11-07-2004, 09:09
danke. es funktioniert.