Cases à cocher et PHP

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

masseur
WRInaute discret
WRInaute discret
 
Messages: 111
Inscription: 27 Nov 2006

Cases à cocher et PHP

Message le Lun Juil 02, 2007 12:30

Bonjour.

Je possède un formulaire qui affiche des checkbox qui sont cochés suivant la valeur qu'il y a dans la BDD.
Jusque la pas de problème.

Code: Tout sélectionner
<input name='select_exploitation[]' type='checkbox' value='$id' $etat/>


J'aimerai actualiser ma BDD suivant que la case soit coché ou non.
Si la case est cochée j'arrive bien à actualiser ma BDD car je récupère la valeur des id cochées dans ma page de traitement en faisant ceci.

Code: Tout sélectionner
$tableau_select_exploitation = $_POST["select_exploitation"] ;

foreach($tableau_select_exploitation as $val_exploitation) {
...


Cependant si je décoche une case qui était cochée dans ma page de traitement je n'ai aucun moyen de le savoir car aucune valeur ne sera renvoyé.

VOus avez des idées?

Existe t'il des boutons qui renvoient une valeur quand le bouton est coché et une autre quand il n'est pas coché?
COmme cela je ferais passer l'id en hidden est le tour serait joué.

Merci d'avance


biscuit
WRInaute impliqué
WRInaute impliqué
 
Messages: 519
Inscription: 5 Juin 2006

Message le Lun Juil 02, 2007 12:36

Hello,

Tu peux utiliser array_keys() pour savoir quelle cases sont cochées...

jeroen
WRInaute passionné
WRInaute passionné
 
Messages: 2455
Inscription: 30 Aoû 2002

Message le Lun Juil 02, 2007 12:47

Perso je supprime tout puis revalide toutes les cases cochées.

masseur
WRInaute discret
WRInaute discret
 
Messages: 111
Inscription: 27 Nov 2006

Message le Lun Juil 02, 2007 13:04

biscuit a écrit:Hello,

Tu peux utiliser array_keys() pour savoir quelle cases sont cochées...


Le problème est plutot pour savoir celle qui ne sont pas cochées.

Perso je supprime tout puis revalide toutes les cases cochées.


Dans mon cas cela ne peuxpas être fait par rapport au fonctionnement de l'application.

Merci quand même.

ramsesservices
WRInaute discret
WRInaute discret
 
Messages: 84
Inscription: 5 Fév 2007

Message le Lun Juil 02, 2007 13:17

Lors de la validation tu refais la requête vers la db afin d'avoir les anciennes valeurs et tu compares.

Ou encore mettre un champ html "hidden" devant chaque checkbox avec l'info "cochée" ou non.


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8303
Inscription: 23 Nov 2005

Message le Lun Juil 02, 2007 13:20

L'autre solution consiste a traier les cases à cocher en dehors de ton foreach, et de tester si le $_POST['tonchamp'] existe ou non (via la fonction phph isset).

Si uen valeur existe, alors la case est cochée, sinon non.


Bh@Mp0
WRInaute discret
WRInaute discret
 
Messages: 245
Inscription: 18 Jan 2005

Re: Cases à cocher et PHP

Message le Lun Juil 02, 2007 13:21

Bon, c'est assez facile à contourner, et ça vient en fait de ta façon de gérer le formulaire :

Code: Tout sélectionner
<input name='select_exploitation_$id' type='checkbox' value='1' $etat/>


Ainsi tu as 1 quand c'est coché et 0 (null ?) sinon.

Code: Tout sélectionner
foreach($_POST as $key => $value) {
if(substr_compare("select_exploitation_", $key, 0) == 0) {
// si $value = 1 => coché | sinon => pas coché
}
}

masseur
WRInaute discret
WRInaute discret
 
Messages: 111
Inscription: 27 Nov 2006

Message le Lun Juil 02, 2007 13:24

Merci c'est nickel

ramsesservices
WRInaute discret
WRInaute discret
 
Messages: 84
Inscription: 5 Fév 2007

Re: Cases à cocher et PHP

Message le Mar Juil 03, 2007 10:14

Bh@Mp0 a écrit:Bon, c'est assez facile à contourner, et ça vient en fait de ta façon de gérer le formulaire :

Code: Tout sélectionner
<input name='select_exploitation_$id' type='checkbox' value='1' $etat/>


Ainsi tu as 1 quand c'est coché et 0 (null ?) sinon.

Code: Tout sélectionner
foreach($_POST as $key => $value) {
if(substr_compare("select_exploitation_", $key, 0) == 0) {
// si $value = 1 => coché | sinon => pas coché
}
}


Je ne suis pas certain de comprendre la technique que tu utilises ci-dessus.
Quand tu fais ton foreach, la variable $_POST ne contient que les cases qui sont nouvellement cochées. On peut donc en déduire que les autres sont décochées naturellement mais comment savoir si elles l'étaient avant le submit du formulaire ?


Bh@Mp0
WRInaute discret
WRInaute discret
 
Messages: 245
Inscription: 18 Jan 2005

Re: Cases à cocher et PHP

Message le Mar Juil 03, 2007 10:30

ramsesservices a écrit:
Bh@Mp0 a écrit:Bon, c'est assez facile à contourner, et ça vient en fait de ta façon de gérer le formulaire :

Code: Tout sélectionner
<input name='select_exploitation_$id' type='checkbox' value='1' $etat/>


Ainsi tu as 1 quand c'est coché et 0 (null ?) sinon.

Code: Tout sélectionner
foreach($_POST as $key => $value) {
if(substr_compare("select_exploitation_", $key, 0) == 0) {
// si $value = 1 => coché | sinon => pas coché
}
}


Je ne suis pas certain de comprendre la technique que tu utilises ci-dessus.
Quand tu fais ton foreach, la variable $_POST ne contient que les cases qui sont nouvellement cochées. On peut donc en déduire que les autres sont décochées naturellement mais comment savoir si elles l'étaient avant le submit du formulaire ?


Ah ben j'ai pas dit que ça devait le faire :)
Une simple petite modif du code et c'est ok ...

Au lieu d'avoir
Code: Tout sélectionner
<input name='select_exploitation_$id' type='checkbox' value='1' $etat/>
vous mettez
Code: Tout sélectionner
<input name='select_exploitation_$valeurAvantInput_$id' type='checkbox' value='1' $etat/>

Puis dans la boucle, il suffit de récupérer cette "valeurAvantInput" pour savoir si c'était décoché avant ou pas, et ensuite la valeur actuelle pour savoir l'état final.

Enjoy!


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités