Cette question signifie en fait "a été cochée" (lorsque le formulaire a été soumis). Pour déterminer si une case est cochée, PHP nécessiterait un appel Ajax une fois l'élément basculé.
rybo111
Réponses:
342
Si votre page HTML ressemble à ceci:
<inputtype="checkbox"name="test"value="value1">
Après avoir soumis le formulaire, vous pouvez le vérifier avec:
Les cases à cocher peuvent également avoir une valeur onlorsqu'elles sont cochées. Par conséquent, pour la compatibilité, il est plus facile à utiliser isset($_POST['checkboxName']).
Damiqib
13
La valeur "on" peut être prise en charge par certains navigateurs lorsque l'attribut value n'est pas défini, mais en général, il est préférable de définir l'attribut value et de le vérifier lors de la soumission.
m_vitaly
3
La «valeur1» change-t-elle si la case est cochée?
MoralCode
10
@Developer_ACE À moins que je ne vous comprenne mal, la valeur dans cet exemple serait value1si la case était cochée. Si elle n'est pas cochée, $_POST['test']n'existerait tout simplement pas.
rybo111
104
Zend Framework utilise un joli hack sur les cases à cocher, que vous pouvez également faire vous-même:
Chaque case à cocher générée est associée à un champ caché du même nom, placé juste avant la case à cocher, et avec une valeur de "0". Ensuite, si votre case à cocher correspond à la valeur "1", vous obtiendrez toujours la valeur "0" ou "1" dans le GET ou le POST résultant.
J'ai également remarqué cela, mais je me sens en sécurité de l'utiliser: Zend Framework le fait aussi!
hpaknia
C'est intéressant. Mais existe-t-il une toute petite possibilité que l'agent utilisateur soumette la première valeur au lieu de la dernière, en supposant que la case est cochée?
rybo111
@ rybo111, pour l'agent utilisateur, je ne pense pas, mais pour un analyseur de formulaire javascript personnalisé, vous devez faire attention.
regilero
Désolé, quelqu'un pourrait-il m'expliquer comment cela fonctionne? Je n'ai pas compris. Pourquoi ce champ caché si seule la dernière valeur est toujours soumise (la input[type="checkbox"]sienne)?
tonix
6
lorsque la case n'est pas cochée, elle n'est pas transmise par la poste (donc seul le caché est transmis). Quand il est vérifié, il est transmis et écrasera la valeur cachée.
regilero
53
Lorsque vous utilisez des cases à cocher en tant que tableau:
les cases à cocher en tant que tableau et foreach ($_POST['food'] as $selected_food)de travailler sur une case cochée est agréable, merci
bcag2
42
Laissez votre html pour votre case à cocher sera comme
<inputtype="checkbox"name="check1">
Ensuite, après avoir soumis votre formulaire, vous devez vérifier comme
if(isset($_POST['check1'])){// Checkbox is selected}else{// Alternate code}
En supposant que cela check1devrait être le nom de votre case à cocher Et si votre méthode de soumission de formulaire est GETalors vous devez vérifier avec des $_GETvariables comme
if(isset($_GET['check1'])){// Checkbox is selected}
J'utilise cette astuce depuis plusieurs années et elle fonctionne parfaitement sans aucun problème pour l'état de la case cochée / non cochée lors de l'utilisation avec PHP et la base de données.
Astuce: Il y aura toujours une valeur vide à moins que l'utilisateur ne la vérifie. Donc, nous avons déjà du code PHP pour l'attraper, sinon gardez la valeur à 0. Ensuite, utilisez simplement la variable $ status pour la base de données.
c'est la très bonne forme pour le faire en php pur et simple. mais il faut noter que la valeur d'une case à cocher est une chaîne lorsqu'elle est activée et une valeur inexistante si elle est cochée.
Elvis Technologies
4
Pour vérifier si une case est cochée, utilisez empty ()
Lorsque le formulaire est soumis, la case à cocher sera TOUJOURS activée, car TOUTES les variables POST seront envoyées avec le formulaire.
Cochez si la case est cochée avec vide comme suit:
//Check if checkbox is checked if(!empty($_POST['checkbox'])){#Checkbox selected code}else{#Checkbox not selected code}
Si la case n'est pas cochée, elle ne sera pas publiée, elle sera donc TOUJOURS définie.
Wessam El Mahdy
^ PAS * toujours réglé
The Codesee
3
Vous pouvez vérifier que la valeur correspondante est définie et non vide dans le tableau $ _POST ou $ _GET en fonction de l'action de votre formulaire.
ie: Avec un formulaire POST utilisant un namede "test" (ie <input type="checkbox" name="test">:, vous utiliseriez:
if(isset($_POST['test']){// The checkbox was enabled...}
Découvrez issetquelle est une "fonction" intégrée qui peut être utilisée dans les instructions if pour indiquer si une variable a été utilisée ou définie
Exemple:
if(isset($_POST["testvariabel"])){
echo "testvariabel has been set!";}
Eh bien, les exemples ci-dessus ne fonctionnent que lorsque vous souhaitez INSÉRER une valeur, pas utile pour METTRE À JOUR différentes valeurs dans différentes colonnes, voici donc ma petite astuce pour mettre à jour:
//EMPTY ALL VALUES TO 0
$queryMU ='UPDATE '.$db->dbprefix().'settings SET menu_news = 0, menu_gallery = 0, menu_events = 0, menu_contact = 0';
$stmtMU = $db->prepare($queryMU);
$stmtMU->execute();if(!empty($_POST['check_menus'])){foreach($_POST['check_menus']as $checkU){try{//UPDATE only the values checked
$queryMU ='UPDATE '.$db->dbprefix().'settings SET '.$checkU.'= 1';
$stmtMU = $db->prepare($queryMU);
$stmtMU->execute();}catch(PDOException $e){
$msg ='Error: '. $e->getMessage();}}}
Le secret consiste simplement à mettre à jour toutes les VALEURS en premier (dans ce cas, à 0), et puisque le n'enverra que les valeurs vérifiées, cela signifie que tout ce que vous obtenez doit être défini sur 1, donc tout ce que vous obtenez le définit sur 1.
Bienvenue dans Stack Overflow! Bien que cet extrait de code puisse résoudre le problème, il n'explique pas pourquoi ni comment il répond à la question. Veuillez inclure une explication pour votre code , car cela aide vraiment à améliorer la qualité de votre message. N'oubliez pas que vous répondrez à la question pour les lecteurs à l'avenir, et ces personnes pourraient ne pas connaître les raisons de votre suggestion de code. Flaggers / relecteurs: pour les réponses en code uniquement comme celle-ci, downvote, ne supprimez pas!
Réponses:
Si votre page HTML ressemble à ceci:
Après avoir soumis le formulaire, vous pouvez le vérifier avec:
ou
la source
on
lorsqu'elles sont cochées. Par conséquent, pour la compatibilité, il est plus facile à utiliserisset($_POST['checkboxName'])
.value1
si la case était cochée. Si elle n'est pas cochée,$_POST['test']
n'existerait tout simplement pas.Zend Framework utilise un joli hack sur les cases à cocher, que vous pouvez également faire vous-même:
Chaque case à cocher générée est associée à un champ caché du même nom, placé juste avant la case à cocher, et avec une valeur de "0". Ensuite, si votre case à cocher correspond à la valeur "1", vous obtiendrez toujours la valeur "0" ou "1" dans le GET ou le POST résultant.
la source
input[type="checkbox"]
sienne)?Lorsque vous utilisez des cases à cocher en tant que tableau:
Vous devez utiliser
in_array()
:N'oubliez pas de vérifier que le tableau est défini en premier, comme:
la source
foreach ($_POST['food'] as $selected_food)
de travailler sur une case cochée est agréable, merciLaissez votre html pour votre case à cocher sera comme
Ensuite, après avoir soumis votre formulaire, vous devez vérifier comme
En supposant que cela
check1
devrait être le nom de votre case à cocher Et si votre méthode de soumission de formulaire estGET
alors vous devez vérifier avec des$_GET
variables commela source
la source
J'utilise cette astuce depuis plusieurs années et elle fonctionne parfaitement sans aucun problème pour l'état de la case cochée / non cochée lors de l'utilisation avec PHP et la base de données.
Code HTML: (pour ajouter une page)
Astuce: supprimez la "case à cocher" si vous souhaitez l'afficher comme non cochée par défaut
Code HTML: (pour la page d'édition)
Code PHP: (à utiliser pour ajouter / modifier des pages)
Astuce: Il y aura toujours une valeur vide à moins que l'utilisateur ne la vérifie. Donc, nous avons déjà du code PHP pour l'attraper, sinon gardez la valeur à 0. Ensuite, utilisez simplement la variable $ status pour la base de données.
la source
Pour vérifier si une case est cochée, utilisez empty ()
Lorsque le formulaire est soumis, la case à cocher sera TOUJOURS activée, car TOUTES les variables POST seront envoyées avec le formulaire.
Cochez si la case est cochée avec vide comme suit:
la source
Vous pouvez vérifier que la valeur correspondante est définie et non vide dans le tableau $ _POST ou $ _GET en fonction de l'action de votre formulaire.
ie: Avec un formulaire POST utilisant un
name
de "test" (ie<input type="checkbox" name="test">
:, vous utiliseriez:la source
Découvrez
isset
quelle est une "fonction" intégrée qui peut être utilisée dans les instructions if pour indiquer si une variable a été utilisée ou définieExemple:
la source
Eh bien, les exemples ci-dessus ne fonctionnent que lorsque vous souhaitez INSÉRER une valeur, pas utile pour METTRE À JOUR différentes valeurs dans différentes colonnes, voici donc ma petite astuce pour mettre à jour:
....
Le secret consiste simplement à mettre à jour toutes les VALEURS en premier (dans ce cas, à 0), et puisque le n'enverra que les valeurs vérifiées, cela signifie que tout ce que vous obtenez doit être défini sur 1, donc tout ce que vous obtenez le définit sur 1.
L'exemple est PHP mais s'applique à tout.
S'amuser :)
la source
Vous pouvez le faire avec le court si:
ou avec le nouveau PHP7
Null coalescing operator
la source
L'évaluation des courts-circuits veillera à ce que vous n'accédiez pas
your_checkbox_name
lorsqu'elle n'a pas été soumise.la source
Un contrôle booléen minimaliste avec maintien de la position du commutateur
la source
la source
dans BS3, vous pouvez mettre
Veuillez noter l'utilisation de
isset($datosOrdenCompra[0]['exenta'])
la source
filter_input (INPUT_POST, 'checkbox_name', FILTER_DEFAULT, FILTER_FORCE_ARRAY)
la source
Wordpress a la
checked()
fonction. Référence: https://developer.wordpress.org/reference/functions/checked/Description Compare les deux premiers arguments et si des marques identiques sont cochées
Paramètres $ vérifié (mixte) (Obligatoire) Une des valeurs à comparer
$ current (mixed) (Facultatif) (true) L'autre valeur à comparer si pas seulement true Valeur par défaut: true
$ echo (bool) (Facultatif) Que ce soit pour faire écho ou simplement renvoyer la chaîne Valeur par défaut: true
Renvoie l'attribut html #Return (string) ou une chaîne vide
la source
la source