11
votes

Obtenir une checkbox Tableau de la valeur de Post

Je pose un tableau de cases. et je ne peux pas le faire travailler. Je n'ai pas inclus la syntaxe appropriée dans la boucle de Foreach pour le garder 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 fonctionnait avec le champ de texte.

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


6 commentaires

$ invitation est un tableau. Essayez print_r ($ inviter); au lieu de echo


Faites un print_r ($ _ post); et voir ce qui est réellement défini.


il dit 'inviter' quand je fais un imprimé_r


Essayez d'ajouter plusieurs cases à cocher nommées 'Invite []'. Vous obtiendrez la sortie comme une matrice. Et vous ne devriez pas utiliser


Je pense que votre code PHP est toujours faux. Votre foreach ne doit pas être à l'intérieur de votre echo et votre HTML est à l'intérieur de vous Tags.


Ce n'est pas exactement comme ça dans mon code. Je sais que ce n'est pas le problème. Mais j'ai essayé de faire exactement la même chose avec un champ de texte et cela a fonctionné. Le problème est spécifique à la case à cocher.


5 Réponses :


0
votes
// 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 commentaires

0
votes

Parce que votre élément code> est à l'intérieur de la boucle de Forache, vous générez plusieurs formulaires. Je suppose que vous voulez plusieurs cases à cocher dans une forme.

Essayez ceci ... p>

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


2 commentaires

Belle prise. Je voudrais même déplacer le bouton d'envoi en dehors de la boucle.


Désolé, c'était une erreur que j'ai faite quand je l'ai tapé dans la question. Le code n'est pas vraiment comme ça.



24
votes

Votre tableau $ _Post contient le tableau Invite, de la lire comme xxx pré>

ne fonctionnera pas car c'est un tableau. Vous devez faire boucle la matrice pour obtenir toutes les valeurs. P>

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


7 commentaires

quand j'ai essayé ça. J'ai eu AVERTISSEMENT: argument invalide fourni pour pourcheach () en C: \ xampp \ htdocs \ social_learning \ site_pages \ groupes_page.php à la ligne 95


Pouvez-vous copier / coller les résultats complets d'un echo ''; print_r ($ _ POST); echo '';


J'ai édité ma réponse pour ajouter une vérification de la valeur de l'invitation est une matrice ou une chaîne. Si vous ne transmettez qu'une seule case à cocher Invitation cochée, une valeur de chaîne sera une valeur de chaîne. Cela peut corriger l'erreur que vous recevez.


Voici le tableau


J'ai essayé le édité pour la boucle. Et j'ai toujours eu une variable non définie. AVIS: Variable non définie: Valeur en C: \ XAMPP \ htdocs \ SOCAL_LEARNING \ SITE_PAGES \ Groupes_Page.Prieuses à la ligne 99 Je pense que la question doit être avec les données avant son envoi. Mais quand j'inspecte l'élément. Les données du HTML sont toutes correctes. Donc, le problème est quelque part d'avant le message HTML.


Je pense que le nom du $ _post ['Invite'] était en contradiction avec autre chose. donc je l'ai changé à $ _Post ['Inviter'] et ça a commencé à travailler


Cela n'a pas fonctionné pour moi. Mais la réponse que @ecropolis a donné ci-dessous l'a fait



14
votes

Je viens d'utiliser le code suivant: xxx

Lorsque j'ai vérifié les deux cases, la sortie était la suivante: xxx

Je sais que cela ne le connaît pas Il répondit directement à votre question, mais cela vous donne un exemple de travail à la référence et vous aide, espérons-le que vous résolvez le problème.


1 commentaires

Merci. Mon code doit avoir un bug, un type ou quelque chose que je ne vois pas. La partie étrange est que j'ai essayé exactement la même chose avec un champ de texte et cela a fonctionné. Donc, le problème est connecté spécifiquement à la case à cocher.



5
votes

Vérifiez la fonction implorée () comme alternative. Cela convertira le tableau en une liste. Le premier param est que vous voulez que les éléments soient séparés. Ici, j'ai utilisé une virgule avec un espace après. XXX


1 commentaires

Merci beaucoup, monsieur! Cela m'a juste aidé à économiser environ 1 heure de recherche. J'aimerais l'implorage en ce moment.