Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
Bonjour,
J'aimerais savoir coment récupérer la valeur d'une checkbox pour la mettre dans une base de données, j'ai un formulaire où il ya un choix si un client posséde un contrat et/ou des tickets mais je ne sais pas comment reconnaitre si le checkbox a été coché ou non pour ensuite mettre l'infos ds la bdd.
<tr> <td align="right" width="130px">Contrat</td> <td><Input type="checkbox" name="contrat_mnt" value=1></td> </tr> <tr> <td align="right" width="130px">Nb Postes</td> <td><input type="text" size="5" name="nb_poste_mnt"></td> </tr> <tr> <td align="right" width="130px">Date</td> <td><input name="date" type="text" size="19" maxlength='10'></td> </tr> <tr> <td align="right" width="130px">Tickets</td> <td><Input type="checkbox" name="ticket_mnt" value=1></td> </tr> <tr> <td align="right" width="130px">Nb tickets acheté :</td> <td><input type="text" size="5" name="nb_ticket_achete"></td> </tr>
Je sais qu'il existe l'attribut checked mais je ne voit pas comment l'utiliser ici. Je ne sais pas non plus a quoi correspond le
value=1
Hors ligne
salut,
en fait, si la checkbox est cohée, tu auras une variable post du nom de ta checkbox avec la valeur value.
Si la case n'est pas cochée, la variable n'aura pas la valeur.
Hors ligne
Donc je peux faire (si le nom de la checkbox est checkbox)
$checkbox = $_REQUEST["checkbox"]
et mettre la valeur de $checkbox ds la bdd?
Hors ligne
oui mais plutôt que _REQUEST, utilises plutot _POST tu auras moins de chance d'avoir des comportements étranges a cause de deux variables de même nom.
Hors ligne
j'ai donc fait ceci
<tr> <td align="right" width="130px">Contrat</td> <td><Input type="checkbox" name="contrat_mnt"></td> </tr>
Ensuite ds la requete :
$contrat_mnt = $_POST["contrat_mnt"];
et ds la meme page
$sql = "insert into client (CONTRAT) values ('$contrat_mnt')Puis ds la page détail pour afficher l'information :
<tr> <td align="right" width="130px">Contrat</td> <td><Input type="checkbox" disabled name="contrat_mnt" value='<?=$clients["CONTRAT"]?>'></td> </tr>
Mais la checkbox n'est jamais cochée
Hors ligne
Dans ton premier code, il faut donner une valeur a ton champ input (value='valeur_si_coché')
dans le dernier code, tu as mis ton champ en disabled, c'est normal ? c'est pour qu'il ne soit pas modifié ? Dans ce cas pourquoi ne pas faire simplement
if($clients['TICKET'] != "") { echo "Vous avez un contrat"; }
?
Hors ligne
Oui c'est juste une page d'aperçu des informations donc disabled, mais pour la page de modification il n'y a pas de disabled, c'est le patron qui veux ça comme ça ![]()
Hors ligne
Merci ça roule maintenant!
Hors ligne
Un dernier petit truc, ya pas qque chose qui est l'inverse de value='valeur_si_coché' parce que si par exemple j'ai mis value=1 mais que rien n'est coché il n'envoir rien donc ça créé une erreur car le $_POST ne reçoit rien
Hors ligne
en effet,
Tu ne verras l'erreur Notice que sur ton serveur de développement (normalement).
Sinon, pour la faire disparaitre, c'est assez simple :
if((isset($_POST['contrat_mnt'])) && ($_POST['contrat_mnt'] != "")) { // La case est cochée
$contrat_mnt = $_POST['contrat_mnt'];
} else { // La case n'est pas cochée
$contrat_mnt = NULL;
}
Hors ligne
l'idée dans ce cas la, est de faire un input type='hidden'
tu fait ta vérification pour la validation du formulaire à ce moment la
et si la case n'est pas cochée, tu modifie la valeur de la variable
Hors ligne
($_POST['contrat_mnt'] ! ""))
rectification
($_POST['contrat_mnt'] != ""))
C'est parfait, encore merci ![]()
Hors ligne