Verifier checkbox

cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009 - 11 avril 2008 à 20:37
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 17 avril 2008 à 10:08
Bonjour,

J'ai des checkbox qui sont genérées par un tableau en php appelé select[] et un champ text qui a dans sont nom des variables php.
J'aimerai savoir si j'ai le droit d'ecrire ca:

var d = document.getElementById("quantite");
function testchamp() {
  if ((document.directbuy.select[].checked == true) && (d.document.directbuy == ''))
 {
 alert("Vous avez oubliez de saisir une quantité !");
 return false;
 }

la variable "d" est le champ type text a qui j'ai donné l'id quantité.

37 réponses

cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 avril 2008 à 07:32
Bonjour,

if ( document.directbuy["select[]"][indice du checkbox à tester].checked && d.valeu.length==0 )

    s'il y a plusieurs checkbox et uen seule quantité... à ce que j'ai cru comprendre

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009
12 avril 2008 à 14:58
Salut Bultez merci pour ta réponse.
J'aimerai qu'un message apparraisse si la personne coche un produit mais oublie de remplir le champ quantité et vice versa.
Que veux tu dire par indice du checkbox à tester??
pour moi document.directbuy.select[], directbuy est le formulaire, et select[] le nom de la checkbox.
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 avril 2008 à 15:12
il n'y a qu'une seule checkbox ?      alors :
    if ( document.directbuy["select[]"].checked && d.value.length==0 )

    mais dans ce cas.. pourquoi diable la nommer select[] ??
       les crochets ne sont utiles, que s'il y a plusieurs éléments
          et  que pour le php ! qui récupèrera un array,
          sinon ça ne sert à rien

    parce que je disais : s'il y a plusieurs checkbox et une seule quantité... à ce que j'ai cru comprendre
            et dans ce cas, il faut bien lui dire quelle checkbox on teste.

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009
12 avril 2008 à 15:21
Non non, select est bien un tableau php et il y a une liste de produits où pour chacun il y a une chexck box et un champ quantité.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 avril 2008 à 15:56
>>select est bien un tableau php
    le php... on s'en contrefiche
    là, on est coté client, on parle donc html ( php n'existe plus depuis longtemps )
    donc... y'a-t-il plusieurs checkbox?    quel est leur name ?

    si le name est select[]   il faut utiliser document.directbuy["select[]"]
    et s'il y en a plusieurs, il faut préciser lequel on teste.
            c'est toujours vrai ça, quel que soit le name.
            le 3ème par exemple ? : document.directbuy["select[]"][2].checked

    si tu ne parviens pas... mets nous la page HTML résultante ( et SURTOUT PAS le PHP !!!!!  )
       ( enfin, UN PETIT EXTRAIT )

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009
12 avril 2008 à 16:38
Les checkbox sont crées à partir d'un while qui récupère la réponse d'une requète SQL, dans le while j'ai ce echo:
(désole obligé de mettre du php  )

echo '<tr>
   <td class="directbuy" width="90" align="center"></td>
            <td class="directbuy_ref" width="50">' . $data['products_ref'] . '</td>
   <td class="directbuy_nom" width="260">' . $data['products_name'] . '</td>
   <td class="directbuy" width="130" align="center">' . $data['couleur'] . '</td>
   <td class="directbuy" width="90" align="center">' .$data['taille'] . '</td>
   <td class="directbuy_check" width="100" align="center"></td>
   </tr>';

Donc en fait il y en a qu'un mais qui se répète (et change de nom au passage avcec l'id du produit)
Dans ce code il y a les 2, la checkbox et le champ quantite qui porte un nom à base de variable php.
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 avril 2008 à 16:56
>>désole obligé de mettre du php
    mais bien sûr que non !!!!!
    tu la testes bien cette page, non ?
    elle s'affiche bien sur l'écran de ton micro, non ?
          alors quelque soit le navigateur que tu utilises tu peux afficher la source
            ( affichage / Source ou Ctrl+Un avec FF par exemple ) , et....
               c'est le HTML créé par le php !!!!!!!!

    parce que ce que tu me donnes, comment je devine le contenu de ta base de données ?
             ou le contenu des $variable ?   je ne suis pas devin !!!!!

    de toute manière tu me dis qu'il y a plusieurs checkbox....
       et j'ai déjà répondu.

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009
12 avril 2008 à 17:20
Arg c'est vrai pas pensé sur el coup désolé lol.
Je te donne quand le html de la page car je veut pas en séléctionner un en particuler mais toute les checkbox qui ont été crée.

<tr>
   <td class="directbuy" width="90" align="center"></td>
            <td class="directbuy_ref" width="50">CARTE100</td>
   <td class="directbuy_nom" width="260">100 CARTES DE VISITE</td>
   <td class="directbuy" width="130" align="center">Blanc</td>
   <td class="directbuy" width="90" align="center">Standard</td>
   <td class="directbuy_check" width="100" align="center"></td>
   </tr><tr>
   <td class="directbuy" width="90" align="center"></td>
            <td class="directbuy_ref" width="50">CARTE250</td>
   <td class="directbuy_nom" width="260">250 CARTES DE VISITE</td>
   <td class="directbuy" width="130" align="center">Blanc</td>
   <td class="directbuy" width="90" align="center">Standard</td>
   <td class="directbuy_check" width="100" align="center"></td>
   </tr><tr>
   <td class="directbuy" width="90" align="center"></td>
            <td class="directbuy_ref" width="50">BOLDUC</td>
   <td class="directbuy_nom" width="260">BOLDUC</td>
   <td class="directbuy" width="130" align="center">Beige</td>
   <td class="directbuy" width="90" align="center">250m</td>
   <td class="directbuy_check" width="100" align="center"></td>
   </tr><tr>

Voila j'ai mis 3 produits pour limiter...
Donc en fait oui voila j'avais dis une connerie en disant que le nom de la checkbox changait, c'est la valeur et justement j'ai mis select[] pour qu'il soit pris en tant que tableau.

Donc la peut être que
if ( document.directbuy["select[]"].checked && d.value.length==0 )
devrait fonctionner non?
0
cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009
12 avril 2008 à 17:55
ben non ca fonctionne pas ca me fait pas de d'erreur ni rien comme si le code n'était pas executer.
Pour le lancer je l'ai mis a la fin de la balise form dans un Onsubmit.
Par contre pour valider le forumaire j'utilise du javascript, cette fonction:
function gopage(page)
{
    document.directbuy.action = page;
    document.directbuy.submit();
}

Comme elle valide le formulaire elle devrait me lancer l'autre fonciton non?
 Voici quand meme la balise form:
<form name="directbuy" method="post" action="" onSubmit="return testchamp()">
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 avril 2008 à 08:47
__ un ID doit être unique( quantite ) dans une page.

__ document.directbuy["select[]"].checked devrait fonctionner non?
                non ! tu testes lequel de checkbox ? il y en a 3 !
__

Arg c'est vrai pas pensé sur el coup désolé lol.
    peut-être... mais qu'est-ce qui t'empêchais de faire un formulaire pour les tests ?

    function testchamp()
    {    var le="";
        for ( var n=0;n<document.directbuy["select[]"].length;n++)
        {    if (         ( document.directbuy["select[]"][n].checked && document.directbuy["quantite[]"][n].value.length==0 )
                    || ( !document.directbuy["select[]"][n].checked && document.directbuy["quantite[]"][n].value.length>0 )
                )
            {    le+=n+" ";    }
        }
        if ( le.length>0 )
                {    alert("Erreur lig : " + le );
                    return false;    }
        else    {    return true;    }
    }

__Par contre pour valider le forumaire j'utilise du javascript, cette fonction:
        function gopage(page)
        {
            document.directbuy.action = page;
            document.directbuy.submit();
        }

       ben enlève ça ! puisque onsubmit du form va faire le boulout tout seul !
                                       et que action,du form toujours, est là pour dire sur quelle page envoyer !

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 avril 2008 à 10:06
j'ai oublié de préciser ( même si ça tombe sous le sens ?!? ),
    il faut remplacer ID='quantite' par name='quantite[]'
   
et je sens bien que tu vas me dire... ça marche pas !

alors le formulaire est de la forme :

<form action="la page qui reçoit les données" onsubmit="return testchamp();" ... >
    ici les élements du formulaire
    seront transmis les value de ceux qui ont un name
       et sans ONCLICK !!!!
</form>

il n'y a qu'une seule fonction testchamp() et  sans submit() !

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009
14 avril 2008 à 08:34
Le truc c'est que j'ai besoin que des bouton différents soumettent mon formulaire mais me renvoient sur des pages différentes.
J'ai un bouton en bas de page qu ime sert à visionner ma commande et en haut de l apage j'ai des liens vers les autres collections, ou je dois valider le formulaire pour envoyer en mémoire session les produits selectionner.

Il faut donc que je garde cette fonction gopage().
0
cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009
14 avril 2008 à 08:50
Quand au champ quantite je peux pas lui changer le nom.La quantité est récupérer dans le select[] pour qu'il correspondent.
0
cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009
14 avril 2008 à 11:31
Si je comprend bien, si il y a un submit(), le onsubmit() placé dans le <form> ne fonctionne pas?
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
14 avril 2008 à 12:44
>>

Quand au champ quantite je peux pas lui changer le nom.
    ah ben alors... ça va être beaucoup, beaucoup... plus compliqué !
    mais déjà supprime les ID identiques !
            ce n'est pas permis, et tu ne peux rien en faire  !!!!!

    c'est dans <table>, donc :
       on peut récupérer rowIndex qui est le n° de ligne
       avec table.rows[n° de ligne].cells[n° colonne] + le Dom on peut atteindre l'input quantité....
       j'ai déjà fait....        bon amusement et bon courage....

>>si il y a un submit(), le onsubmit()
    y'a un trucdans ce sens... mais je disais simplement
          qu'avec un bouton submit, le formulaire.submit() est inutile !!!!!

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009
14 avril 2008 à 14:28
Et si je fais un :

Function testchamp(nom) {
   var d= document.getElementById(nom);
  if ( document.directbuy["select[]"].checked && d.value.length==0 ) {
      alert("Il manque une quantité à un produit séléctionné !");
      return false;
 }
 if ( document.directbuy["select[]"].checked == false && d.value.length==0 ) {
      alert("Un produit n'a pas été coché alors qu'une quantité lui a été attribué !");
    return false;
 }
return true ;
}

et partie html:

getElementById recupère bien les propriétés d'un id i ldevrait récuperer la variable rentré dans quantité, et pas le même nom donc ca devrait fonctionner non?
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
14 avril 2008 à 14:39
>getElementById recupère bien les propriétés d'un id
    s'il est unique cet ID.
    ah.. et tu ajoutes name="p" ?  j'avias pas vu celui-là....

       bah alors  document.formulaire.p[indice].value
       et/mais  regarde avant ce que tu vas recevoir coté php
             s'il y en a plusieurs....
 
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009
14 avril 2008 à 14:53
Regarde bien, se n'est pas
 name="p"  mais
 name= "p' . $data['products_id'] . 'c' . $data['couleur'] . 't' . $data['taille'] . '"

J'ai mis ce nom car c'est le seul moyen de differencier les lignes.
Le truc c'est que je ne sais pas si j'ai un moyen de récupérer le nom formé de variables php en javascript.
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
14 avril 2008 à 14:58
ah... si on avais le html... pas le php!!!!
tu utilises donc document.ton_formulaire.p....jenesaispasquoi...c...jenesaispasquoi....t...jenesaispasquoi....value
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009
14 avril 2008 à 15:04
J'ai mis le php pour bien te montré que c'est des variables php.
En htlm j'ai :

name correspond à :
produit id= 134 (p pour produit)
couleur= blanc (c pour couleur)
taille= standard (t pour taille)

Comme ca la quantité appartient au produit d'id p, de couleur c et taille t.
0