Operateur et PHP

Résolu
Bonjour,

J'ai un petit soucis dans mon code php, qui va etre banale, je pense pour vous

J'ai fais un tableau et je voudrais que s'affiche automatiquement le resultat d'une operation
de multiplication dans une cellule

Voila le code

<td style="text-align: center; vertical-align: top;"><span class="Style4">
<input name="design" id="design" size="50" maxlength="48">
</span></td>
<td style="text-align: center; vertical-align: top;"><span class="Style4">
<input name="nombre" id="nombre" size="10" maxlength="2">
</span></td>
<td style="text-align: center; vertical-align: top;"><span class="Style4">
<input name="prix" id="prix" size="10" maxlength="5">
</span></td>
<td style="text-align: center; vertical-align: top;"><span class="Style4">
<input name="total" id="total" size="10" maxlength="5">
<?php
$total = $prix*$nombre;
echo $total;
?>
</span></td>

Je multiplie donc prix par nombre et je voudrais que ca s'affiche dans total,
mais hélas apres 2 heures de recherche sur le web, pas moyen de trouver

Pouvez vous m'aider s'il vous plait, merci...Céline
Configuration: Windows Vista
Internet Explorer 7.0

34 réponses

Résumé de la discussion

Le fil porte sur l'affichage automatique du produit du prix et du nombre dans une cellule total d'un tableau HTML, sans dépendre d'une revalidation côté serveur en PHP. Plusieurs réponses préconisent d'utiliser JavaScript pour calculer le total en temps réel, en récupérant les valeurs des champs 'nombre' et 'prix', puis en affichant le résultat dans 'total'. Certaines discussions évoquent aussi que mélanger PHP et JavaScript est possible, mais que PHP ne peut utiliser directement les valeurs des champs du formulaire sans soumission, rendant JavaScript plus simple et fiable. En pratique, les échanges montrent des essais jusqu'à une solution fonctionnelle lorsqu'on gère correctement les nombres et les événements, évitant les erreurs NaN ou la concaténation de chaînes.

