Appliquer une fonction independamment a differentes lignes

Eléphant du PHP | 159 Messages

01 mars 2006, 10:58

Bonjour

voila je realise un panier
j'ai une ligne par produit, j'ai un bouton + et un - par ligne auquel est associée la fonction suivante :

Code : Tout sélectionner

function plusmoins(quantite,type) { var qte = document.forms['Form'].elements[quantite] if (type==2) qte.value = parseInt(qte.value) + 1 if (type==1 && parseInt(qte.value)>0) qte.value = parseInt(qte.value) - 1 if (parseInt(qte.value) >= 0) document.forms['Form'].submit() }
le probleme est que quand on appuie sur + ou - ca n'agit que sur la premiere ligne cad le premier produit

comment faire pour l'appliquer sur la ligne concernée

Mammouth du PHP | 568 Messages

01 mars 2006, 11:02

Tu peux montrer les lignes où l'appel à la fonction se réalise ?
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Eléphant du PHP | 159 Messages

01 mars 2006, 11:10

Voila la partie qui affiche la quantité et les boutons + - :
<form name="Form" method="POST" action="index2.php?panier=1&action=1&idpdt=<? echo $cat['IDARTICLE'];?>"> 
<table align="center" class="texte">
<tr> 
<td rowspan="2" align="right">
<input name="QTE" value="<? echo $qtearticle;?>" align="right" size="2">
<input name="idart" value="<? echo $cat['IDARTICLE'];?>" type="hidden">
<a href="#" onclick="Form.submit()">Envoyer</a>
</td>
<td align="left" valign="bottom">
<a href="javascript:plusmoins('QTE',2);">
<img src="images/boutonplus.gif" border="0">
</a>
</td>
</tr>
<tr> 
<td align="left" valign="top">
<?
if ($qtearticle > 1) {?>
<a href="javascript:plusmoins('QTE',1);">
<img src="images/boutonmoins.gif" border="0">
</a>
<? 
}
?>
</td>
</tr>
</table>
</form>
mais dans mon code il n'y a pas de : apres javascript

Mammouth du PHP | 568 Messages

01 mars 2006, 11:17

Quand tu as plusieurs produits, tu changes le nom de ton input (je te signale que ton input QTE n'a pas de type... C'est bizarre)... Donc quand tu changes de produits, tu as un trucs du genre QTE1 pour le produit 1, QTE2 pour le produit 2, etc... ?

Dans l'appel à la fonction en javascript, passes tu bien en paramètre ces valeurs (QTE1, puis QTE2, etc...) ?
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Eléphant du PHP | 159 Messages

01 mars 2006, 11:27

voila j'ai mis type="text" pour mon input

sinon j'avais mis avant QTE_x
x etait un chiffre different pour chaque produit mais avec ca ne changeait plus rien

Mammouth du PHP | 568 Messages

01 mars 2006, 11:34

<input name="[b][color=red]QTE_x[/color][/b]" value="<? echo $qtearticle;?>" align="right" size="2">
[...]
<a href="javascript:plusmoins('[b][color=red]QTE_x[/color][/b]',2);">
<img src="images/boutonplus.gif" border="0">
</a> 
Tu as bien ça ? avec x variant suivant le numéro de la ligne ?

Si oui, je donne ma langue au chat... Et je te demanderais peut être de voir à quoi ressemble le code généré quand il y a plusieurs produits...
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Eléphant du PHP | 159 Messages

01 mars 2006, 11:36

oui c t ca
mais je me demande alors si tu me dis qu'il fallais faire ca
si ca ne viens pas de la facon donc je recupere mes POST

Mammouth du PHP | 568 Messages

01 mars 2006, 11:48

:shock: Non, là, tu t'égards... method POST, GET ou tintouin, ça n'a aucun effet sur ce que tu veux faire... Ca ne jouer que quand tu envoies ton formulaire avec submit() !

Peux-tu montrer une page générée avec plusieurs produits... :?:
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Eléphant du PHP | 159 Messages

01 mars 2006, 11:59

tu veux voir le code de la page ?
<td align="center">
LOG_SAG_EVO</td>

<td align="center">
</td>
<td align="left">
<b>Evolution logiciel SAGE</b><br>
</td>
<td align="center">
<font color="#0000CC">
<b>
-</b>
</font>
</td>
<td align="center">
<form name="Form" method="POST" action="index2.php?panier=1&action=1&idpdt=284"> 
<table align="center" class="texte">
<tr> 

<td rowspan="2" align="right">
<input type="text" name="QTE_1" value="1" align="right" size="2">
<input name="idart" value="284" type="hidden">
<a href="#" onclick="Form.submit()">Envoyer</a>
</td>
<td align="left" valign="bottom">
<a href="javascript:plusmoins('QTE_1',2);">
<img src="images/boutonplus.gif" border="0">
</a>
</td>
</tr>
<tr> 
<td align="left" valign="top">
</td>
</tr>
</table>

</form>
</td>
<td align="center">
<font color="#0000CC">
<b>
0,00 € TTC</b>
</font>
</td>
<td align="center"><a href="index2.php?panier=1.php&action=supprligne&idsuppr=284" onclick="return confirm('Voulez vous réellement supprimer cette article de votre panier ?')">Supprimer</a>
</td>
</tr>
<tr bgcolor="#F3F3F3">
<td align="center">
<img src="imagesproduit/produit/" width="40" height="40">
</td>

<td align="center">
HPQ6455A</td>
<td align="center">
HP</td>
<td align="left">
<b>Imprimante HP ColorLaserJet 2600n</b><br>
</td>
<td align="center">
<font color="#0000CC">
<b>
119,60 € TTC</b>
</font>
</td>

<td align="center">
<form name="Form" method="POST" action="index2.php?panier=1&action=1&idpdt=16"> 
<table align="center" class="texte">
<tr> 
<td rowspan="2" align="right">
<input type="text" name="QTE_2" value="1" align="right" size="2">
<input name="idart" value="16" type="hidden">
<a href="#" onclick="Form.submit()">Envoyer</a>
</td>
<td align="left" valign="bottom">
<a href="javascript:plusmoins('QTE_2',2);">
<img src="images/boutonplus.gif" border="0">
</a>
</td>
</tr>
<tr> 

<td align="left" valign="top">
</td>
</tr>
</table>
</form>
</td>
<td align="center">
<font color="#0000CC">
<b>
119,60 € TTC</b>
</font>
</td>
<td align="center"><a href="index2.php?panier=1.php&action=supprligne&idsuppr=16" onclick="return confirm('Voulez vous réellement supprimer cette article de votre panier ?')">Supprimer</a>
</td>
</tr>

<tr bgcolor="#FFFFFF">
<td align="center">
<img src="imagesproduit/produit/" width="40" height="40">
</td>
<td align="center">
HPQ5801B</td>
<td align="center">
</td>
<td align="left">
<b>Tout en Un hP OfficeJet 6210</b><br>
</td>
<td align="center">
<font color="#0000CC">
<b>
-</b>

</font>
</td>
<td align="center">
<form name="Form" method="POST" action="index2.php?panier=1&action=1&idpdt=376"> 
<table align="center" class="texte">
<tr> 
<td rowspan="2" align="right">
<input type="text" name="QTE_3" value="1" align="right" size="2">
<input name="idart" value="376" type="hidden">
<a href="#" onclick="Form.submit()">Envoyer</a>
</td>
<td align="left" valign="bottom">
<a href="javascript:plusmoins('QTE_3',2);">
<img src="images/boutonplus.gif" border="0">
</a>
</td>

</tr>
<tr> 
<td align="left" valign="top">
</td>
</tr>
</table>
</form>
</td>
<td align="center">
<font color="#0000CC">
<b>
0,00 € TTC</b>
</font>
</td>
<td align="center"><a href="index2.php?panier=1.php&action=supprligne&idsuppr=376" onclick="return confirm('Voulez vous réellement supprimer cette article de votre panier ?')">Supprimer</a>

</td>
</tr>
<tr bgcolor="#F3F3F3">
<td align="center">
<img src="imagesproduit/produit/" width="40" height="40">
</td>
<td align="center">
SONYVGN-A517B-FR</td>
<td align="center">
</td>
<td align="left">
<b>Portable SONY A517B</b><br>
</td>
<td align="center">
<font color="#0000CC">

