Posez votre question Signaler

"OnChange" avec php

elodie - Dernière réponse le 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>';
Lire la suite 

"OnChange" avec php »

12 réponses
Réponse
+0
moins plus
...Je sais que c avec "OnChange"...

Mais cest surtout avec javascript (pas php)

;-)
Ajouter un commentaire
Réponse
+0
moins plus
Si tu veux, mais est-ce que tu peux m'aider?
Ajouter un commentaire
Réponse
+0
moins plus
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 +
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
Il suffit de modifier les noms dans la fonction calculTotal()


[ JEROMAX ] http://www.jeromax.free.fr
Ajouter un commentaire
Réponse
+0
moins plus
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;
elodie - 12 mars 2003 à 14:54
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
Ajouter un commentaire
Réponse
+0
moins 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[].
elodie - 13 mars 2003 à 08:45
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.
Ajouter un commentaire
Réponse
+0
moins 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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « "OnChange" avec php » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook