OVH Cloud OVH Cloud

Compter le nb de checkbox cochées avancé

6 réponses
Avatar
Vito
Bonjour =E0 tous,

je bug sur un truc depuis qq jours :
je fais un site d'annonces, les utilisateurs peuvent d=E9poser plein
d'annonces, et doivent les payer.
Dans leur "panier", il y a donc le r=E9capitulatif de leur annonce, et
juste devant des checkbox (pour les payer et les mettre en ligne).
J'aimerais afficher la valeur totale de leur panier suivant que les
checkbox soient coch=E9es ou pas.
Pour compliquer la chose, il peuvent choisir plusieurs formules (1mois
de parution ou 3 mois par exemple)


En php, le listage des annonces du client donne :
<?php do { ?>
<?php if ($totalRows_annonces > 0) { // Show if recordset not empty
?>
<input type=3D"checkbox" name=3D"annonce-<?php echo
$row_annonces['idannonce']; ?>" value=3D"1" onClick=3D"calcule()"><font
size=3D"1">Ref: <?php echo $row_annonces['idannonce']; ?> - <?php echo
$row_annonces['modele']; ?></font><br>
<?php } // Show if recordset not empty ?>
<?php } while ($row_annonces =3D mysql_fetch_assoc($annonces)); ?>

Ce qui donne une fois le php compil=E9 :
<input type=3D"checkbox" name=3D"annonce-167" value=3D"1"
onClick=3D"calcule()"><font size=3D"1">Ref: 167 - evasion</font><br>
<input type=3D"checkbox" name=3D"annonce-166" value=3D"1"
onClick=3D"calcule()"><font size=3D"1">Ref: 166 - le turc</font><br>
<input type=3D"checkbox" name=3D"annonce-171" value=3D"1"
onClick=3D"calcule()"><font size=3D"1">Ref: 171 - lemien</font><br>
<input type=3D"checkbox" name=3D"annonce-172" value=3D"1"
onClick=3D"calcule()"><font size=3D"1">Ref: 172 - flyboat</font><br>
<input type=3D"checkbox" name=3D"annonce-178" value=3D"1"
onClick=3D"calcule()"><font size=3D"1">Ref: 178 - DANIGHT</font><br>
<input type=3D"checkbox" name=3D"annonce-181" value=3D"1"
onClick=3D"calcule()"><font size=3D"1">Ref: 181 - flyboatv2</font><br>
<input type=3D"checkbox" name=3D"annonce-190" value=3D"1"
onClick=3D"calcule()"><font size=3D"1">Ref: 190 - bateau</font><br>

Pour ce qui est des formules, il y en a entre autre 2 qui sont :

<input type=3D"radio" name=3D"formule" value=3D"0"
onclick=3D"alert('Etes-vous certain de ne pas vouloir beneficier de 3
mois pour vendre ?')";>
<br>
<strong>GRATUIT</strong>

<input type=3D"radio" name=3D"formule" value=3D"18" checked
onClick=3D"calcule()">
<br>
<strong>18&euro;</strong>

Je cherche donc je pense un script javascript qui pourrait faire
l'affaire, j'ai d=E9j=E0 mis celui ci en place mais il ne fonctionne
pas,
je l'ai tourn=E9 dans tous les sens...
Merci =E0 tous !!!

6 réponses

Avatar
ASM
Bonjour à tous,

je bug sur un truc depuis qq jours :
je fais un site d'annonces, les utilisateurs peuvent déposer plein
d'annonces, et doivent les payer.
Dans leur "panier", il y a donc le récapitulatif de leur annonce, et
juste devant des checkbox (pour les payer et les mettre en ligne).
J'aimerais afficher la valeur totale de leur panier suivant que les
checkbox soient cochées ou pas.
Pour compliquer la chose, il peuvent choisir plusieurs formules (1mois
de parution ou 3 mois par exemple)


En php,


aucun interet ici

Ce qui donne une fois le php compilé :


Ha! c'est mieux, mais que foutent là toutes ces font ?

<form name="panier" >

<input type="checkbox" name="annonce-167" value="1"
onClick="calcule()"><font size="1">Ref: 167 - evasion</font><br>
<input type="checkbox" name="annonce-166" value="1"
onClick="calcule()"><font size="1">Ref: 166 - le turc</font><br>
<input type="checkbox" name="annonce-171" value="1"
onClick="calcule()"><font size="1">Ref: 171 - lemien</font><br>


