J'ai 1 formulaire avec plusieurs cases à cocher (chacune avec le code):
<input type="checkbox" name="check_list" value="<? echo $row['Report ID'] ?>">
Où $row['Report ID']
est une clé primaire dans une base de données - donc chaque valeur est différente.
Comment pourrais-je savoir quelles cases ont été cochées? (Peut-être plusieurs)
Ceci est pour un système de boîte de réception et j'ai un bouton ci-dessous que je veux (lorsque vous cliquez dessus) pour supprimer tous les messages (identifiants de:) $row['Report ID']
dont la case est cochée.
$check
sera égalon
.if($_POST)
- inutile,$_POST
sera toujours vrai. Vous devriez vérifier si à la!empty($_POST['check_list'])
place.array_key_exists('check_list', $_POST) && !empty($_POST['check_list'])
empty()
ne provoque pas cette erreur. Du manuel:empty() does not generate a warning if the variable does not exist.
Modifier Pour refléter ce que @Marc a dit dans le commentaire ci-dessous.
Vous pouvez faire une boucle sur toutes les valeurs publiées.
HTML:
PHP:
la source
[]
syntaxe dans la définition de champ, ce qui oblige PHP à créer cette valeur $ _POST sous forme de tableau. Sinon, ce sera une seule valeur non-tableau, provoquant l'explosion de la boucle foreach ().vous devez nommer vos cases à cocher en conséquence:
vous pouvez alors accéder à toutes les cases cochées avec
ps. assurez-vous d'échapper correctement à votre sortie (
htmlspecialchars()
)la source
Et après la publication, vous pouvez les parcourir en boucle:
Ou obtenez une certaine valeur publiée à partir de la page précédente:
la source
Désolé, ancien sujet, mais c'est un élément important à mentionner pour cela, avec lequel @JamesRattray et d'autres avaient des problèmes.
Ne fermez PAS vous-même la
input
balise (en utilisant/>
) lorsque vous essayez de publier plusieurs valeurs dans le script PHP. Lorsque vous fermez vous-même la balise, cela termine la définition du tableau et vous n'aurez qu'une seule valeur publiée dans votre script lors de la soumission. En effet, la réponse de @Scone peut ne pas fonctionner tant que le/>
n'est pas modifié.C'est ce qui cause le
Warning: Invalid argument supplied for foreach() in /home1/...
erreur PHP dans ce cas.EDIT: Comme indiqué dans les commentaires ci-dessous, d'autres recherches suggèrent que cela dépend de DOCTYPE. Si vous avez défini DOCTYPE pour XHTML, il faudra que la balise d'entrée soit fermée. Si vous avez un ensemble DOCTYPE de HTML5, il faudra que la balise d'entrée ne soit pas fermée. Il est également possible que cela soit dicté par le navigateur dans lequel l'utilisateur consulte la page et par la façon dont il suit le DOCTYPE spécifié dans le code.
la source
C'est assez simple. Faites attention et vous l'aurez tout de suite! :)
Vous allez créer un tableau html, qui sera ensuite envoyé au tableau php. Votre code html ressemblera à ceci:
Où
[1] [2] [3]
sont lesID
s de vos messages, ce qui signifie que vous allezecho
votre$row['Report ID']
à leur place.Ensuite, lorsque vous soumettez le formulaire, votre tableau PHP ressemblera à ceci:
print_r($check_list)
[1] => checked [3] => checked
Selon ceux qui ont été vérifiés et ceux qui ne l'ont pas été.
Je suis sûr que vous pouvez continuer à partir de maintenant.
la source
check_list[]
cela commencerait parcheck_list[0]
plutôt quecheck_list[1]
.En mi caso necesito que venga en un sólo valeur, por lo tanto no me vale una matriz.
Con esto me aseguro que los valores sean 1 y separados por coma. Así en MySQL puedo hacer la consulta, venga en matriz o no:
la source