web-dev-qa-db-fra.com

obtenir une valeur de tableau de case à cocher de POST

je poste un tableau de cases à cocher. et je ne peux pas le faire fonctionner. Je n'ai pas inclus la syntaxe appropriée dans la boucle foreach pour que cela reste simple. mais ça marche. J'ai testé en essayant de faire la même chose avec un champ de texte au lieu d'une case à cocher et cela a fonctionné avec le champ de texte.

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

voici la partie qui ne fonctionne pas. il fait écho à 'invite' au lieu d'un tableau. 

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

Votre tableau $ _POST contient le tableau d'invitation, alors lisez-le en tant que

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

ne fonctionnera pas car c'est un tableau. Vous devez parcourir le tableau pour obtenir toutes les valeurs.

<?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

Je viens d'utiliser le code suivant:

<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);
    }
?>

Quand j'ai coché les deux cases, le résultat était:

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

Je sais que cela ne répond pas directement à votre question, mais cela vous donne un exemple de travail à utiliser et, espérons-le, vous aide à résoudre le problème.

11
Tom Pietrosanti

Découvrez la fonction implode () comme alternative. Cela convertira le tableau en une liste. Le premier paramètre est comment vous voulez que les articles soient séparés. Ici, j'ai utilisé une virgule avec un espace après.

$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

Parce que votre élément <form> est à l'intérieur de la boucle foreach, vous générez plusieurs formulaires. Je suppose que vous voulez plusieurs cases à cocher dans un seul formulaire.

Essaye ça...

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