cs_bibo06
Messages postés116Date d'inscriptionmardi 28 novembre 2006StatutMembreDernière intervention10 mars 2009
-
11 avril 2008 à 20:37
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 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é.
cs_bibo06
Messages postés116Date d'inscriptionmardi 28 novembre 2006StatutMembreDernière intervention10 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.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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 )
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.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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.
cs_bibo06
Messages postés116Date d'inscriptionmardi 28 novembre 2006StatutMembreDernière intervention10 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.
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?
cs_bibo06
Messages postés116Date d'inscriptionmardi 28 novembre 2006StatutMembreDernière intervention10 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()">
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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 !
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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() !
cs_bibo06
Messages postés116Date d'inscriptionmardi 28 novembre 2006StatutMembreDernière intervention10 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().
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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 !!!!!
cs_bibo06
Messages postés116Date d'inscriptionmardi 28 novembre 2006StatutMembreDernière intervention10 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?
cs_bibo06
Messages postés116Date d'inscriptionmardi 28 novembre 2006StatutMembreDernière intervention10 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.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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]