Additionner des variables selon checkbox cochées

Fermé
rebk2 Messages postés 15 Date d'inscription samedi 5 janvier 2013 Statut Membre Dernière intervention 28 mars 2020 - 17 oct. 2013 à 12:39
rebk2 Messages postés 15 Date d'inscription samedi 5 janvier 2013 Statut Membre Dernière intervention 28 mars 2020 - 18 oct. 2013 à 08:52
Bonjour,

Je souhaiterai faire un petit devis en ligne grâce à des listes de checkboxes :


<li id="list_cp_identit_visuelle">
<div class="labelwrapper">
<label>Identite</label>
</div>
<ol class="checkboxes">
<li><input value="Logotype" type="checkbox" class="checkboxlist" name="cp_identit_visuelle[]" id="cp_identit_visuelle_1" />...</li>
<li><input value="Logotype animé" type="checkbox" class="checkboxlist" name="cp_identit_visuelle[]" id="cp_identit_visuelle_2" />...</li>
<li><input value="Charte graphique" type="checkbox" class="checkboxlist" name="cp_identit_visuelle[]" id="cp_identit_visuelle_3" />...</li>
</ol>
</li>
<li id="list_cp_edition">
<div class="labelwrapper">
<label>Edition</label>
</div>
<ol class="checkboxes">
<li><input value="Plaquette de présentation de l'entreprise" type="checkbox" class="checkboxlist" name="cp_edition[]" id="cp_edition_1" />...</li>
<li><input value="Dossier de presse" type="checkbox" class="checkboxlist" name="cp_edition[]" id="cp_edition_2" />...</li>
<li><input value="Dépliant" type="checkbox" class="checkboxlist" name="cp_edition[]" id="cp_edition_3" />...</li>
</ol>
</li>

Chaque checkbox doit avoir une valeur propre exemple :
cp_identite_visuelle_1=100
cp_identite_visuelle_2=150
cp_identite_visuelle_3=75
et
cp_edition_1=300
cp_edition_1=500
cp_edition_1=650

et lorsque le visiteur coche les case, les valeurs s'additionnent pour s'afficher dans une div plus bas.

Mais je n'sais pas du tout comment faire...

Merci de votre aide ! :)

2 réponses

animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 738
Modifié par animostab le 17/10/2013 à 14:01
Bonjour

deja il faut faire un formulaire du genre

<form method="post" action"devis.php">

<select name="choix1">
<option value="choix1">carte</option>
<option value="choix2">poster</option>
</select>
<-- a repeter pour choix2 choix3 etc -->
<input type="submit" value="Envoyer">

ensuite la page devis.php récupère les données envoyées par le formulaire avec
$_POST et en fait une variable

dans la page devis.php tu mets le code suivant

<?php
$choix1 = ($_POST['choix1']); //recupere données et en fait une variable//
if ($choix1==carte)
$choix1=150; // definit la variable selon le choix//
if ($choix1==poster)
$choix1=200;

echo $choix1; //affiche le resultat//

//a repeter pour choix2 choix3 etc...//

//ensuite pour additionner à la fin et afficher le résultat//
$resutat = $choix1 + $choix2 + $choix3;
echo $resultat
?>

Evidemment les echo du php sont a mettre en forme avec html et css.
j'ai mis carte poster comme exemple a remplacer par tes propres données (cp_identite_visuelle_1) et les tarfis 150 200 par les tiens

plus de precision sur
http://fr.openclassrooms.com/informatique/cours/concevez-votre-site-web-avec-php-et-mysql/creer-la-base-du-formulaire
Un petit merci vaut mieux qu'une grande ignorance
0
rebk2 Messages postés 15 Date d'inscription samedi 5 janvier 2013 Statut Membre Dernière intervention 28 mars 2020 1
17 oct. 2013 à 16:11
Merci beaucoup, mais je ne peux pas changer la forme du formulaire cad que je ne peux pas remplacer mes listes de checkbox par des select car le formulaire est généré via un plugin
0
rebk2 Messages postés 15 Date d'inscription samedi 5 janvier 2013 Statut Membre Dernière intervention 28 mars 2020 1
17 oct. 2013 à 16:13
et petite précision, le résultat doit s'afficher avant que le visiteur click sur submit du formulaire

Merci encore de votre aide !
0
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 738
Modifié par animostab le 17/10/2013 à 16:45
tu remplace les select par des checkbox et le name des checkbox est récupéré par php. (comme avec le select)

seul un formulaire de type <form> peut être envoyé pour être traité par php et afficher un résultat.
donc la saisie de formulaire doit être envoyée pour afficher un résultat.
ton code html sous forme de liste sans <form> ne peut être traitée et donc aucun résultat ne peut être affiché.

ce que tu demande pourrait peut être fait avec javascript mais ca sera vraiment compliqué
0
rebk2 Messages postés 15 Date d'inscription samedi 5 janvier 2013 Statut Membre Dernière intervention 28 mars 2020 1
17 oct. 2013 à 18:27
merci je vais essayer ça.
Oui le tout est entre des balises <form> biensur... l'objectif est que le visiteur coche les cases et voit au fur et a mesure combien ça va lui couter avant de valider.
0
rebk2 Messages postés 15 Date d'inscription samedi 5 janvier 2013 Statut Membre Dernière intervention 28 mars 2020 1
17 oct. 2013 à 18:34
et en fait je ne peux pas appliquer ta solution car moi c'est des listes de checkbox, avec ta solution si le visiteur coche plusieurs checkboxes par liste ça ne peut pas marcher puisque $choix1 prend sa valeur en fonction d'une seule case cochée...

bref j'en suis toujours au point 0 malgré ton aide hélas... mais merci quand même ;)
0
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 738
17 oct. 2013 à 23:22
et bien tu fais un checkboxe avec oui ou non ou rien.
sinon avec javascript il faut biensur aussi modifier le code de tes checkboxes en y ajoutant l'evenement onclick ou onchange pour déclencher une fonction javascript qui va modifier le contenu d'une balise et l'evenement onblur quand le checkbox est décoché qui fera la meme chose mais en inversant le processus. Bon je suis pas un as en javascript pour faire ca au top

si tu le peux voici une page qui fait exactement ce que tu voudrais faire que tu peux décortiquer en affichant la source mais bon courage
http://www.passepasse.com/diabolos/diabolo-kits-complet-1/diabolos-diabolos-c-108-112-html/diabolo-fly-sundia-axe3b-axe1b-bearing-fixte.html
0