UPDATE champ checkbox coché ou non

WRInaute discret
Bonjour à tous,

En fait j'ai une checkbox. Quand je la coche j'aimerais que j'enregistre son statut coché dans ma base de données de sorte que l'on retienne ce que l'utilisateur avait coché. J'ai essayé avec un UPDATE mais il ne m'enregistre rien.

Voici comment je récupère la valeur

Code:
<?php
connexion_DB('abscence');

if (isset($_POST['normale'])) // la case inscription a été cochée donc affiche la valeur de VALUE de mon formulaire

{
echo $_POST['normale'];

$sql=mysql_query("UPDATE parametres SET statut="$_POST['normale']" WHERE ID_PARAM=1"); // je mets à jour le champ de ma table afin que je retienne qu'il est coché.
}

mysql_query($sql)or die('Erreur SQL !'.$sql.''.mysql_error());
 
echo "<br/>".$sql;

?>	  
  
 <FORM method="POST">
   <input type="checkbox" name="normale"value="try">Normales<br>
  <input type="submit" value="Afficher les résultats"/>
</form>


Quelle solution existe ?

John
 
WRInaute impliqué
Déjà,

Code:
if (isset($_POST['normale']))
Ne va pas vérifier si la case est cochée mais si la variable existe. Or Elle existe dans tous les cas car elle fait partie du formulaire.

Edit: J'ai un doute, quelqu'un peut confirmer ? :oops:

Mais ton problème ne vient pas directement de là. Essaies avec:
Code:
statut='".$_POST['normale']."'

D'autre part, je ne sais plus si les champs sql sont casse dépendants mais ton champ ID_PARAM est-il écrit en majuscule dans ta table ?


Loïc
 
WRInaute impliqué
Ne va pas vérifier si la case est cochée mais si la variable existe. Or Elle existe dans tous les cas car elle fait partie du formulaire.

Exact.

En plus, dans ce cas, même un !empty ne fonctionne pas ...

je suis intéressé par la soluce car je viens de rencontrer le même hic et je n'ai pas trouvé ...
 
WRInaute impliqué
Non, un checkbox non coché ne renvoie RIEN.

Ah bon ? En théorie, c'est vrai mais pourtant je viens encore de tester et si :wink:

L'id du champ existe via le formulaire, donc même non coché le isset sur le champ renvoie true, et si tu testes avec empty, ça ne passe pas non plus mais là je ne comprends pas pourquoi. Je me suis même renseigné sur le comportement des checkbox et en théorie le non coché ne renvoie rien. Enfin je me plante ss doute qq part :roll:

ça va faire boulet là mais tu peux donner un exemple de test sur un checkbox ?
 
WRInaute impliqué
D'accord, je ne dis pas que tu as tort, je dis que je l'ai testé tantôt et une heure hier soir sans parvenir à trouver la solution parce que ça passait tout le temps, d'où je pense que je teste mal, d'où je te demande de montrer la manip' que tu fais, tout simplement.

Tu veux bien me la montrer :lol: ?

EDIT : je viens de relire le début du post, et en fait ça ne correspond pas à mon problème puisque, effectivement Jeroen, si ce n'est pas coché le champ ne renvoie aucune valeur, mais il existe bel et bien ..., Je me suis mal exprimé :roll:
 
WRInaute passionné
NON : il n'existe pas, et en GET tu peux t'en rendre compte dans l'url renvoyée

Code:
<?php
foreach($_GET as $k => $v) echo $k." : ".$v."<br />";
?>    
<form method="get">
  <input type="checkbox" name="test" value="1" <?php if (isset($_GET['test'])) echo "checked=\"checked\""; ?>/><input type="submit" value="Afficher" />
</form>
 
WRInaute impliqué
Bon ben je m'incline, ça fonctionne alors que je me suis arraché les cheveux hier parce que cette p... de variable existait toujours :twisted: TGrâce à toi je viens de comprendre pourquoi : après ce test je créais une variable de session contenant la valeur en question. En aval, je testais l'existence de la variable de session. Comme je ne la détruisais pas, ben elle existait toujours et j'ai confondu ce checkbox avec la variable de session. CQFD

Donc une checkbox vide ne renvoie bel et bien RIEN :wink:

merci et @+
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut