Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2804 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [resolu]calcul d'une somme avec plusieurs INPUT

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu]calcul d'une somme avec plusieurs INPUT

n°1532943
jenny50
Posté le 23-03-2007 à 17:20:39  profilanswer
 

Bonjour à tous,  
 
Je n'ai encore jamais fait en PHP, pourriez-vous m'éclairer?
 
j'ai une boucle d'INPUT de ce genre :  

Code :
  1. <input type="checkbox" value="<?=$res->opt_prix?>"><?=$res->opt_nom?>


J'ai une ligne avec marqué TOTAL. En face de ce total je souhaite calculer le total de mes options. Si l'option, mon total prend la valeur de l'ensemble des INPUT cochés.
 
Vous voyez?
 
Merci d'avance
jennifer


Message édité par jenny50 le 27-03-2007 à 17:27:58
mood
Publicité
Posté le 23-03-2007 à 17:20:39  profilanswer
 

n°1533374
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 25-03-2007 à 16:17:31  profilanswer
 

Si ton total ne doit pas être mis à jour, alors un simple calcul php fera l'affaire...
 
avant le premier <input> tu initialises une variable :

Code :
  1. $total = 0;


 
et après chaque <input> :

Code :
  1. <input type="checkbox" value="<?=$res->opt_prix?>"><?=$res->opt_nom?><?php $total += $res->opt_prix; ?>


 
et à la fin, tu affiches le total :

Code :
  1. echo "<p>Total :".$total."</p>";


 
Maintenant si le fait de changer (coté client) des valeurs doit modifier le total, c'est un poil plus complexe parce que tu dois y mettre du javascript.

n°1534147
jenny50
Posté le 27-03-2007 à 11:38:51  profilanswer
 

merci pour cette solution mais effectivement si l'internaute coche le input, le total doit changer.
 
Comment je fais?

n°1534151
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-03-2007 à 11:47:08  profilanswer
 

NewsletTux a écrit :

Maintenant si le fait de changer (coté client) des valeurs doit modifier le total, c'est un poil plus complexe parce que tu dois y mettre du javascript.


Bin Newslettux tu l'as déjà expliqué [:spamafote]

n°1534225
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 27-03-2007 à 14:09:14  profilanswer
 

bin tu rajoutes à ola fin de ton formulaire un champ :

Code :
  1. <p>Total :<input type="text" id="total" name="total" value=""></p>


 
et sur chaque <input> tu mets un élément onclick :

Code :
  1. <input type="checkbox" value="<?=$res->opt_prix?>"><?=$res->opt_nom?><?php $total += $res->opt_prix; ?>


devient :

Code :
  1. <input type="checkbox" value="<?=$res->opt_prix?>" onclick="ajoutersomme(<?=$res->opt_prix?> );"><?=$res->opt_nom?><?php $total += $res->opt_prix; ?>


 
puis tu fais une fonction JS dans ton <head> pour effectuer ce traitement :
<script type="text/javascript">
function ajoutersomme(somme)
{
   document.getElementById('total').value += somme;
};
</script>

n°1534234
jenny50
Posté le 27-03-2007 à 14:19:29  profilanswer
 

Je viens d'essayer ton code mais j'ai un problème : quand je coche un INPUT d'option il insère bien mon prix d'option dans mon INPUT total mais quand je clique sur un deuxième INPUT d'option il affiche le prix de ma 2ème option à côté de la première.
EN fait il ne fait pas la somme.
 
Où est le problème?

n°1534284
jenny50
Posté le 27-03-2007 à 14:58:07  profilanswer
 

le problème est qu'il considère mon prix comme une chaine de caractère et non un entier donc lorsqu'il additionne il affiche les 2 prix (si coché 2 options) côte à côté.
Il ne fait pas une addition.
 
Quelle est la solution?

n°1534290
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-03-2007 à 15:01:14  profilanswer
 

parseInt


Message édité par anapajari le 27-03-2007 à 15:01:28
n°1534339
jenny50
Posté le 27-03-2007 à 15:34:41  profilanswer
 

