[Conception] Formulaire et case à cocher
Salut à tous,
Je rencontre 3 pb php/mysql, il y aura donc 3 messages!
Je débute en php, vous allez peut-être trouver les questions faciles, tant
mieux dans ce cas:
J'ai une base de données mysql et j'y accède via des pages écrites en PHP..
dans ma table transac (transactions) j'ai un champ "bordereau" qui vaut
NULL ou 1 qui permet de savoir si une transaction a été relevée par la
banque
ou non.
J'ai mis en place dans un fichier php d'affichage des transaction
comme ceci ceci:
Code:
1 2 3 4 5 6 7
| <? if ($row["bordereau"]==1) {?>
<INPUT type=checkbox name=valide value="caseacocher" checked>
<? }
else {
?>
<INPUT type=checkbox name=valide value="caseacocher" unchecked>
<? } ?> |
Jusque là tout va bien... la case est cochée si la transaction a été relevée
par la banque (bordereau=1) et décochée sinon.
Seulement voilà, je voudrais qu'à chaque clique sur le case
cochage/décochage, le champ bordereau soit ajusté
(ie si l'utilisateur coche la case, le champ est mis à 1
et si il décoche la case, le champ est mis à 0)
Sûrement faut-il utiliser la commande onclick, mais où la placer? comment
s'en servir?
quels arguments mettre? Faut-il placer du code dans une page séparée?
Voilà
merci d'avance
Mathieu
oui je suis bien sarthois
alors voici ce que j'ai essayé de faire depuis.
Le problème c'est que si je soumets tout le formulaire, il va s'afficher la page modifform.php, qui permet de modifier les autres champs.
Ce que je voudrais, c'est que "discrètement" la valeur du champ bordereau soit mise à 1 si la case est cochée, NULL si elle ne l'est pas.
Au chargement de la page, elle est bien cochée ou décochée comme ça doit être le cas. Voici donc le code de 2 formulaires qui se suivent:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| <form method=post>
<td>
<? if ($row["bordereau"]==1) {?>
<INPUT type=checkbox name="bordereau2" checked onclick="soumettre();">
<? }
else {
?>
<INPUT type=checkbox name="bordereau2" unchecked onclick="soumettre();">
<? } ?>
</td>
<script>
function soumettre(){
var f = document.forms[0];
f.submit();
if isset($bordereau2)
then {$requeteMathieu="update transac set
descript='".$descript."',
lieu='".$lieu."',
datetransac='".$datetransac."',
montant='".$montant."',
compte='$compte',
bordereau='1'
where enrid=$enrid";}
else {$requeteMathieu="update transac set
descript='".$descript."',
lieu='".$lieu."',
datetransac='".$datetransac."',
montant='".$montant."',
compte='$compte',
bordereau=NULL
where enrid=$enrid"};
$result=mysql_query($requeteMathieu);
echo "bonjour";
}
</script>
</form>
<?echo "<td align=right><h2>".$row["virement"]."</td>"; ?>
<form action="modifform.php" method=post>
<input type=hidden name=descript value=<?echo $row["descript"]?>>
<input type=hidden name=datetransac value=<?echo $row["datetransac"]?>>
<input type=hidden name=lieu value=<?echo $row["lieu"]?>>
<input type=hidden name=montant value=<?echo $row["montant"]?>>
<input type=hidden name=compte value=<?echo $row["compte"]?>>
<input type=hidden name=enrid value= <?echo $row["enrid"]?>>
<td><input type=submit value="modifier"></td>
</form> |
Le premier formulaire, c'est une tentative manquée pour que le fait de cocher ou de décocher la case exécute une requête qui modifie UNIQUEMENT le champ bordereau dans la table.
Le deuxième (qui fonctionne), affiche un formulaire pré-complété qui permet de mettre à jour la base de données en la modifiant.
Voilà, donc comment faire pour modifier la base de données quand on titille le case à cocher, sans afficher de nouvelle page?
Merci
Mathieu72