Operateur et PHP
RésoluJ'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
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.
-
Le probleme est résolu...
Bye ..Céline -
Bonne continuation ;-) Passe juste ton post en "Résolu" stp ;-)
-
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 -
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 -
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 leparseInt(...)
parparseFloat(...)
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 -
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 -
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 -
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 -
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 -
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 -
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é. -
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 -
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 !! ;-) -
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 -
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; } -
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 -
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. -
Zut j'ai oublié de noter probleme non resolu.......céline Ha tete de linotte
-
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 -
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