<b>
-</b>
</font>
</td>
<td align="center">
<form name="Form" method="POST" action="index2.php?panier=1&action=1&idpdt=313"> 
<table align="center" class="texte">
<tr> 
<td rowspan="2" align="right">
<input type="text" name="QTE_4" value="1" align="right" size="2">
<input name="idart" value="313" type="hidden">
<a href="#" onclick="Form.submit()">Envoyer</a>
</td>
<td align="left" valign="bottom">
<a href="javascript:plusmoins('QTE_4',2);">

<img src="images/boutonplus.gif" border="0">
</a>
</td>
</tr>
<tr> 
<td align="left" valign="top">
</td>
</tr>
</table>
</form>
</td>
<td align="center">
<font color="#0000CC">
<b>
0,00 € TTC</b>
</font>

</td>
<td align="center"><a href="index2.php?panier=1.php&action=supprligne&idsuppr=313" onclick="return confirm('Voulez vous réellement supprimer cette article de votre panier ?')">Supprimer</a>
</td>
</tr>

Mammouth du PHP | 568 Messages

01 mars 2006, 12:16

Ton soucis doit venir du fait que chaque ligne à son formulaire... Et que chaque formulaire porte le même nom... Fais évoluer le nom de tes formulaire FORM_x... et récupère le aussi dans ta fonction javascript...
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Eléphant du PHP | 159 Messages

01 mars 2006, 12:21

ouai est ce que ca ne va pas posé de probleme pour panier car je peux modifier la quantité et la valider directement

sinon il faudrait que je fasse un formulaire panier en fait, si j'ai bien compris

j'ai mis ca :
<form name="Form_<? echo $indice;?>" method="POST" action="index2.php?panier=1&action=1&idpdt=<? echo $cat['IDARTICLE'];?>"> 
mais ca ne change rien

Mammouth du PHP | 568 Messages

01 mars 2006, 12:24

Bin perso, il faudrait mieux je pense faire un formulaire général avec tout dedans plutôt qu'un formulaire par porduit... Car de toute façon, sauf erreur de ma part, si tu valide un de tes formualires, les les autres ne seront pas pris en compte.. Même s'ils portent le même nom...
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Eléphant du PHP | 159 Messages

01 mars 2006, 12:33

<form name="Panier" method="POST" action="index2.php?panier=1&action=1&idpdt=<? echo $cat['IDARTICLE'];?>">
...
<input type="text" name="QTE_<? echo $indice;?>" value="<? echo $qtearticle;?>" align="right" size="2">
...
<input name="idart_<? echo $indice;?>" value="<? echo $cat['IDARTICLE'];?>" type="hidden">
...
<a href="#" onclick="Panier.submit()">Envoyer</a>
...
<a href="javascript:plusmoins('QTE_<? echo $indice;?>',2);">
...
<a href="javascript:plusmoins('QTE_<? echo $indice;?>',1);">
...
</form>

en gros ca devra ressembler a ca, mais apres comment je fais pour recuperer mes valeur en POST ensuite

Mammouth du PHP | 568 Messages

01 mars 2006, 12:48

Quand tu parcoureras ton $_POST, tu y retrouveras QTE_1 avec sa valeur, puis QTE_2 avec sa valeur.. etc... En parcours ce tableau de résultat, tu les repères et tu les traites ;)
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Eléphant du PHP | 159 Messages

01 mars 2006, 15:35

Bon ca a bien avancé là :

dans la gestion du panier pour récupérer la valeur du post je fais comme ça :
//Selection de l'ID du produit
	if(isset($_POST['indice']) && isset($_POST['idart'])) {
        $idproduit=$_POST['idart'];
		$num='QTE_'.$_POST['indice'];
        if ($_SESSION['achats'][$idproduit] != $_POST[$num]) {
            $_SESSION['achats'][$idproduit] = $_POST[$num];
         }
   }
ensuite j'englobe tout le panier dans le formulaire suivant :
<form name="Formpanier" method="POST" action="index2.php?panier=1&action=1&idpdt=<? echo $cat['IDARTICLE'];?>"> 
...LE PANIER...
</form>
pour la gestion de la quantité et de l'indice j'ai fais ceci dans le panier :
...
<input type="text" name="QTE_<? echo $indice;?>" value="<? echo $qtearticle;?>" align="right" size="2">
<input name="idart" value="<? echo $cat['IDARTICLE'];?>" type="hidden">
<input name="indice" value="<? echo $indice;?>" type="hidden">
...
mais ca marche pour tout les produits du panier sauf pour le premier ?