en plus de ne pas calculer, le script ne retient pas la dernière valeur de INPUT total.
 
Avez-vous une solution? Je crains qu'il faille tout reprendre mais je suis dans le flou total.
 
Mon but calculer un montant des options choisis par l'internaute. Il les choisi grâce un des INPUT. Si coché alors ajout du prix au total.

n°1534425
jenny50
Posté le 27-03-2007 à 16:45:42  profilanswer
 

OK j'ai trouvé maintenant je souhaite que lorsque l'INPUT n'est pas coché ou lorsque je décoche l'INPUT, il soustrait mon TOTAL.  
 
Voici mon code pour vous éclairez et surtout m'aider :  

Code :
  1. function essai(valeur){
  2. document.getElementById('total').value = valeur + parseInt(document.getElementById('total').value);
  3. }


et dans mon body :  

Code :
  1. <table width="100%" align="left" border="0" cellpadding="0" cellspacing="0">
  2.     <?
  3.     while($res = pg_fetch_object($qry))
  4.      {
  5.     ?>
  6.      <tr>
  7.       <td width="80%">
  8.       <input type="checkbox" name="opt" value="<?=$res->optvn_prix?>" onClick="javascript:essai(<?=$res->optvn_prix?> );"><?=$res->opt_nom?>
  9.       <td width="20%"><?=$res->optvn_prix?>€</td>
  10.      </tr>
  11.     <?
  12.       }
  13.     ?>
  14.      <tr bgcolor="#FFFFCC">
  15.       <td width="80%">TOTAL</td>
  16.       <td width="20%">:<input type="text" id="total" name="total" value="0">€</td>
  17.      </tr>
  18.     </table>

mood
Publicité
Posté le 27-03-2007 à 16:45:42  profilanswer
 

n°1534446
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-03-2007 à 17:11:17  profilanswer
 

Code :
  1. function essai(chkObj){
  2.     document.getElementById('total').value += (chkObj.checked*2 - 1) * chkOBj.value;
  3. }


et l'appel:

Code :
  1. <input type="checkbox" ... onClick="essai(this)" ...>


Message édité par anapajari le 27-03-2007 à 17:11:28
n°1534449
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 27-03-2007 à 17:13:05  profilanswer
 

ah oui, pardon, il se peut que j'aie oublié de typer en entier.
quelque chose comme :

Code :
  1. <script type="text/javascript">
  2. function ajoutersomme(somme)
  3. {
  4.    var ajout = parseInt(somme);
  5.    var totalexistant = parseInt(document.getElementById('total').value);
  6.    totalfinal = totalexistant + ajout;
  7.    document.getElementById('total').value = totalfinal;
  8. };
  9. </script>


suffit-il ?
 
En ce qui concerne la suppression ... C'est un peu plus délicat. En fait il faudrait laisser le total initial à 0 et le mettre à jour dès qu'une checkbox est cochée et envoie sa valeur.
 
En gros dès que tu coches, ça envoie +Lambda et on compte la somme de toutes les cases cochées. et dès que tu décoches, pareil on met à jour le champ total.
un peu de lecture pour ça : http://www.commentcamarche.net/for [...] s-a-cocher
ça te donnera le principe.

n°1534454
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-03-2007 à 17:16:13  profilanswer
 

faut pas oublier le radix sur parseInt sinon 0(1-9) est interprété en octal au lieu d'être en décimal.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [resolu]calcul d'une somme avec plusieurs INPUT

 

Sujets relatifs
[Résolu] XML socket: Aucune connexion:([RESOLU] Lien html dynamique sur un label
[SQL] [Résolu] Caractere chinois - Phpmyadmin[DELPHI] Composant pou rentrer une adresse IP. (Résolu !)
[Résolu] Problèmes d'impressionPHP 4/5 -> Array (pas de liste ?) [Résolu]
menu commun a plusieurs pages web[COBOL] Validation de plusieurs conditions dans un EVALUATE
Communication dll C++ -> code C# (bis) [RESOLU]Réinitialisation vector [RESOLU]
Plus de sujets relatifs à : [resolu]calcul d'une somme avec plusieurs INPUT


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR