Checkbox Administration Wordpress
Résolu
Shuta
Messages postés
217
Statut
Membre
-
Shuta Messages postés 217 Statut Membre -
Shuta Messages postés 217 Statut Membre -
Bonjour,
Alors voilà, j'essaie de faire une checkbox sur une page personnelle en administration.
Seulement avec tous les tutos que j'ai croisé (sur le peu que je croises) impossible de la faire fonctionner correctement :(
Je m'explique :
Voici la checkbox en question ! Alors celle ci marche mais que dans le sens "On" C'est a dire que si elle n'est pas cochée de base, je viens pour la cocher, j'enregistre et elle se coche correctement. Le soucis est que... Elle ne se décoche plus !
Je vais voir sur la base de donnée, la valeur est bien affiché à 1. Mais impossible de décocher cette checkbox...
En ce qui concerne le traitement de 'options[]' voici le code, il m'est utile pour tout le reste du template :
Merci de bien vouloir m'aider :'( Ca fait 5h que je bloque sur ça, ça devient pesant...
Bonne soirée.
Cordialement
Alors voilà, j'essaie de faire une checkbox sur une page personnelle en administration.
Seulement avec tous les tutos que j'ai croisé (sur le peu que je croises) impossible de la faire fonctionner correctement :(
Je m'explique :
<input type="checkbox" id="check01" name="options[check01]" value="1" <?php checked( '1', get_option('check01') ); ?> />
Voici la checkbox en question ! Alors celle ci marche mais que dans le sens "On" C'est a dire que si elle n'est pas cochée de base, je viens pour la cocher, j'enregistre et elle se coche correctement. Le soucis est que... Elle ne se décoche plus !
Je vais voir sur la base de donnée, la valeur est bien affiché à 1. Mais impossible de décocher cette checkbox...
En ce qui concerne le traitement de 'options[]' voici le code, il m'est utile pour tout le reste du template :
foreach($_POST['options'] as $name => $value){
if(empty($value)){
delete_option($name);
} else {
update_option($name, $value);
}
}
Merci de bien vouloir m'aider :'( Ca fait 5h que je bloque sur ça, ça devient pesant...
Bonne soirée.
Cordialement
A voir également:
- Checkbox wordpress
- Wordpress download - Télécharger - Blog & CMS
- Wordpress apparence menu disparu ✓ - Forum Wordpress
- Supprimer site wordpress - Astuces et Solutions
- Vba checkbox value ✓ - Forum Excel
- Ovh site en construction wordpress - Forum Wordpress
1 réponse
Salut,
As tu vérifié le contenu de la variable $_POST['option'] lorsque la checkbox est décochée ?
Le paramètre POST correspondant à la checkbox n'est pas envoyée si celle-ci n'est pas cochée.
Pour vérifier qu'une checkbox n'est pas cochée, il faut donc vérifier l'existence du paramètre POST correspondant via par exemple la fonction isset().
Bonne journée,
As tu vérifié le contenu de la variable $_POST['option'] lorsque la checkbox est décochée ?
Le paramètre POST correspondant à la checkbox n'est pas envoyée si celle-ci n'est pas cochée.
Pour vérifier qu'une checkbox n'est pas cochée, il faut donc vérifier l'existence du paramètre POST correspondant via par exemple la fonction isset().
Bonne journée,
Je ne suis pas très développé en php, pourriez vous m'aider juste à développer la vérification de la variable =o
D'ailleurs, le name 'options[]' est utilisé pour d'autres champs aussi.
je devrais le changer pour la checkbox ?
Bonne journée !
Un exemple très simple :
<?php var_dump($_POST); if (isset($_POST['options']['check01'])) { echo 'cochée'; } else { echo 'non cochée'; } ?> <form method="post"> <input type="checkbox" id="check01" name="options[check01]" value="1" /> <input type="submit"> </form>En fait j'ai essayé votre méthode. Tout se passe très bien je dois avouer, mais... Si j'actualise la page (sans sauvegarder D: ) Eh bien il réinitialise tout à 0...
Voici le code que j'ai fait assemblé. J'essaie plusieurs méthodes dans celle ci, mais c'est celle qui me semble la plus proche... Mais l'actualisation fausse tout et vire le 1 de la base de donnée.
<td> <?php if (isset($_POST['options']['check01'])) { echo 'cochée'; $checkval = '1'; update_option('check01', $checkval); } else { echo 'non cochée '; $checkval = ''; delete_option('check01'); } ?> <input type="checkbox" id="check01" name="options[check01]" value="<?php if($checkval == '1') {echo ('1');}else{echo ('0');} ?>" <?php if(get_option('check01') == '1') {echo ('checked="checked"');} ?> /> </td>Merci de votre aide !
Il faut donc vérifier que le formulaire soit envoyé avant le faire le test sur le paramètre $_POST['options']['check01'].
Pour cela, tu peux par exemple vérifier l'existence du paramètre POST correspondant à ton bouton submit, ce dernier sera toujours définie lorsque le formulaire est envoyé.
Par exemple :
<?php if (isset($_POST['monsubmit'])) { // si le formulaire est envoyé if (isset($_POST['options']['check01'])) { echo 'cochée'; } else { echo 'non cochée'; } } ?> <form method="post"> <input type="checkbox" id="check01" name="options[check01]" value="1" /> <input type="submit" name="monsubmit"> </form>J'ai modifié le code ainsi :
if(isset($_POST['pannel_update'])){ if (isset($_POST['checkup']['check01'])) { $checkval = '1'; update_option('check01', $checkval); } else { $checkval = ''; delete_option('check01'); } }<input type="checkbox" id="check01" name="checkup[check01]" value="<?php if($checkval == '1') {echo ('1');}else{echo ('0');} ?>" <?php if(get_option('check01') == '1') {echo ('checked="checked"');} ?> />C'est le seul moyen qu'il marche correctement D:
Enfin merci beaucoup pour l'aide =3 Je met la page en résolu !