"OnChange" avec php
elodie
-
JEROMAX Messages postés 274 Date d'inscription Statut Membre Dernière intervention -
JEROMAX Messages postés 274 Date d'inscription Statut Membre Dernière intervention -
Salut,
Je fais un site en php sous windows avec easyphp.
Dans l'une de mes pages, g 3 champs .
1 c la quantité, l'autre c le prix et le 3° c le montant.
Je voudré savoir comment on fait pour que lorsque je tape la quantité et le prix, le montant se calucul et s'affiche automatiquement.
Je sais que c avec "OnChange" mais je n'y arrive pas.
Vous pouvez m'aider?
Voila mon code:
echo'<td><input type="texte" name="pu[]"
OnChange="this.form.montant[].value=(this.form.pu[].value)*
(this.form.qte[].value)"></td>';
echo'<td><input type="texte" name="qte[]"
OnChange="this.form.montant[].value=(this.form.pu[].value)*
(this.form.qte[].value)"></td>';
echo'<td><input type="texte" name="montant[]"> €
</td>';
Je fais un site en php sous windows avec easyphp.
Dans l'une de mes pages, g 3 champs .
1 c la quantité, l'autre c le prix et le 3° c le montant.
Je voudré savoir comment on fait pour que lorsque je tape la quantité et le prix, le montant se calucul et s'affiche automatiquement.
Je sais que c avec "OnChange" mais je n'y arrive pas.
Vous pouvez m'aider?
Voila mon code:
echo'<td><input type="texte" name="pu[]"
OnChange="this.form.montant[].value=(this.form.pu[].value)*
(this.form.qte[].value)"></td>';
echo'<td><input type="texte" name="qte[]"
OnChange="this.form.montant[].value=(this.form.pu[].value)*
(this.form.qte[].value)"></td>';
echo'<td><input type="texte" name="montant[]"> €
</td>';
A voir également:
- Php onchange
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
10 réponses
salut élo,
tiens essayes ça... dis moi si c'est un truc de ce genre que tu cherchais:
<html>
<head>
<title>
</title>
<script language="javascript">
function calculTotal(){
document.calcul.total.value = document.calcul.prix.value * document.calcul.quantite.value;
}
</script>
</head>
<body>
<form name="calcul">
prix : <input type="text" name="prix" onkeyup="calculTotal()"><br>
quantite : <input type="text" name="quantite" value="1" onkeyup="calculTotal()"><br>
total : <input type="text" name="total">
</form>
</body>
</html>
a +
tiens essayes ça... dis moi si c'est un truc de ce genre que tu cherchais:
<html>
<head>
<title>
</title>
<script language="javascript">
function calculTotal(){
document.calcul.total.value = document.calcul.prix.value * document.calcul.quantite.value;
}
</script>
</head>
<body>
<form name="calcul">
prix : <input type="text" name="prix" onkeyup="calculTotal()"><br>
quantite : <input type="text" name="quantite" value="1" onkeyup="calculTotal()"><br>
total : <input type="text" name="total">
</form>
</body>
</html>
a +
Merci de te pencher sur mon pb,
Mais le nom de mes <input> sont des tableaux. Je peux pas mettre des noms ordinaires j'en ai besoin pour la suite de mon code.
tu vois, pour le prix c: <input name="prix[]">
C pour cela que je crois pas que ton code puisse marché avec le mien.
Mais le nom de mes <input> sont des tableaux. Je peux pas mettre des noms ordinaires j'en ai besoin pour la suite de mon code.
tu vois, pour le prix c: <input name="prix[]">
C pour cela que je crois pas que ton code puisse marché avec le mien.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Il suffit de modifier les noms dans la fonction calculTotal()
[ JEROMAX ] http://www.jeromax.free.fr
[ JEROMAX ] http://www.jeromax.free.fr
Salut elodie,
Si tu utilises des tableaux (input[]) dans ce cas, prends l'habitude de toujours utiliser elements[] pour y accèder :
document.calcul.elements['total'].value = document.calcul.elements['prix'].value * document.calcul.elements['quantite'].value;
Si tu utilises des tableaux (input[]) dans ce cas, prends l'habitude de toujours utiliser elements[] pour y accèder :
document.calcul.elements['total'].value = document.calcul.elements['prix'].value * document.calcul.elements['quantite'].value;
Salut bobinours,
Désolé mais ton truc sa marche pas.
Je te redonne mon code si ca peut t'aider à mieux comprendre:
<form name="enr">
<table>
<tr>
echo'<td><input type="texte" name="pu[]"></td>';
echo'<td><input type="texte" name="qte[]"></td>';
echo'<td><input type="texte" name="montant[]" > €
</td>';
</tr>
</table>
</form>
Sinon, c pas grave. Je m'arrangerai autrement.
a plus
Désolé mais ton truc sa marche pas.
Je te redonne mon code si ca peut t'aider à mieux comprendre:
<form name="enr">
<table>
<tr>
echo'<td><input type="texte" name="pu[]"></td>';
echo'<td><input type="texte" name="qte[]"></td>';
echo'<td><input type="texte" name="montant[]" > €
</td>';
</tr>
</table>
</form>
Sinon, c pas grave. Je m'arrangerai autrement.
a plus
Tu mélanges du code PHP et HTML...
Voilà ce dont je te parlais :
<html>
<head>
<script language="javascript">
function calculTotal(){
document.enr.elements['montant[]'].value = document.enr.elements['pu[]'].value * document.enr.elements['qte[]'].value;
}
</script>
</head>
<body>
<form name="enr">
<table>
<tr>
<td><input type="texte" name="pu[]" onkeyup="calculTotal()"></td>
<td><input type="texte" name="qte[]" onkeyup="calculTotal()"></td>
<td><input type="texte" name="montant[]"> € </td>
</tr>
</table>
</form>
</body>
</html>
Je suppose cependant que tu nous caches l'utilisation de plusieurs INPUT avec les mêmes noms.
Dans ce cas, je te suggère fortement d'ajouter un champ caché (INPUT Hidden) par ligne qui contiendra le numero de la ligne de l'article. Puis d'utiliser les indices du tableau elements[].
Voilà ce dont je te parlais :
<html>
<head>
<script language="javascript">
function calculTotal(){
document.enr.elements['montant[]'].value = document.enr.elements['pu[]'].value * document.enr.elements['qte[]'].value;
}
</script>
</head>
<body>
<form name="enr">
<table>
<tr>
<td><input type="texte" name="pu[]" onkeyup="calculTotal()"></td>
<td><input type="texte" name="qte[]" onkeyup="calculTotal()"></td>
<td><input type="texte" name="montant[]"> € </td>
</tr>
</table>
</form>
</body>
</html>
Je suppose cependant que tu nous caches l'utilisation de plusieurs INPUT avec les mêmes noms.
Dans ce cas, je te suggère fortement d'ajouter un champ caché (INPUT Hidden) par ligne qui contiendra le numero de la ligne de l'article. Puis d'utiliser les indices du tableau elements[].
Exactement, dans 1 page l'utilisateur saisi le nombre de produit qu'il veut et c dans la 2°page que j'affiche mes champs pour qu'il saisisse les produits qu'il veut.
Donc dans ma 2°page, je fait une boucle sur mes <input>.
En tout cas je n'utilise pas d'autres <input> avec le même nom.
mon code:
<body>
<form name="enr" action="insert.php">
<h1>COMMANDE </h1>
<table border=1><tr>
<th><h5>Prix Unitaire (en euro)</h5></th>
<th><h5>Quantité</h5></th>
<th><h5>Montant HT</h5></th></tr>
<?
$quantite=$nombre; //c le nb saisi dans ma 1°page
echo'<input type=hidden name=qt value='.$quantite.'>';
$host="localhost";
$user="root";
$password="";
$base="bdd";
$link=mysql_connect($host,$user,$password) or die("Impossible
de se connecter");
mysql_select_db("$base") or die("Impossible de se connecter à la
base");
for ($nb=1; $nb<=$quantite; $nb=$nb+1) { //début de ma boucle
?>
<tr>
<? echo'<td><input type="text" name="produit[]"></td>';
echo' <td><input type="texte" name="designation[]">
</td>';
echo'<td><input type="texte" name="pu[]"
onKeyup="calculmontant()"></td>';
echo'<td><input type="texte" name="qte[]"
onKeyup="calculmontant()"></td>';
echo'<td><input type="texte" name="montant[]"> €
</td>';
?>
</tr>
<? } ?> //fin de ma boucle
</table>
</form>
</body>
</html>
Voila.
Par contre ma fonction ne marche pas:
function calculTotal(){
document.enr.elements['montant[]'].value =
document.enr.elements['pu[]'].value * document.enr.elements
['qte[]'].value;
}
Et lorsque j'ouvre ma page et que mon pointeur est dans le champ prix, il dit qu'il y a une erreur dans mon code.
A plus.
Donc dans ma 2°page, je fait une boucle sur mes <input>.
En tout cas je n'utilise pas d'autres <input> avec le même nom.
mon code:
<body>
<form name="enr" action="insert.php">
<h1>COMMANDE </h1>
<table border=1><tr>
<th><h5>Prix Unitaire (en euro)</h5></th>
<th><h5>Quantité</h5></th>
<th><h5>Montant HT</h5></th></tr>
<?
$quantite=$nombre; //c le nb saisi dans ma 1°page
echo'<input type=hidden name=qt value='.$quantite.'>';
$host="localhost";
$user="root";
$password="";
$base="bdd";
$link=mysql_connect($host,$user,$password) or die("Impossible
de se connecter");
mysql_select_db("$base") or die("Impossible de se connecter à la
base");
for ($nb=1; $nb<=$quantite; $nb=$nb+1) { //début de ma boucle
?>
<tr>
<? echo'<td><input type="text" name="produit[]"></td>';
echo' <td><input type="texte" name="designation[]">
</td>';
echo'<td><input type="texte" name="pu[]"
onKeyup="calculmontant()"></td>';
echo'<td><input type="texte" name="qte[]"
onKeyup="calculmontant()"></td>';
echo'<td><input type="texte" name="montant[]"> €
</td>';
?>
</tr>
<? } ?> //fin de ma boucle
</table>
</form>
</body>
</html>
Voila.
Par contre ma fonction ne marche pas:
function calculTotal(){
document.enr.elements['montant[]'].value =
document.enr.elements['pu[]'].value * document.enr.elements
['qte[]'].value;
}
Et lorsque j'ouvre ma page et que mon pointeur est dans le champ prix, il dit qu'il y a une erreur dans mon code.
A plus.
je ne comprend pas pourquoi tu t'embete avec tes pu[] et tes montant[]
Comme ça, je pense que tu n'auras plus de probleme
for ($nb=1; $nb<=$quantite; $nb=$nb+1) { //début de ma boucle
?>
<tr>
<? echo'<td><input type="text" name="produit$nb"></td>';
echo' <td><input type="texte" name="designation$nb">
</td>';
echo'<td><input type="texte" name="pu$nb"
onKeyup="calculmontant($nb)"></td>';
echo'<td><input type="texte" name="qte$nb"
onKeyup="calculmontant($nb)"></td>';
echo'<td><input type="texte" name="montant$nb"> €
</td>';
?>
</tr>
<? } ?> //fin de ma boucle
function calculMontant(pNum){
document.all['montant'+pNum].value=document.all['pu'+pNum].value*document.all['qte'+pNum].value
}
par contre tu as interet de faire un test pour savoir si c'est du numeric dans tous les champs avant de balancer ton calcul, sinon ça va planter grave et notament quand le champ est vide...
[ JEROMAX ] http://www.jeromax.free.fr
Comme ça, je pense que tu n'auras plus de probleme
for ($nb=1; $nb<=$quantite; $nb=$nb+1) { //début de ma boucle
?>
<tr>
<? echo'<td><input type="text" name="produit$nb"></td>';
echo' <td><input type="texte" name="designation$nb">
</td>';
echo'<td><input type="texte" name="pu$nb"
onKeyup="calculmontant($nb)"></td>';
echo'<td><input type="texte" name="qte$nb"
onKeyup="calculmontant($nb)"></td>';
echo'<td><input type="texte" name="montant$nb"> €
</td>';
?>
</tr>
<? } ?> //fin de ma boucle
function calculMontant(pNum){
document.all['montant'+pNum].value=document.all['pu'+pNum].value*document.all['qte'+pNum].value
}
par contre tu as interet de faire un test pour savoir si c'est du numeric dans tous les champs avant de balancer ton calcul, sinon ça va planter grave et notament quand le champ est vide...
[ JEROMAX ] http://www.jeromax.free.fr
Je doit faire des tableaux pour que lorsque l'utilisateur saisi les produits. Les valeurs saisies ne soi pas perdu d'une ligne à une autre. Car dans pas page "insert.php" j'insère les valeurs dans ma base en récupérant les valeurs dans ses tableaux.
Ecoutez, laissez tomber c pas grave.
Je vais pas m'éterniser sur ce problème, g encore d'autre chose à faire.
En tou cas, je vous remerci d'avoir réfléchi sur mon pb.
Ecoutez, laissez tomber c pas grave.
Je vais pas m'éterniser sur ce problème, g encore d'autre chose à faire.
En tou cas, je vous remerci d'avoir réfléchi sur mon pb.
et alors?
les valeurs ne sont pas perdues....
Tu les récupère aussi pour les enregistrer dans ta base....
C'est même plus simple.
[ JEROMAX ] http://www.jeromax.free.fr
les valeurs ne sont pas perdues....
Tu les récupère aussi pour les enregistrer dans ta base....
C'est même plus simple.
[ JEROMAX ] http://www.jeromax.free.fr