Page 1 sur 2
Appliquer une fonction independamment a differentes lignes
Posté : 01 mars 2006, 10:58
par budiste
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
Posté : 01 mars 2006, 11:02
par heddicmi
Tu peux montrer les lignes où l'appel à la fonction se réalise ?
Posté : 01 mars 2006, 11:10
par budiste
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
Posté : 01 mars 2006, 11:17
par heddicmi
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...) ?
Posté : 01 mars 2006, 11:27
par budiste
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
Posté : 01 mars 2006, 11:34
par heddicmi
<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...
Posté : 01 mars 2006, 11:36
par budiste
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
Posté : 01 mars 2006, 11:48
par heddicmi

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...

Posté : 01 mars 2006, 11:59
par budiste
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>
Posté : 01 mars 2006, 12:16
par heddicmi
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...
Posté : 01 mars 2006, 12:21
par budiste
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
Posté : 01 mars 2006, 12:24
par heddicmi
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...
Posté : 01 mars 2006, 12:33
par budiste
<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
Posté : 01 mars 2006, 12:48
par heddicmi
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

Posté : 01 mars 2006, 15:35
par budiste
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 ?