webentwicklung-frage-antwort-db.com.de

holen eines Checkbox-Array-Werts von POST

ich poste eine Reihe von Checkboxen. und ich kann es nicht zur Arbeit bringen. Ich habe nicht die richtige Syntax in die Foreach-Schleife eingefügt, um es einfach zu halten. aber es funktioniert. Ich testete es, indem ich versuchte, dasselbe mit einem Textfeld anstelle einer Checkbox zu tun, und es funktionierte mit dem Textfeld.

<form method="post">
<?php 
foreach{
echo'
<input id="'.$userid.'" value="'.$userid.'"  name="invite[]" type="checkbox">
<input type="submit">';
}
?>
</form>

hier ist der Teil, der nicht funktioniert. Es wird "einladen" anstelle eines Arrays wiederholt. 

<?php
    if(isset($_POST['invite'])){
$invite = $_POST['invite'];
echo $invite;
}
9
arboles

Ihr $ _POST-Array enthält das Einladungsarray

<?php
if(isset($_POST['invite'])){
  $invite = $_POST['invite'];
  echo $invite;
}
?>

funktioniert nicht, da es ein Array ist. Sie müssen das Array durchlaufen, um alle Werte zu erhalten.

<?php
if(isset($_POST['invite'])){
  if (is_array($_POST['invite'])) {
    foreach($_POST['invite'] as $value){
      echo $value;
    }
  } else {
    $value = $_POST['invite'];
    echo $value;
  }
}
?>
22
Sean

Ich habe gerade folgenden Code verwendet:

<form method="post">
    <input id="user1" value="user1"  name="invite[]" type="checkbox">
    <input id="user2" value="user2"  name="invite[]" type="checkbox">
    <input type="submit">
</form>

<?php
    if(isset($_POST['invite'])){
        $invite = $_POST['invite'];
        print_r($invite);
    }
?>

Wenn ich beide Kästchen ankreuzte, war die Ausgabe:

Array ( [0] => user1 [1] => user2 )

Ich weiß, dass dies Ihre Frage nicht direkt beantwortet, aber es gibt Ihnen ein funktionierendes Beispiel zum Nachschlagen und hilft hoffentlich bei der Lösung des Problems.

11
Tom Pietrosanti

Überprüfen Sie als Alternative die Funktion implode (). Dadurch wird das Array in eine Liste umgewandelt. Der erste Parameter ist, wie die Elemente getrennt werden sollen. Hier habe ich ein Komma mit einem Leerzeichen danach verwendet.

$invite = implode(', ', $_POST['invite']);
echo $invite;
5
Ecropolis
// if you do the input like this
<input id="'.$userid.'" value="'.$userid.'"  name="invite['.$userid.']" type="checkbox">

// you can access the value directly like this:
$invite = $_POST['invite'][$userid];
0
djot

Da sich Ihr <form>-Element in der foreach-Schleife befindet, generieren Sie mehrere Formulare. Ich nehme an, Sie möchten mehrere Kontrollkästchen in einem Formular.

Versuche dies...

<form method="post">
foreach{
<?php echo'
<input id="'.$userid.'" value="'.$userid.'"  name="invite[]" type="checkbox">
<input type="submit">';
?>
}
</form>
0
Ryan