Rechercher : dans
Par :

"OnChange" avec php

Dernière réponse le 13 mar 2003 à 09:10:12 elodie, le 11 mar 2003 à 10:14:49 
 Signaler ce message aux modérateurs

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>';

Meilleures réponses pour « "OnChange" avec php » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
[PHP] Notice: Undefined index: VoirSi vous utilisez les tableaux $_POST ou $_GET pour récupérer les variables de vos formulaires ou autres, il se peut que vous tombiez sur cette erreur: Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line...
[PHP] Parse error, unexpected T_STRING, expecting ',' or ';' VoirCette erreur, fréquente, se produit notamment lorsqu'un guillemet est présent dans une chaîne délimitée par ce même type de guillemets, par exemple :
Télécharger PHP Edit VoirPHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de fonctionnalités permettant de développer plus efficacement : Coloration syntaxique Auto-complétion des fonctions Débuggeur...
Télécharger PHP FTP Synchronizer VoirLa mise à jour de site web est aussi complexe que sa conception. Alors il faut utiliser le bon outil avec les bon paramètres et une bonne connaissance de programmation pour mettre à jour un site. PHP FTP Synchronizer est une application vous...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...

1

pollux, le 11 mar 2003 à 10:21:04

...Je sais que c avec "OnChange"...

Mais cest surtout avec javascript (pas php)

;-)

Répondre à pollux

2

elodie, le 11 mar 2003 à 10:31:34

Si tu veux, mais est-ce que tu peux m'aider?

Répondre à elodie

3

guyom, le 11 mar 2003 à 11:19:53

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 +

Répondre à guyom

4

elodie, le 11 mar 2003 à 14:43:34

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.

Répondre à elodie

5

JEROMAX, le 12 mar 2003 à 11:13:43

Il suffit de modifier les noms dans la fonction calculTotal()


[ JEROMAX ] http://www.jeromax.free.fr

Répondre à JEROMAX

6

Bobinours, le 12 mar 2003 à 14:23:30

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;
-= Bobinours -  =-

Répondre à Bobinours

7

elodie, le 12 mar 2003 à 14:54:02

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

Répondre à elodie

8

Bobinours, le 13 mar 2003 à 02:11:14

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[].
-= Bobinours - =-

Répondre à Bobinours

9

elodie, le 13 mar 2003 à 08:45:59

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.

Répondre à elodie

10

JEROMAX, le 13 mar 2003 à 08:58:50

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

Répondre à JEROMAX

11

elodie, le 13 mar 2003 à 09:06:20

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.

Répondre à elodie

12

 JEROMAX, le 13 mar 2003 à 09:10:12

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

Répondre à JEROMAX