Verification checkbox, javascript

Verification checkbox, javascript - HTML/CSS - Programmation

Marsh Posté le 08-03-2007 à 21:28:34    

Bonjour, voila j'ai un formulaire qui me permet d'ajouter des produit dans une base de donnée. Il faut pour sa, selectionner une ou plusieur sous categorie de produit via les checkbox généré par un script php. Je voudrais pouvoir controler qu'il y est au moin une case de coché, j'ai trouver une fonction javascript (elle est au début de mon script) mais elle ne fonctionne pas. Si quelqu'un veut bien m'aider. Merci d'avance

 

form_ajoutproduit.php

Code :
  1. <html>
  2. <head>
  3. <title></title>
  4. <SCRIPT type="text/javascript" SRC="verif_form.js"> </SCRIPT>
  5. </head>
  6. <body >
  7. <form name="formulaire"  enctype="multipart/form-data" action="ajout_form_produit.php" method="post"  onSubmit="return verif_ajout_produit(this.elements['souscategorie[]'])">
  8. <?
  9. require('_conn_admin.php');
  10. $req = "SELECT id, nom_cat FROM produit_categorie";
  11. $ret = mysql_query ($req) or die (mysql_error ());
  12. while($data = mysql_fetch_array($ret)) { ?>
  13. <i>
  14. <?php echo "<ul>".$data['nom_cat'];
  15. //echo "<a href='supprcategorie.php?idcat=".$data['categorie']."'>Suppression</a><br>";?>
  16. </i>
  17.  <?php
  18.  $req2 = "SELECT id, nom_souscat FROM produit_souscategorie WHERE id_categorie like '".$data['id']."'";
  19.  $ret2 = mysql_query ($req2) or die (mysql_error ());
  20. ///////////////////////////////////génération de checkbox//////////////////////////////
  21.  while($data = mysql_fetch_array($ret2)) {
  22.   echo "<li>";
  23.   echo "<INPUT type='checkbox' name='souscategorie[]' value='".$data['id']."'>".$data['nom_souscat']."<br>";
  24.   echo "</li>";
  25.  }
  26. /////////////////////////////////////////////////////////////////////////////////////////////
  27. echo "</ul>";
  28. }
  29. ?>
  30. <h3>Envoi d'une image</h3>
  31. <input type="hidden" name="MAX_FILE_SIZE" value="<? echo 5000*1024;?>">
  32. <input type="file" name="fic">
  33. <table>
  34. <th colspan="2">Formulaire de contact</th>
  35. <tr><td>Nom du produit : </td><td><input name="nom" type="text" size="50"></td></tr>
  36. <tr><td>Poids : <td><input name="poids" type="text" size="50"></td></tr>
  37. <tr><td>Prix : <td><input name="prix" type="text" size="50"></td></tr>
  38. <tr><td>Quantite <td><input name="quantite" type="text" size="50"></td></tr>
  39. <tr><td>Description</td><td><textarea name="texte" cols="40" rows="10"></textarea></td></tr>
  40. <tr id="nepasimprimer"><td><input name="annuler" type="reset" value="Annuler"></td><td><input name="soumettre" type="submit" value="Envoyer"></td></tr>
  41. </table>
  42. </form>
  43. </body>
  44. </html>
 

verif_form.js

Code :
  1. function verif_ajout_produit(ch) {
  2. for(i=0;i<ch.length;i++){
  3. if(!ch[i].checked){
  4. alert("Veuillez selectionner une ou plusieurs sous-categories, svp" );
  5. return false;
  6.     }
  7. }
  8.     if(document.formulaire.nom.value == "" )  {
  9.    alert("Veuillez selectionner un nom, svp" );
  10.    document.formulaire.nom.focus();
  11.    return false;
  12.   }
  13. else if(document.formulaire.poids.value == "" )  {
  14.    alert("Veuillez entrer un poids, svp" );
  15.    document.formulaire.poids.focus();
  16.    return false;
  17.   }
  18.    else if(document.formulaire.prix.value == "" )  {
  19.    alert("Veuillez entrer un prix, svp" );
  20.    document.formulaire.prix.focus();
  21.    return false;
  22.   }
  23.     else if(document.formulaire.quantite.value == "" )  {
  24.    alert("Veuillez entrer une quantité, svp" );
  25.    document.formulaire.quantite.focus();
  26.    return false;
  27.   }
  28.    else if (isNaN(document.quantite.cp.value) == true){
  29. alert("Une quantite ne peut pas contenir de lettres" );
  30. return false;
  31. }
  32. else if(document.formulaire.texte.value == "" )  {
  33.    alert("Veuillez entrer une description, svp" );
  34.    document.formulaire.texte.focus();
  35.    return false;
  36.   }
  37. return true
  38. }


Message édité par mule_panda le 09-03-2007 à 23:42:59
Reply

Marsh Posté le 08-03-2007 à 21:28:34   

Reply

Marsh Posté le 08-03-2007 à 21:40:09    

!ch[i].checked plutôt


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 08-03-2007 à 22:07:06    

J'ai modifié le script, mais cel ane change rien,  :cry: , je pense que sa vien du faite que mes checkboxe sont dans une variable de tableau

Code :
  1. souscategorie[]

 :??:

Reply

Marsh Posté le 09-03-2007 à 10:32:11    

:??:

Reply

Marsh Posté le 09-03-2007 à 10:37:44    

c'est quoi atleastone? tu t'en sers nulle part!
Et le alert après le return false risque pas de marcher :o

Reply

Marsh Posté le 09-03-2007 à 23:45:27    

J'ai modifié le script suivant tes conseils, mais il ne fonctionne toujours, pas. en enlevant la fonction de controle des case a coché il fonctionne trés bien. mais il pert de son interet.  :heink:

Reply

Marsh Posté le 10-03-2007 à 06:03:24    

Ta fonction ne fonctionnera pas, simplement parce qu'elle vérifie que TOUTES les cases sont cochées. En testant tu l'aurais remarqué.
 

Code :
  1. <script type="text/javascript">
  2.  // <![CDATA[
  3.   function verif_ajout_produit(ch) {
  4.    var j = 0;
  5.    for(i=0;i<ch.length;i++){
  6.     if(ch[i].checked) {
  7.      j++;
  8.     }
  9.    }
  10.    if(j == 0){
  11.      alert("Veuillez selectionner une ou plusieurs sous-categories, svp" );
  12.      return false;
  13.     }
  14.   }
  15.  // ]]>
  16.  </script>


 
Cela fonctionnera mieux.
 
Dans un deuxième temps, y'a enormément de trucs à corriger dans ta page
 
Rien que pour l'ergonomie, utilise
 

Code :
  1. echo '<p><input type="checkbox" name="souscategorie[]" id="',$data['id'],'" value="',$data['id'],'"><label for="',$data['id'],'">',$data['nom_souscat'],'</label></p>';


 
Qui sera plus optimisé, et surtout plus ergonomique, dans la mesure ou pour cocher une case un clic que le texte associé suffit (le texte dans le label)
 
Et puis j'ai pas compris l'intéret de :
 

Code :
  1. value="<? echo 5000*1024;?>"


 
 
Ca fait 5120000, quel est l'interêt de le faire calculer à php?


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 10-03-2007 à 12:16:21    

jte remercie beaucoup shinuza, pour ton aide si matinale  :jap: , et je remercie aussi les autre personne pour le temps passé sur le probléme.
 
shinuza = pour le 5000*1024, c'est que j'ai récupéré un ancien script et j'ai pas prit le temps de l'optimisé. sinon pour le checkbox avec label, super idée, jte remerci encore.

Reply

Marsh Posté le 10-03-2007 à 12:43:43    

Pas de quoi ;)

 

Y'a peu être une manière plus propre de proceder pour les checkbox, il me semble que ça génere un tableau de données, mais je ne suis pas sur


Message édité par Shinuza le 10-03-2007 à 12:44:50
Reply

Sujets relatifs:

Leave a Replay

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