(couic)( c bon on a capté : c rangé n'importe comment)

Pour ce qui est des formules, il y en a entre autre 2 qui sont :


<input type="radio" name="formule" value="0"
onclick="
alert('Etes-vous certain de ne pas vouloir beneficier'+
' de 3 mois pour vendre ?');
calcule();
";>

<br><strong>GRATUIT</strong>

<input type="radio" name="formule" value="18" checked
onclick="calcule();";>

<br><strong>18&euro;</strong>

<!-- C'est-y gratos ou 18 Euros ? -->

<br>
<strong>TOTAL : <input name="total" onchange="calcule();"></strong>
</form>

Je cherche donc je pense un script javascript qui pourrait faire
l'affaire,


Pour faire *quoi* exactement ?

j'ai déjà mis celui ci en place mais il ne fonctionne pas,
je l'ai tourné dans tous les sens...


Qu'est-ce qui ne fonctionnait pas ?
Le choix du bouton radio ?



function calcule() {
var annonce = 3.50; // euros
var f = document.forms['panier'];
var tot = (f.formule[0].checked)?
f.formule[0].value*1 :
f.formule[1].value*1;
for(var i=0; i<f.length; i++) {
if(f[i].type=='checkbox' && f[i].checked)
tot += annonce;
}
f.total.value = tot;
}
onload = calcule;

--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé
Contact : http://stephane.moriaux.perso.wanadoo.fr/contact
ASM = Aimable Stéphane Moriaux = Amateur Sasseur Merdouilles

Avatar
Vito
En fait je récapitule parce que c'est vrai qu'en relisant c'est un peu
fouilli :

je génère en php les annonce du clients, qui sont derrieres des
checkbox.
<input type="checkbox" name="annonce-167" value="1"
onClick="calcule()">Ref: 167
<input type="checkbox" name="annonce-166" value="1"
onClick="calcule()">Ref: 166
<input type="checkbox" name="annonce-171" value="1"
onClick="calcule()">Ref: 171
...

donc l'utilisateur choisit les annonces qu'il veut payer en cochant les
chekbox ou pas

Il choisit sa formule pour une parution :
1 mois gratuit (offre de lancement)
3 mois = 18 euros
6 mois = 30 euros
etc ...

<input type="radio" name="formule" value="0" onClick="calcule()">
GRATUIT
<input type="radio" name="formule" value="18" checked
onClick="calcule()">
18&euro;
<input type="radio" name="formule" value="30" checked
onClick="calcule()">
30&euro;

Et je veux mettre un champs "input avec le total du montant" en
fonction des checkbox cochées et la formule choisie
<input name="Montant" value="0">EUROS

Voila, je pense que c'est plus clair.
Je ne sais pas comment gérer cette fonction avec javascript.
Dois-je renommer les 'name' de mes annonces ?
Merci pour votre aide ...
Vito
Avatar
ASM
En fait je récapitule parce que c'est vrai qu'en relisant c'est un peu
fouilli :


bon on a néanmoins compris l'idée

supposons que le formulaire a pour nom 'panier
<form name="panier ... >

je génère en php les annonce du clients, qui sont derrieres des
checkbox.
donc l'utilisateur choisit les annonces qu'il veut payer en cochant les
chekbox ou pas

Il choisit sa formule pour une parution :
1 mois gratuit (offre de lancement)
3 mois = 18 euros
6 mois = 30 euros
etc ...


Par annonce ou pour toutes les annonces ?

Je supposerai que c'est par annonce.

(6 mois c'est de la folie mais bon !)
(j'espère qu'elles sont datées qd affichées en résumé ?)

<input type="radio" name="formule" value="0" onClick="calcule()">
GRATUIT
<input type="radio" name="formule" value="18" checked
onClick="calcule()">
18&euro;
<input type="radio" name="formule" value="30" checked
onClick="calcule()">
30&euro;


Alors voici pour autant de boutons radios 'formule' que tu veux :

<script type="text/javascript">
function calcule() {
var annonce = 0;
var tot = 0;
var p = document.forms['panier'];
var f = p.elements['formule'];
for(var i=0; i<(f.length; i++)
if(f[i].checked) annonce = f[i].value*1;
for(var i=0; i<p.length; i++) {
if(p[i].type=='checkbox' && p[i].checked)
tot += annonce;
}
p.total.value = tot;
}
onload = calcule;
</script>

et ne pas oublier en fin de form :

<strong>TOTAL : <input name="total" onchange="calcule();"></strong>

--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé
Contact : http://stephane.moriaux.perso.wanadoo.fr/contact
ASM = Aimable Stéphane Moriaux = Amateur Sasseur Merdouilles

Avatar
Vito
Merci,

j'ai une erreur à l'appel de la fonction calcule je crois :
"objet attendu"
quand je coche une checkbox, je pense sur l'évènement
onClick="calcule()";
Sais tu d'ou cela peut venir ?
Avatar
ASM
Merci,

j'ai une erreur à l'appel de la fonction calcule je crois :


corrigé (y avait une ( baladeuse):

function calcule() {
var annonce = 0;
var tot = 0;
var p = document.forms['panier'];
var f = p.elements['formule'];
for(var i=0; i<f.length; i++)
if(f[i].checked) annonce = f[i].value*1;
for(var i=0; i<p.length; i++) {
if(p[i].type=='checkbox' && p[i].checked)
tot += annonce;
}
p.total.value = tot;
}
onload = calcule;


--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé

Avatar
Vito
Yess !!
Super ca fonctionne !

Encore merci et bonne fin de WE !
Bye