En js, comment récupérer la valeur de la ligne courante de <table>

Signaler
Messages postés
13
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
11 juillet 2008
-
Messages postés
13
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
11 juillet 2008
-
bonjour
je galère depuis hier là-dessus... voilà le problème
c'est pour une gestion de caddy (caddy stocké dns $_SESSION)
j'affiche mes produits dans un tableau, sur chaque ligne j'ai donc
 produit, taille, quantité (modifiable)  
sur onchange de la qté  ou sur click sur le bouton, j'appelle une fonction js.
cette fonction est censée mettre à jour les champs d'un formulaire et de faire le submit de ce formulaire.

mon problème est que je ne récupère pas les bonnes valeurs et je le comprend, car mon a comme name "qte" sur chaque ligne... je comprend que js n'arrive pas à récupérer sa valeur.

alors comment faire pour récupérer les valeurs de la ligne courante dans mon js?

quelqu'un sait?
merci de votre aide,
donia

25 réponses

Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
26
Salut,

J'ai rien compris...

C'est quoi la ligne courante ?

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
13
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
11 juillet 2008

la ligne depuis laquelle on a cliqué sur "supprimer" ou on a changé la quantité.


j'ai prod1   qté1   <supprimer>
      prod2   qté2  <supprimer>
     prod3    qté3   <supprimer>

si on a cliqué ou modifié la qté sur la ligne2 je voudrais récupérer la valeur de prod2, qté2

si t'as une idée..
merci
donia
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
26
met un id différent a chaque ligne !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
13
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
11 juillet 2008

oui, ça d'accord, je peut mettre l'indice de ligne concaténé à l'id, mais comment je sais quel id récupérer côté js???


exemple


$name= "quantite".$indice;


<select name=$name>;


mais côté js, comment je sais si c'est quantite1 ou quantité2 ou quantité3 etc? 
le  



var quantite =document.getElementById("nom_du_champ").value;

nécessite de connaitre le nom du champ ou le n° d'indice.
et c'est là que je coince

merci de tes lumières
donia
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
26
dans le js u rajoute une fonction indice comme ça :

function nom(indice) {
      return 'quantite'+indice;
}

et dans ton php tu met ça dans la ligne de ton select :

onload='nom("'.$name.'");'

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
1764
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
27 juin 2020
79
si je ne me trompe pas et comme toi meme tu le pense chaque ligne doit avoir un nom different et encore si je ne me trompe chaque ligne doit avoir un formulaire
Messages postés
13
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
11 juillet 2008

excuse moi je débute vraiment (depuis 2 mois, avant je n'y connaissais rien) j'ai beson d'un peu plus d'explications
la function nom(indice), je la met où exactement? dans ma fonction actuelle?? c'est possible ça? ou alors normalement, entre les <head></head>? et à quel moment je fais appel à cette

mon <select> est comme ça
echo

'<select onchange= "modifqte()" name="quantite2" id="quantite2">';

ça va donner :

echo '<select onload ='nom("'.$name.'");' onchange="modifqte()">';

 c'est ça?

merci de tes précisions
donia
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
26
pour le select oui c'est ça, et pour la fonction, non tu la met pas dans ta fonction actuelle mais dans le head !

a++

PS : pas sur que ça marche, faut tester !

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
13
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
11 juillet 2008

ça ne marche pas... j'ai toutes les valeurs indéfnies.

je pense à une autre solution : passer des paramètres au js.
mais là encore si je fais
 





$parametres


=
'\''
.
$cleproduit
.
'\',\''
.
$cletaille
.
'\','
.
$quantite2
;


















echo '<select onchange ="modifqte('.$parametres.')" name="quantite2" id="quantite2">';








ça ne marche pas car $quantité2 est inilialisé avec la valeur d'origine, avant modif.
comment envoyer en parametre la nouvelle qté sélectionnée dans la boite déroulante?

??? quelle galère ...
pi j'me fais bouffer par les moustiques GGGRRRR

si t'as une idée.
l'idée des paramètres me parait la plus simple.

donia
Messages postés
13
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
11 juillet 2008

merci de ta réponse, mais je te fais la même que plus haut (que tu n'as peut-être pas vue)

oui, ça d'accord, je peut mettre l'indice de ligne concaténé à l'id, mais comment je sais quel id récupérer côté js???

exemple

$name= "quantite".$indice;

<select name=$name>;

mais côté js, comment je sais si c'est quantite1 ou quantité2 ou quantité3 etc? 
le  


var quantite =document.getElementById("nom_du_champ").value;

nécessite de connaitre le nom du champ ou le n° d'indice.
et c'est là que je coince

merci de tes lumières
donia
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
26
echo


'<select

onload=\'nom("'.$name.'");\' onchange="modifqte()">';










Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
13
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
11 juillet 2008

j'ai essayé

<script language= "Javascript">
function nom(indice) {
alert("je suis sur la ligne " + indice);

}
</script>

echo '<select onload =\'nom("'.$name.'");\' onchange="modifqte()">';

et ça fait rien du tout! j'ai même pas le message alert! même pas le moindre petit message d'erreur!
:-/

argh
donia
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
26
je sais pas alors !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
13
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
11 juillet 2008

et bé tant pis pour moi alors!
merci quand même de ton aide,
donia

si quelqu'un d'autre a une idée, je suis preneuse
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
26
de rien, je vois pas pourquoi ça ne marche pas !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
Bonjour,

il faudrait voir comment le formulaire, la table... sont écrits.

mais pas le PHP ! un PETIT EXTRAIT de la page html résultante !
le nécessaire, tout le nécessaire mais pas plus !!!

>>alors comment faire pour récupérer les valeurs de la ligne courante dans mon js?
c'est quoi les valeurs courantes ?  rowIndex, c'est le n° de ligne d'une table.
c'est un select ? selectedIndex c'est le n° d'option....

<hr />                Cordialement            Bul        
Messages postés
13
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
11 juillet 2008

merci de ta réponse,
voici le code html généré, j'espère que ma programmation n'est pas trop moche (je débute depuis 2 mois seulement et j'apprend seule) 
merci de ton expertise!
j'ai viré tout ce qui ne concernait pas directement mon problème de changement de quantité.
amicalement
donia

<html>
<head>

<script language="Javascript">
function modifqte(cleproduit,cletaille)

var quantite=this.value;
alert("prod= " + cleproduit + " taille= " + cletaille + " quantite " + quantite);
document.getElementById("mode").value = "ajout";
document.forms[0].submit();
    
}
</script>        




</head>
           



Article,
Sexe,
Age,
Référence,
Quantité,
Prix U.,
Prix Total,
poids,
stock dispo,

----
, robe rose, F, 0-6 mois, RL012, 'RL012','1'<select onchange="modifqte('RL012','1')" name="quantite2" id="quantite2"><option value="1" selected="selected">1</option><option value="2"> 2</option><option value="3"> 3</option></select>, 7,50, 7,50, 0.15, 3, ,   

 , ----
, veste garçon matelassée, G, 0-6 mois, RL014, 'RL014','1'<select onchange="modifqte('RL014','1')" name="quantite2" id="quantite2"><option value="1" selected="selected">1</option><option value="2"> 2</option><option value="3"> 3</option><option value="4"> 4</option></select>, 11,60, 11,60, 0.5, 4, ,   

 , ----
, , , , , '',''<select onchange="modifqte('','')" name="quantite2" id="quantite2"></select>, 0,00, 0,00, , , ,   

 , ----
Total de votre caddy, 19,10, 0.65, &nbsp;

// ce formulaire est uniquement pour passer les paramètres au gestioncaddy (qui s'auto appelle avec des nouveaux parametres et récupère les paramtres en $_POST au début du prog. il me semble qu'il ne peut pas être dans les lignes du tableau car le name des input serait différent d'une ligne à l'autre et je ne pourrais plus récupérer $_POST['produit'], etc.

<form action="gestioncaddy.php" method="post" name="infosligne">


</form>          
<html>

</html>


 
Messages postés
13
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
11 juillet 2008

pour préciser un peu:
ce que je voudrais faire en fait, sur le onchange de la quantité:
 - valoriser mon formulaire "infosligne" avec le code produit, la taille (ça je vais pouvoir faire car je récupère bien le produit et la taille), la nouvelle quantité saisie (que je n'arrive pas à récupérer), et mettre le mode à "modif"

- faire un submit du formulaire en question (ça, ça marche)

voilà si t'as une idée pour récupérer cette nouvelle quantité saisie...???
merci de ton aide
donia
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
Bonjour,

plusieurs choses, car en fait quel est ton problème ?

on transmet au php, les value de tous les éléments qui ont un name

ton problème c'est qu'il y a  plusieurs fois le même nam et le même ID
déjà, pour l'ID c'est interdit . il doit être unique dans une page, sinon c'est inutilisable

lorsque qu'on a plusieurs fois le même name,  pour s'y réfèrer en javascript,
     faut lui dire lequel ( puisqu'il y en a plusieurs ! )
     si les lignes de ton <table>  sont dans un formulaire <form name="frm"...>
     on pourra utiliser  document.frm.cleproduit[indice]...

mais pour le transmettre au PHP, il faut des names différents... ou un ARRAY
     donc mettre
     on s'y adresse en javascript par document.frm["cleproduit[]"][indice]...
     et en php, $_POST[cleproduit] est un Array, qui contient toutes les lignes

si sur un élément quelconque disons le bouton "enlever", on veut retrouver le n° de ligne
dans le tableau : parent.parent.rowIndex
l'élément c'est le bouton, parent le td, parent.parent le tr, rowIndex, le n° de ligne

>>j'espère que ma programmation n'est pas trop moche
tu crois que celui qui critiquerait ferait mieux ?
si oui, ben qu'il le fasse ;o)
>j>e débute
on est tous des débutants ( même si certains l'oublient )
>>j'apprend seule)
pas simple.
>>merci de ton expertise
n'allons pas jusque là ! pas un expert.

<hr />                Cordialement            Bul        
Messages postés
13
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
11 juillet 2008

merci  beaucoup pour ta réponse,
j'ai donné un nom à ma table : "produits"
sur mon champs <select id=quantite2, j'ai donc mis <select id=quantite2[]

maintenant dans mon js (auquel finalement je passe un parametre supplémentaire, l'indice de ligne), comment je récupère la valeur de quantité?
j'ai essayé

fonction modifqte(prod, taille, indice)



var quantite=document.produits["quantite2[]"][indice].value;

mais ça ne marche pas...
quelle syntaxe utiliser?
merci de ton aide
donia