Checkbox + validation du formulaire (ASP/SQLServer)

Checkbox + validation du formulaire (ASP/SQLServer) - HTML/CSS - Programmation

Marsh Posté le 03-06-2005 à 16:58:16    

Salut,
 
Je vais essayé d'exposer clairement mon problème:  
 
J'ai créé un tableau à partir d'une requete SQL qui affiche les clients sous contrat de la base ...
Dans ce tableau j'ai 4 colonnes qui correspondent aux statuts des contrats : "signe,facture, annule, perdu".
 
J'utilise des checkbox pour faire ça mais mon problème c'est que je voudrais qu'en cliquant sur "annulé" par exemple, ca me désactive la checkbox "perdu", "signe" et "facture"(on peut pas avoir à la fois "annulé" et "signe" c'est logique).
 
 
J'ai essayé plusieurs techniques mais rien ne fontionne ...
 
Merci de votre aide!  :jap:  
 
 [:alex_]


Message édité par davyd le 06-06-2005 à 18:12:58
Reply

Marsh Posté le 03-06-2005 à 16:58:16   

Reply

Marsh Posté le 06-06-2005 à 09:51:48    

Personne ne peut m'aider  :(

Reply

Marsh Posté le 06-06-2005 à 12:06:16    

ben en javascript, c'est possible, mais si le gars a désactivé le js ben c'est con

Reply

Marsh Posté le 06-06-2005 à 14:09:56    

J'ai trouvé ca en javascript mais je n'arrive pas à le faire pour toutes les lignes  :pt1cable:  
 

Code :
  1. <script language='Javascript'>
  2. function changement()
  3. {
  4.    if (document.getElementById('cb').checked == true)
  5.       document.getElementById('coucou').disabled=true;
  6.    else
  7.       document.getElementById('coucou').disabled=false;
  8. }
  9. </script>

Reply

Marsh Posté le 06-06-2005 à 15:52:20    

avec des boutons radio.
Tu n'auras pas "signé" et "facturé" en meme temps, mais "facturé" sous-entend "signé"
 
sinon comme tu n'as que 2 valeurs possibles pour chaque champ (activé/désactivé), tu peux utiliser "set" (set('signe','facture','annule','perdu')) dans ta table. et si tu suis mon conseil là au-dessus, un "enum" (enum('signe','facture','annule','perdu')) suffira

Reply

Marsh Posté le 06-06-2005 à 15:54:46    

si ce que tu cherches a faire c'est juste de faire en sorte que une seule case puisse être cochée, et que quand on en coche une ca décoche donc les autres préalablement sélectionnées, les boutons radio le font très bien, et sans recours à aucun javascript ou quoi que ce soit

Reply

Marsh Posté le 06-06-2005 à 18:10:05    

ritzle a écrit :

avec des boutons radio.
Tu n'auras pas "signé" et "facturé" en meme temps, mais "facturé" sous-entend "signé"
 
sinon comme tu n'as que 2 valeurs possibles pour chaque champ (activé/désactivé), tu peux utiliser "set" (set('signe','facture','annule','perdu')) dans ta table. et si tu suis mon conseil là au-dessus, un "enum" (enum('signe','facture','annule','perdu')) suffira


 
Oui c'est bon ca marche merci !!
 
par contre j'ai un autre soucis :  
je ne sais pas comment effectuer une mise à jour sur une table sql pour tous les boutons radios qui sont cochés...Vous n'auriez pas une idée ??

Reply

Marsh Posté le 06-06-2005 à 18:13:48    

récupérer les données du formulaire
ou
modifier les entrées de la bdd
???

Reply

Marsh Posté le 06-06-2005 à 18:15:05    

ritzle a écrit :

récupérer les données du formulaire
ou
modifier les entrées de la bdd
???


 
Récupérer les données du formulaire + mettre à jour la BDD (par exemple pour tous les radios cochés signé je mets les devis à signé dans la base SQL)

Reply

Marsh Posté le 06-06-2005 à 18:31:19    

La requete MySQL c'est :
UPDATE `devis` SET `signe` = '1' WHERE `id` = '1' LIMIT 1;
il faut donc que chaque entrée ait un champ unique (ici champ 'id' avec clé primaire et auto_increment)


Message édité par ritzle le 06-06-2005 à 18:31:51
Reply

Marsh Posté le 06-06-2005 à 18:31:19   

Reply

Marsh Posté le 06-06-2005 à 18:35:04    

ritzle a écrit :

La requete MySQL c'est :
UPDATE `devis` SET `signe` = '1' WHERE `id` = '1' LIMIT 1;
il faut donc que chaque entrée ait un champ unique (ici champ 'id' avec clé primaire et auto_increment)


 
Ouai je sais comment faire en SQL mais le problème est que je n'arrive pas à séparer les différentes lignes ...
il me faudrait un truc genre :  
 

Code :
  1. for (toutes les lignes)
  2. if ('signé' est coché) alors UPDATE TABLE SET num=1 where nom="NUMERODELALIGNE"
  3. else rien


Reply

Marsh Posté le 06-06-2005 à 18:37:30    

la le truc le plus simple c'est de mettre les champs de la base en "enum" ou "set" comme je te l'avais conseillé.
donc ca donne un truc du genre :
 

Code :
  1. if( !empty($_POST['etat_devis']) )
  2. {
  3.   //ici il faut verifier que $_POST['etat_devis'] contient une bonne valeur pour ne pas enregistrer n'importe quoi
  4.   $requete = "UPDATE `devis` SET `etat_devis` = '" . $_POST['etat_devis'] . "' WHERE `id` = '" . $_POST['id'] . "' LIMIT 1";
  5. }


Reply

Marsh Posté le 07-06-2005 à 09:16:51    

ritzle a écrit :

la le truc le plus simple c'est de mettre les champs de la base en "enum" ou "set" comme je te l'avais conseillé.
donc ca donne un truc du genre :
 

Code :
  1. if( !empty($_POST['etat_devis']) )
  2. {
  3.   //ici il faut verifier que $_POST['etat_devis'] contient une bonne valeur pour ne pas enregistrer n'importe quoi
  4.   $requete = "UPDATE `devis` SET `etat_devis` = '" . $_POST['etat_devis'] . "' WHERE `id` = '" . $_POST['id'] . "' LIMIT 1";
  5. }



 
Merci du conseil ... mais comment mettre en place correctement le "enum" pour qu'il prenne en compte toutes mes lignes (je ne sais pas combien j'ai de lignes vu que cela dépend de la table SQL) ?

Reply

Marsh Posté le 07-06-2005 à 10:15:51    

Voilà en fait j'ai du mal à vraiment faire comprendre ce que je veux donc j'ai fait une capture ...
 
http://img70.echo.cx/img70/5759/sanstitre6lp.jpg
 
Je voudrais que le bouton "valider" soumette le formulaire et que en fonction de la case cochée la base SQL soit modifié ...

Reply

Marsh Posté le 07-06-2005 à 15:11:01    

le nombre de ligne dépend de ta base de donnée et tu ne peux pas prévoir combien tu en as.
Donc j'imagine que tu fais une récupération de données dans ta base, puis tu fais afficher le formulaire avec une boucle.
Chaque champ du formulaire tu n'as qu'a l'appelé par exemple $champ.$incrementation , où $incrementation est l'indice de ta boucle.
 
Donc si tu as 3 lignes à faire afficher, ils seront appelés $champ0, $champ1, $champ2.
 
Pour récupérer les valeurs entrées dans le formulaire, tu refais une boucle, et en faisant comme Ritzle l'a conseillé ca donnera :

Code :
  1. if( !empty($_POST['champ'.$incrementation]) )
  2.     {
  3.       //ici il faut verifier que $_POST['champ'.$incrementation] contient une bonne valeur pour ne pas enregistrer n'importe quoi
  4.  
  5.       $requete = "UPDATE `devis` SET `etat_devis` = '" . $_POST['champ'.$incrementation] . "' WHERE `id` = '" . $_POST['id'] . "' LIMIT 1";
  6.    
  7.     }


 
par exemple


Message édité par Djebel1 le 07-06-2005 à 15:11:48
Reply

Marsh Posté le 08-06-2005 à 11:10:22    

Merci de votre aide je vais essayer tout ça  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed