Lorsque dans un formulaire il y a des champs de type checkbox non
cochés, les POST['checkbox'] ne sont pas initialisés, et les champs
correspondants dans la base mysql ne peuvent se mettre à jour avec la
valeur "0". Par contre quand la case est cochée le POST renvoie bien la
valeur "1".
Bien sur on peut tester l'initialisation du POST avec un if. Mais comme
j'ai beaucoup de formulaires avec beaucoup de champs, j'ai automatisé
la génération des formulaires ainsi que leur update avec un script PHP
qui utilise l'indice et la valeur des $_POST.
j'ai donc eu l'idée d'utiliser les champs de type hidden qui auront
leur $POST forcement initialisés quelque soit leur valeur. Mon astuce
consiste à modifier le "value" d'un champ hidden de 0 à 1 lorsque je
coche la case en question. Mais manifestement après test, le champ
hidden (qui doit porter le même nom que la checkbox pour l'inscription
dans la BD) n'est pas mis à jour. Vous trouverez ci-joint la page de
code en question :
<script language="javascript">
function value_box(mybox)
{
if
(mybox.checked==true){this.value=1;document.myform.active.value=1} else
{this.value=0;document.myform.active.value=0;}
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
SAM
Freegate a écrit :
Bonjour,
Lorsque dans un formulaire il y a des champs de type checkbox non cochés, les POST['checkbox'] ne sont pas initialisés, et les champs correspondants dans la base mysql ne peuvent se mettre à jour avec la valeur "0". Par contre quand la case est cochée le POST renvoie bien la valeur "1". Bien sur on peut tester l'initialisation du POST avec un if. Mais comme j'ai beaucoup de formulaires avec beaucoup de champs, j'ai automatisé la génération des formulaires ainsi que leur update avec un script PHP qui utilise l'indice et la valeur des $_POST. j'ai donc eu l'idée d'utiliser les champs de type hidden qui auront leur $POST forcement initialisés quelque soit leur valeur. Mon astuce consiste à modifier le "value" d'un champ hidden de 0 à 1 lorsque je coche la case en question. Mais manifestement après test, le champ hidden (qui doit porter le même nom que la checkbox pour l'inscription dans la BD) n'est pas mis à jour. Vous trouverez ci-joint la page de code en question :
Comme on a 2 éléments de même nom, faut s'adresser au 2ième : active[1]
Voici pour tout élément de tous formulaires (le form n'a pas besoin d'être nommé pour être trouvé) :
Parfois on n'a qu'un 'active' parfois 2. Ça va gazer pour MySql ?
-- sm
Freegate a écrit :
Bonjour,
Lorsque dans un formulaire il y a des champs de type checkbox non
cochés, les POST['checkbox'] ne sont pas initialisés, et les champs
correspondants dans la base mysql ne peuvent se mettre à jour avec la
valeur "0". Par contre quand la case est cochée le POST renvoie bien la
valeur "1".
Bien sur on peut tester l'initialisation du POST avec un if. Mais comme
j'ai beaucoup de formulaires avec beaucoup de champs, j'ai automatisé la
génération des formulaires ainsi que leur update avec un script PHP qui
utilise l'indice et la valeur des $_POST.
j'ai donc eu l'idée d'utiliser les champs de type hidden qui auront leur
$POST forcement initialisés quelque soit leur valeur. Mon astuce
consiste à modifier le "value" d'un champ hidden de 0 à 1 lorsque je
coche la case en question. Mais manifestement après test, le champ
hidden (qui doit porter le même nom que la checkbox pour l'inscription
dans la BD) n'est pas mis à jour. Vous trouverez ci-joint la page de
code en question :
Comme on a 2 éléments de même nom, faut s'adresser au 2ième : active[1]
Voici pour tout élément de tous formulaires
(le form n'a pas besoin d'être nommé pour être trouvé) :
Lorsque dans un formulaire il y a des champs de type checkbox non cochés, les POST['checkbox'] ne sont pas initialisés, et les champs correspondants dans la base mysql ne peuvent se mettre à jour avec la valeur "0". Par contre quand la case est cochée le POST renvoie bien la valeur "1". Bien sur on peut tester l'initialisation du POST avec un if. Mais comme j'ai beaucoup de formulaires avec beaucoup de champs, j'ai automatisé la génération des formulaires ainsi que leur update avec un script PHP qui utilise l'indice et la valeur des $_POST. j'ai donc eu l'idée d'utiliser les champs de type hidden qui auront leur $POST forcement initialisés quelque soit leur valeur. Mon astuce consiste à modifier le "value" d'un champ hidden de 0 à 1 lorsque je coche la case en question. Mais manifestement après test, le champ hidden (qui doit porter le même nom que la checkbox pour l'inscription dans la BD) n'est pas mis à jour. Vous trouverez ci-joint la page de code en question :
Comme on a 2 éléments de même nom, faut s'adresser au 2ième : active[1]
Voici pour tout élément de tous formulaires (le form n'a pas besoin d'être nommé pour être trouvé) :
Parfois on n'a qu'un 'active' parfois 2. Ça va gazer pour MySql ?
-- sm
Freegate
Le 29/06/2008, SAM a supposé :
Freegate a écrit :
Bonjour,
Lorsque dans un formulaire il y a des champs de type checkbox non cochés, les POST['checkbox'] ne sont pas initialisés, et les champs correspondants dans la base mysql ne peuvent se mettre à jour avec la valeur "0". Par contre quand la case est cochée le POST renvoie bien la valeur "1". Bien sur on peut tester l'initialisation du POST avec un if. Mais comme j'ai beaucoup de formulaires avec beaucoup de champs, j'ai automatisé la génération des formulaires ainsi que leur update avec un script PHP qui utilise l'indice et la valeur des $_POST. j'ai donc eu l'idée d'utiliser les champs de type hidden qui auront leur $POST forcement initialisés quelque soit leur valeur. Mon astuce consiste à modifier le "value" d'un champ hidden de 0 à 1 lorsque je coche la case en question. Mais manifestement après test, le champ hidden (qui doit porter le même nom que la checkbox pour l'inscription dans la BD) n'est pas mis à jour. Vous trouverez ci-joint la page de code en question :
Comme on a 2 éléments de même nom, faut s'adresser au 2ième : active[1]
Voici pour tout élément de tous formulaires (le form n'a pas besoin d'être nommé pour être trouvé) :
Parfois on n'a qu'un 'active' parfois 2. Ça va gazer pour MySql ?
ça marche super, même je ne comprends pas tout. As tu un site qui pourrait m'aider à décrypter ta syntaxe ?
Merci
Le 29/06/2008, SAM a supposé :
Freegate a écrit :
Bonjour,
Lorsque dans un formulaire il y a des champs de type checkbox non cochés,
les POST['checkbox'] ne sont pas initialisés, et les champs correspondants
dans la base mysql ne peuvent se mettre à jour avec la valeur "0". Par
contre quand la case est cochée le POST renvoie bien la valeur "1".
Bien sur on peut tester l'initialisation du POST avec un if. Mais comme
j'ai beaucoup de formulaires avec beaucoup de champs, j'ai automatisé la
génération des formulaires ainsi que leur update avec un script PHP qui
utilise l'indice et la valeur des $_POST.
j'ai donc eu l'idée d'utiliser les champs de type hidden qui auront leur
$POST forcement initialisés quelque soit leur valeur. Mon astuce consiste à
modifier le "value" d'un champ hidden de 0 à 1 lorsque je coche la case
en question. Mais manifestement après test, le champ hidden (qui doit
porter le même nom que la checkbox pour l'inscription dans la BD) n'est pas
mis à jour. Vous trouverez ci-joint la page de code en question :
Comme on a 2 éléments de même nom, faut s'adresser au 2ième : active[1]
Voici pour tout élément de tous formulaires
(le form n'a pas besoin d'être nommé pour être trouvé) :
Lorsque dans un formulaire il y a des champs de type checkbox non cochés, les POST['checkbox'] ne sont pas initialisés, et les champs correspondants dans la base mysql ne peuvent se mettre à jour avec la valeur "0". Par contre quand la case est cochée le POST renvoie bien la valeur "1". Bien sur on peut tester l'initialisation du POST avec un if. Mais comme j'ai beaucoup de formulaires avec beaucoup de champs, j'ai automatisé la génération des formulaires ainsi que leur update avec un script PHP qui utilise l'indice et la valeur des $_POST. j'ai donc eu l'idée d'utiliser les champs de type hidden qui auront leur $POST forcement initialisés quelque soit leur valeur. Mon astuce consiste à modifier le "value" d'un champ hidden de 0 à 1 lorsque je coche la case en question. Mais manifestement après test, le champ hidden (qui doit porter le même nom que la checkbox pour l'inscription dans la BD) n'est pas mis à jour. Vous trouverez ci-joint la page de code en question :
Comme on a 2 éléments de même nom, faut s'adresser au 2ième : active[1]
Voici pour tout élément de tous formulaires (le form n'a pas besoin d'être nommé pour être trouvé) :
Parfois on n'a qu'un 'active' parfois 2. Ça va gazer pour MySql ?
ça marche super, même je ne comprends pas tout. As tu un site qui pourrait m'aider à décrypter ta syntaxe ?
Merci
SAM
Freegate a écrit :
Le 29/06/2008, SAM a supposé :
Freegate a écrit :
Bonjour,
j'ai donc eu l'idée d'utiliser les champs de type hidden qui auront leur $POST forcement initialisés quelque soit leur valeur. Mon astuce consiste à modifier le "value" d'un champ hidden de 0 à 1 lorsque je coche la case en question. Mais manifestement après test, le champ hidden (qui doit porter le même nom que la checkbox pour l'inscription dans la BD) n'est pas mis à jour. Vous trouverez ci-joint la page de code en question :
Comme on a 2 éléments de même nom, faut s'adresser au 2ième : active[1]
Voici pour tout élément de tous formulaires (le form n'a pas besoin d'être nommé pour être trouvé) :
2) mybox.value le '.' est un signe d'appartenance et non pas d'addition comme en php c'est donc le value de this et this ici est l'input truc_machin
3) mybox.form.elements[mybox.name][1].value
mybox.form = le form qui contient mybox mybox.form.elements = les éléments de ce form mybox.form.elements[mybox.name] = les éléments nommés comme mybox mybox.form.elements[mybox.name][1] = le second "truc_machin"
4) mybox.checked?
mybox.checked = bon là on comprend, non ? mybox.checked? = "truc_machin" (le 1er) est-il coché? true/false
5) '1' : '0'
si la condition précédente est vraie hop ! '1' sinon '0'
M'enfin les 4 et 5, on a ça aussi en php
Ce qui nous donne : la valeur de l'élément (cliqué) a la valeur de l'élément qui a le même nom mais en position 2 qui lui même prend la valeur 1 ou 0 selon que l'élément (qui a le onclick) est coché ou non
Résultat : si la checkbox est cochée : - elle prend la valeur 1 - le hidden de même nom que la checbox prend la valeur 1 snon : - les deux prennent la valeur 0
j'ai donc eu l'idée d'utiliser les champs de type hidden qui auront
leur $POST forcement initialisés quelque soit leur valeur. Mon astuce
consiste à modifier le "value" d'un champ hidden de 0 à 1 lorsque
je coche la case en question. Mais manifestement après test, le champ
hidden (qui doit porter le même nom que la checkbox pour
l'inscription dans la BD) n'est pas mis à jour. Vous trouverez
ci-joint la page de code en question :
Comme on a 2 éléments de même nom, faut s'adresser au 2ième : active[1]
Voici pour tout élément de tous formulaires
(le form n'a pas besoin d'être nommé pour être trouvé) :
2) mybox.value
le '.' est un signe d'appartenance et non pas d'addition comme en php
c'est donc le value de this et this ici est l'input truc_machin
3) mybox.form.elements[mybox.name][1].value
mybox.form = le form qui contient mybox
mybox.form.elements = les éléments de ce form
mybox.form.elements[mybox.name] = les éléments nommés comme mybox
mybox.form.elements[mybox.name][1] = le second "truc_machin"
4) mybox.checked?
mybox.checked = bon là on comprend, non ?
mybox.checked? = "truc_machin" (le 1er) est-il coché? true/false
5) '1' : '0'
si la condition précédente est vraie hop ! '1'
sinon '0'
M'enfin les 4 et 5, on a ça aussi en php
Ce qui nous donne :
la valeur de l'élément (cliqué) a la valeur de l'élément qui a le même
nom mais en position 2 qui lui même prend la valeur 1 ou 0 selon que
l'élément (qui a le onclick) est coché ou non
Résultat :
si la checkbox est cochée :
- elle prend la valeur 1
- le hidden de même nom que la checbox prend la valeur 1
snon :
- les deux prennent la valeur 0
Un cours de JS ?
<http://jacques-guizol.developpez.com/javascript/>
<http://fr.selfhtml.org/javascript/index.htm>
<http://www.salemioche.net/javascript.php>
<http://www.cybwarrior.com/FR/articles/JavaScript/>
j'ai donc eu l'idée d'utiliser les champs de type hidden qui auront leur $POST forcement initialisés quelque soit leur valeur. Mon astuce consiste à modifier le "value" d'un champ hidden de 0 à 1 lorsque je coche la case en question. Mais manifestement après test, le champ hidden (qui doit porter le même nom que la checkbox pour l'inscription dans la BD) n'est pas mis à jour. Vous trouverez ci-joint la page de code en question :
Comme on a 2 éléments de même nom, faut s'adresser au 2ième : active[1]
Voici pour tout élément de tous formulaires (le form n'a pas besoin d'être nommé pour être trouvé) :
2) mybox.value le '.' est un signe d'appartenance et non pas d'addition comme en php c'est donc le value de this et this ici est l'input truc_machin
3) mybox.form.elements[mybox.name][1].value
mybox.form = le form qui contient mybox mybox.form.elements = les éléments de ce form mybox.form.elements[mybox.name] = les éléments nommés comme mybox mybox.form.elements[mybox.name][1] = le second "truc_machin"
4) mybox.checked?
mybox.checked = bon là on comprend, non ? mybox.checked? = "truc_machin" (le 1er) est-il coché? true/false
5) '1' : '0'
si la condition précédente est vraie hop ! '1' sinon '0'
M'enfin les 4 et 5, on a ça aussi en php
Ce qui nous donne : la valeur de l'élément (cliqué) a la valeur de l'élément qui a le même nom mais en position 2 qui lui même prend la valeur 1 ou 0 selon que l'élément (qui a le onclick) est coché ou non
Résultat : si la checkbox est cochée : - elle prend la valeur 1 - le hidden de même nom que la checbox prend la valeur 1 snon : - les deux prennent la valeur 0