"OnChange" avec php

Fermé
elodie - 11 mars 2003 à 10:14
JEROMAX Messages postés 274 Date d'inscription jeudi 22 février 2001 Statut Membre Dernière intervention 7 octobre 2013 - 13 mars 2003 à 09:10
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>';
A voir également:

10 réponses

Si tu veux, mais est-ce que tu peux m'aider?
1
...Je sais que c avec "OnChange"...

Mais cest surtout avec javascript (pas php)

;-)
0
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 +
0
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JEROMAX Messages postés 274 Date d'inscription jeudi 22 février 2001 Statut Membre Dernière intervention 7 octobre 2013 10
12 mars 2003 à 11:13
Il suffit de modifier les noms dans la fonction calculTotal()


[ JEROMAX ] http://www.jeromax.free.fr
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
12 mars 2003 à 14:23
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;
0
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
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
13 mars 2003 à 02:11
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[].
0
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.
0
JEROMAX Messages postés 274 Date d'inscription jeudi 22 février 2001 Statut Membre Dernière intervention 7 octobre 2013 10
13 mars 2003 à 08:58
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
0
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.
0
JEROMAX Messages postés 274 Date d'inscription jeudi 22 février 2001 Statut Membre Dernière intervention 7 octobre 2013 10
13 mars 2003 à 09:10
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
0