Bobot (l’IA à votre service)
  1. Bonne continuation ;-) Passe juste ton post en "Résolu" stp ;-)
    1. Ca y est c'est fini.

      J'ai sans doute été la fille la plus chiante à aider,

      Alors je voudrais remercier commentcamarche.net pour
      sont forum, qui m'ont permis de réaliser mon formulaire.

      Et tout particulierement à Alex, qui n'as compté
      ni sont temp , ni sont énergie pour m'aider.
      Avec en plus, une grande gentillesse
      Désolée de ne pas pouvoir aider a mon tour, mais je suis
      une future piqueuse de fesses Lool ( infirmiere )

      Cette aide m'a en plus permis de comprendre quelques fonctions de
      JS

      Alors peut etre , a bientot sur commentcamarche.net

      Kiss à Alex

      Céline

      La petite voie: MMhhh , céline t'as dit "a bientot sur commentcamarche.net", t'as donc déja quelque chose en tete ?
      Céline: eh eh, on ne peux rien te cacher .

      Allez j'arrete de déconner............ tchao
      1. Voilà la réécriture de ton formulaire :
        <table border="0" align="center" cellspacing="5">
        	<tr>
        		<td colspan="4" align="center">Monsieur<input name="sex" value="Monsieur" id="sex" type="radio">Madame<input name="sex" value="Madame" id="sex" type="radio"></td>
        	</tr>
        	<tr>
        		<td align="right">Nom :</td>
        		<td colspan="3" align="left"><input name="nom" id="nom" type="text"></td>
        	</tr>
        	<tr>
        		<td align="right">Prénom :</td>
        		<td colspan="3" align="left"><input name="prenom" id="prenom" type="text"></td>
        	</tr>
        	<tr>
        		<td align="right">Adresse :</td>
        		<td colspan="3" align="left"><input name="adresse" id="adresse" type="text"></td>
        	</tr>
        	<tr>
        		<td align="right">Ville :</td>
        		<td align="left"><input name="localite" id="localite"></td>
        		<td align="right">Code postal :</td>
        		<td align="left"><input name="cpa" id="cpa" type="text"></td>
        	</tr>
        	<tr>
        		<td align="right">Tél :</td>
        		<td align="left"><input name="numtel" id="numtel" type="text"></td>
        		<td align="right">Portable :</td>
        		<td align="left"><input name="port" id="port" type="text"></td>
        	</tr>
        	<tr>
        		<td align="right">Adresse email :</td>
        		<td colspan="3" align="left"><input name="email" id="email" size="60" type="text"></td>
        	</tr>
        </table>
        Ça donne ça : https://www.enregistrersous.com/

        @ pluche

        Alex
        1. Hey mais c'est Céline !! Ça faisait un bail dis donc LOLLLLL

          Alors j'ai la réponse à ta question. Si tu veux arrondir à 2 chiffres après la virgule tes totaux. Il faut que tu rajoutes dans la fonction javascript qui calcule chaque total par ligne (calculerTotal1, calculerTotal2 etc.) la ligne suivante :
          function CalculerTotal() {
          	var nombre = document.getElementById('nombre').value;
          	var prix = document.getElementById('prix').value;
          
          	var total;
          
          	if(!isNaN(nombre) && !isNaN(prix)){
          		total = nombre * prix;
                          total = Math.round(total*100)/100;
                  }
          	else
          		total = 'Merci de saisir des nombres';
          	document.getElementById('total').value = total;
          }
          Pour la dernière fonction c'est pareil :
          function CalculerTotal10() {
          
               var total = document.getElementById('total').value;
               var total2 = document.getElementById('total2').value;
          	 var total3 = document.getElementById('total3').value;
          	 var total4 = document.getElementById('total4').value;
          	 var total5 = document.getElementById('total5').value;
          	 var total6 = document.getElementById('total6').value;
          	 var total7 = document.getElementById('total7').value;
          	 var total8 = document.getElementById('total8').value;
          	 var total9 = document.getElementById('total9').value;
          	 
          	   
               if(!isNaN(total) && !isNaN(total2) && !isNaN(total3) && !isNaN(total4) && !isNaN(total5) && !isNaN(total6) && !isNaN(total7) && !isNaN(total8) && !isNaN(total9)){
                    if(total == "") total=0;
                    if(total2 == "") total2=0;
          		  if(total3 == "") total3=0;
          		  if(total4 == "") total4=0;
          		  if(total5 == "") total5=0;
          		  if(total6 == "") total6=0;
          		  if(total7 == "") total7=0;
          		  if(total8 == "") total8=0;
          		  if(total9 == "") total9=0;
                    total10 = parseFloat(total) + parseFloat(total2) + parseFloat(total3) + parseFloat(total4) + parseFloat(total5) + parseFloat(total6) + parseFloat(total7) + parseFloat(total8) + parseFloat(total9);
                    total10 = Math.round(total10*100)/100;
               }
               else
                   total10 = 'Merci de saisir des nombres';
               document.getElementById('total10').value = total10;
          }
          Petite précision aussi remplace le
          parseInt(...)
          par
          parseFloat(...)
          car parseInt s'utilise pour des entiers et parseFloat pour des nombres à virgule.

          Voili voilou, je suis en train de réécrire ton formulaire (Monsieur, Madame, Nom, Prénom etc.). Je te poste ça dès que j'ai fini pour que tu vois ce que ça donne.

          @ pluche

          Alex
          1. Oh nooooonnn, ...........................................ca marche !

            C'est que j'avais pris l'habitude de me plaindre, moi ! snniff

            Bouuuuhh je me suis plaint pour rien , il as vu mon accolade au mauvais endroit Snniff :)

            J'ai envie d'etre chiante ...hi hi hi

            Question a 2 dollars 50

            Pourquoi quand le multiplicateur d'un nombre a virgule est impair ca fait
            une suite de 8.850000000000001 a rallonge ??

            Le monologue de Céline
            Ma petite voie: T'abuse céline... cette fois il va t'envoyer bouler et tu l'aura cherché
            Céline: mais non je suis sur qu'il va me répondre encore une fois
            Ma petite voie: non non t'exagere, ca se trouve en plus, il bosse en ce moment
            Céline : mais c'est une toute petite question...
            Ma petite voie: je te dit de...
            Céline : Bon ptite voie tu te taie maintenant c'est moi qui commande

            Merci Alex
            Céline
            1. Ah ouai mais nan je refuse LOL !!! Pour une fois c'est toi qui a mal recopié mon code. Je commençais à prendre peur tu sais hihi. Tu as fermé l'accolade du if une ligne avant. Ton code actuel
              if(!isNaN(total) && !isNaN(total2) && !isNaN(total3) && !isNaN(total4) && !isNaN(total5) && !isNaN(total6) && !isNaN(total7) && !isNaN(total8) && !isNaN(total9)){
                   if(total == "") total=0;
                   if(total2 == "") total2=0;
                   if(total3 == "") total3=0;
                   if(total4 == "") total4=0;
                   if(total5 == "") total5=0;
                   if(total6 == "") total6=0;
                   if(total7 == "") total7=0;
                   if(total8 == "") total8=0;
                   if(total9 == "") total9=0;
              }
              total10 = parseInt(total) + parseInt(total2) + parseInt(total3) + parseInt(total4) + parseInt(total5) + parseInt(total6) + parseInt(total7) + parseInt(total8) + parseInt(total9);
              else
                   total10 = 'Merci de saisir des nombres';
                   document.getElementById('total10').value = total10;
              Le bon code :
              if(!isNaN(total) && !isNaN(total2) && !isNaN(total3) && !isNaN(total4) && !isNaN(total5) && !isNaN(total6) && !isNaN(total7) && !isNaN(total8) && !isNaN(total9)){
                   if(total == "") total=0;
                   if(total2 == "") total2=0;
                   if(total3 == "") total3=0;
                   if(total4 == "") total4=0;
                   if(total5 == "") total5=0;
                   if(total6 == "") total6=0;
                   if(total7 == "") total7=0;
                   if(total8 == "") total8=0;
                   if(total9 == "") total9=0;
              total10 = parseInt(total) + parseInt(total2) + parseInt(total3) + parseInt(total4) + parseInt(total5) + parseInt(total6) + parseInt(total7) + parseInt(total8) + parseInt(total9);
              }
              else
                   total10 = 'Merci de saisir des nombres';
                   document.getElementById('total10').value = total10;
              Un mauvais point pour toi :-p
              1. kikou re moi

                Ca marque erreur sur la page maintenant et y a plus rien qui s'affiche ...

                Ouh la la recherche de sponsor chez efferalgant ...lool
                1. Alala quel mauvais développeur je fais !!!!
                  function CalculerTotal1000() {
                  
                       var total = document.getElementById('total').value;
                       var total2 = document.getElementById('total2').value;
                       
                       if(!isNaN(total) && !isNaN(total2)){
                            if(total == "") total=0;
                            if(total2 == "") total2=0;
                            total1000 = parseInt(total) + parseInt(total2);
                       }
                       else
                           total1000 = 'Merci de saisir des nombres';
                       document.getElementById('total1000').value = total1000;
                  }
                  En fait si toutes tes lignes ne sont pas remplies il n'arrivait pas à ajouter des nombres avec des champs vides. Pour palier au problème on met des "0" pour les totaux qui n'ont pas été saisis.
                  Aller zou @ tt à l'heure LOL
                  1. Re moi

                    eh non c 'est pas la bonne

                    Ca me marque NaN

                    J'imagine que tu sais ce que ca veux dire :)

                    Céline
                    1. J'ai la solution !!! LLOOLL
                      function CalculerTotal1000() {
                      
                           var total = document.getElementById('total').value;
                           var total2 = document.getElementById('total2').value;
                           
                           if(!isNaN(total) && !isNaN(total2))
                                total1000 = parseInt(total) + parseInt(total2);
                           else
                               total1000 = 'Merci de saisir des nombres';
                           document.getElementById('total1000').value = total1000;
                      }
                      Aller ce coup ci c la bonne ;-)
                      PS : Si je peux me permettre :-S mets ton formulaire (Monsieur, Madame, nom, prénom etc. dans une table ca sera mieux aligné.
                      1. Hello Alex

                        il y a un petit probleme !!!

                        Dixit Alex ( Maudite soit tu vil Céline ect..%£µ@##££$$)

                        Eh vi, ca s'affiche cette fois, mais ca me met les nombres a la suite

                        Regarde le lien

                        http://emilie.greuillet.free.fr/formulaire2.php

                        eh eh désolé, merci pour ton aide , c'est quand meme balese comme truc !!

                        @+ Céline
                        1. Arf vraiment désolé j'ai fait une erreur dans ma fonction javascript, je te donne la bonne version :
                          function CalculerTotal1000() {
                          
                               var total = document.getElementById('total').value;
                               var total2 = document.getElementById('total2').value;
                               
                               if(!isNaN(total) && !isNaN(total2))
                                    total1000 = total + total2;
                               else
                                   total1000 = 'Merci de saisir des nombres';
                               document.getElementById('total1000').value = total1000;
                          }
                          Voili Voilou normalement c'est bon !! ;-)
                          1. Hello Alex

                            J'ai essayé le code, j'ai une petite fenetre internet explorer avec un triangle jaune+
                            point d'exclamation qui s'ouvre au
                            moment de l'appuis sur le bouton "calculer" avec le message
                            total = [object] et un bouton OK si j'appuie sur OK
                            j'ai ensuite total2= [object] et ainsi de suite jusqu'a la fin des variables total
                            J'ai également le message "Merci de saisir des nombres" dans ma case
                            "total1000" au lieu du résultat.
                            Qu'en pense tu ?

                            Bonne soirée... Céline
                            1. Essaye de voir ce si il arrive bien à récupérer les valeurs, pour ce faire change la fonction javascript comme suit :
                              function CalculerTotal1000() {
                              
                                   var total = document.getElementById('total');
                                   var total2 = document.getElementById('total2');
                                   
                                   alert('total = '+total);
                                   alert('total2 = '+total2);
                              
                                   if(!isNaN(total) && !isNaN(total2))
                                        total1000 = total + total2;
                                   else
                                       total1000 = 'Merci de saisir des nombres';
                                   document.getElementById('total1000').value = total1000;
                              }
                              1. Bonjour Tassin

                                Tu as effectivement raison concernant le séparateur, il faut bien que ce soit un point.

                                Lors du calcul d'un nombre a virgule, il me met un resultat a rallonge
                                exemple 3 x 3.96 resultat 11.879999999999999

                                et lors d'un calcul de tout les totaux, il me met "Merci de saisir des nombres"
                                alors que tout et bien rempli.
                                J'ai essayé de me renseigner et de chercher, mais je n'y comprend rien,
                                je connais a peine le PHP alors le JS....

                                Merci pour aide...

                                Céline
                                1. Ce script marche correctement pour les nombres à virgules. Seulement il faut saisir tes valeurs avec le séparateur "."

                                  En ce qui concerne ton erreur que tu obtiens donne moi le texte exact stp.
                                  1. Zut j'ai oublié de noter probleme non resolu.......céline Ha tete de linotte
                                    1. Bonjour

                                      En faite , je croyais que le code marchait, mais il ne fonctionne pas avec les nombres a virgule !

                                      Donc si quelqu'un a une iddée pour que ca fonctionne je suis preneuse !

                                      <HTML>
                                      <HEAD>
                                      <SCRIPT language="Javascript">
                                      <!--

                                      function CalculerTotal() {
                                      var nombre = document.getElementById('nombre').value;
                                      var prix = document.getElementById('prix').value;

                                      var total;

                                      if(!isNaN(nombre) && !isNaN(prix))
                                      total = nombre * prix;
                                      else
                                      total = 'Merci de saisir des nombres';
                                      document.getElementById('total').value = total;
                                      }

                                      //-->
                                      </SCRIPT>
                                      </HEAD>
                                      <BODY>
                                      <table>
                                      <tr>
                                      <td style="text-align: center; vertical-align: top;"><span class="Style4">
                                      <input name="design" id="design" size="50" maxlength="48">
                                      </span></td>
                                      <td style="text-align: center; vertical-align: top;"><span class="Style4">
                                      <input name="nombre" id="nombre" size="10" maxlength="2">
                                      </span></td>
                                      <td style="text-align: center; vertical-align: top;"><span class="Style4">
                                      <input name="prix" id="prix" size="10" maxlength="5">
                                      </span></td>
                                      <td style="text-align: center; vertical-align: top;"><span class="Style4">
                                      <input name="total" id="total" size="5" maxlength="5">
                                      </span></td>
                                      <td style="text-align: center; vertical-align: top;"><span class="Style4">
                                      <input name="calculer" id="calculer" size="50" type="button" onclick="CalculerTotal();" value="Calculer"/>
                                      </span></td>
                                      </BODY>
                                      </HTML>

                                      Idem pour mon probleme d'addition des totals, qui ne fonctionne pas !

                                      Je connais pas grand chose en informatique, mais je suis eleve infirmiere, alors si vous avez des piqures a faire , amenez vos fe.....

                                      Merci

                                      Céline
                                      1. J'ai beau verifier et re-vérifier, ca ne veux pas calculer mes champs total.

                                        Céline

                                        Peut etre serais ce plus facile de le faire en php ??
                                        • 1
                                        • 2