Créer calculs à trou donnant résultat

Créer calculs à trou donnant résultat - PHP - Programmation

Marsh Posté le 10-06-2009 à 19:10:36    

Bonjour,  
 
je souhaite realiser une sorte de "calculette" sur mon site web.  
 
Je vous explique avec un exemple :  
 
63x [textarea1] + (120/[textarea2]) =  
 
Les textarea represente donc des zones de texte où l'utilisateur met sont chiffre, et quans il click sur le bouton valider le resultat se génère apres le "=" .  Par contre je souhaiterais qu'il n'y ait pas un changement de page, donc que le resultat s'affiche sur la meme page.  
 
Et la a vrai dire je ne sais vraiment pas par où me tourner. Si la solution existe avec du "simple" php ca m'arrange.  
 
Pourvez vous m'aider ou au moins m'orienter ?  
 
merci

Reply

Marsh Posté le 10-06-2009 à 19:10:36   

Reply

Marsh Posté le 10-06-2009 à 23:13:45    

Bon, je viens de bosser un peu et j'ai reussi à faire des trucs tout simple (c'est tres nul mais je suis assez fiere de moi car j'y suis allé a l'aventure, avec tout ce que j'ai appris ces derniers jours^^) mais qui ne marche pas comme je voudrais (ca fait 10 jours que j'ai decouvert le php alors ne m'en demandez pas trop !:D)
 
J'aimerais partir sur cette base :  
 

Code :
  1. <form id="form2" name="form2" method="post" action="validation">
  2. <table width="247" height="193" border="0">
  3.   <tr>
  4.     <td width="161" height="100"><textarea name="textfield2" rows="5" id="textfield2"></textarea></td>
  5.   </tr>
  6. </table>
  7. <input name="button2" id="button2" value="Valider" type="submit">
  8. <?php
  9. $xx=$_POST('textfield2')
  10. $nbr=5 * $xx * 10;
  11. echo number_format($nbr, 2, ',', ' ')." mol/L";
  12. ?>


 
Bon, la comme ca, ca plante, mais si je met $xx='textfield2', la page fonctionne mais j'ai beau valider, mon $xx n'est pas pris en compte dans mon $nbr (normal, j'ai fais plein d'erreur).  
 
Donc je ne sais pas trop quoi mettre à $xx= pour qu'il soit pris en compte dans le $nbr
 
Et je pense que c'est aussi a cause de "action" de ma form id, qui doit etre fausse, que ca ne marche pas.  
 
Donc s'il vous plait, comment faire pour que, lorsque je clik sur "valider", mon calcul soit fait ? (en prenant compte la valeur tapée dans la zone de texte, car la il est fait, mais c'est égal à 0 ^^)  
 
Et secondairement (accessoirement aussi) comment faire avec du ajax pour que seul mon résultat apparaisse sans que la page entiere soit réactualisée ?  
 
Merci beaucoup
 
nb : ca doit pas etre tres compliqué d'arriver à faire rentrer la valeur que l'utilisateur tape dans la zone de texte, dans le calcul ..., non ?  :cry:


Message édité par charlelechauve le 10-06-2009 à 23:14:59
Reply

Marsh Posté le 11-06-2009 à 08:52:28    

Euh, pour l'actualisation sans recharger la page, c'est javascript ou rien...

Reply

Marsh Posté le 11-06-2009 à 10:03:46    

Pour commencer :
- fermer la balise <form>
- $_POST est un tableau, pas une fonction, donc $_POST['textfield2'] devrait mieux fonctionner ;)


Message édité par deliriumtremens le 11-06-2009 à 10:06:14
Reply

Marsh Posté le 11-06-2009 à 10:36:31    

Code corrigé en théorie:
 

Code :
  1. <form id="form2" name="form2" method="post" action="validation.html">
  2. <table width="247" height="193" border="0">
  3.   <tr>
  4.     <td width="161" height="100"><textarea name="textfield2" rows="5" id="textfield2"></textarea></td>
  5.   </tr>
  6. </table>
  7. <input name="button2" id="button2" value="Valider" type="submit">
  8. </form>
  9. <?php
  10. $xx=$_POST['textfield2'];
  11. $nbr=5 * $xx * 10;
  12. echo number_format($nbr, 2, ',', ' ')." mol/L";
  13. ?>

Reply

Marsh Posté le 11-06-2009 à 19:12:52    

éh éh, merci à tous, ca marche, hormis un petit bug.  
 
Pour action j'ai donc mis action="calcul.php". calcul.php est cette meme page, donc quand je valide ca me renvoie sur la meme page :) (faudra que je fasse le truc en java dans un deuxieme temps pour que seul la place où le resultat s'inscrit s'actualise).  
 
Merci aussi pour les crochés à la place des parenthese et le ; oublié  ;)  (pour le /form je l'avais mis mais plus bas :p)
 
Par contre à chaque fois que j'ouvre la page calcul.php (donc avant meme quie je rentre une valeur dans la zone de texte ($xx) j'ai une petite ligne d'erreur qui s'efface des que je rentre un chiffre et que je valide :  
 

Citation :

Notice: Undefined index: textfield2 in C:\wamp\www\test calculs\calcul.php on line 23


 
Cette ligne correspond, si je ne me trompe pas, à :  
 

Code :
  1. $xx=$_POST['textfield2'];


 
Donc comment faire pour qu'il ne m'embete pas si il n'y a aucune valeur rentrée dans le zone de texte ? (car si je ne me trompe pas c'est ca le probleme)
 
Merci encore

Reply

Marsh Posté le 11-06-2009 à 21:44:36    

pour l'actualisation sans recharger la page, il y a AJAX, gentillement facilité par PEAR avec son package HTML_AJAX (http://pear.php.net/package/HTML_AJAX; la doc:http://wiki.bluga.net/doku.php?id=html_ajax:homepage)


Message édité par Corebreaker le 11-06-2009 à 21:46:25
Reply

Marsh Posté le 11-06-2009 à 23:21:18    

Merci beaucoup, je vais lire tout ca des demain.  
 
Sinon pour mon probleme de calcul c'est reglé, ca marche fakkait mettre un if (issett ..... ) {
 
Merci à tous
 
et Résolu

Reply

Marsh Posté le 12-06-2009 à 00:15:03    

ca serai largement plus simple a faire seulement en javascript, que de passer par PHP

Reply

Marsh Posté le 12-06-2009 à 10:44:22    

en effet. Pourquoi utiliser du PHP ?  
 
inspire toi de ça
http://www.anaesthetist.com/mnm/javascript/calc.htm


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 12-06-2009 à 10:44:22   

Reply

Marsh Posté le 12-06-2009 à 18:13:06    

Je viens de regarder je ne sais aps si c'ets ce qu'il me faut (ou alors je n'ai pas bien saisie les fonctions de cette calculette.  
Ce que tu m'as donné est un calculette tres complete avec plein de fonction, elle est super j'en suis persuadé.  
 
Mais moi il me faut pas une calculette à proprement dis, il me faut un "resolveur" de calcul à plusieurs "variables".  
 
je m'explique avec le calcul que je suis en train d'essayé de mettre en place :  
 
$x, $y et $z sont des variables dont l'utilisateur choisiera la valeur dans 3 zones de textes vides que je met a disposition sur la page.  
 
Le calcul est : Concentration en acide lactique = ($x * $y ) / $z
 
L'utilisateur n'etant pas forcement comptétant, il ne sait pas que pour calculer la conc en acide il faut faire ce calcul, mais par contre il connait la valeur des $x y et z. Ce qui fait la différence avec une calculette ordinaire où il faut connaitre le calcul.  
 
Par contre j'ai un petit probleme, par exemple si $x= 1/3, le  navigateur croit qu'il faut multiplier 3*$y .... Meme si dans ma ligne je met (($x) * $y) / $z..
 
Si vous savez resoudre mon probleme tres simplement, donc sans passer par java, ou des fonctions telles que gmd et bcdiv (que je viens de yeuter et qui ne permettent pas de regler mon probleme apparement).
 
Merci :p
 
nb : au cas où je vais creer un autre poste (apres avoir chercher des reponses) car celui la est marqué résolu :p

Reply

Marsh Posté le 13-06-2009 à 03:59:51    

en PHP, $x=1/3; ne veut pas dire affecter un tiers à $x mais veut dire diviser 1 par 3 et renvoie les résultat dans la variable $x.
Et attention, avec $xx=$_POST['textfield2']; et que dans le champ de saisie tu entre 1/3, alors $xx=$_POST['textfield2']; équivaut à $xx="1/3"; car le texte saisie est retournée sous forme de chaine de caractère. Si ensuite $xx est utilisé dans une expression arithmétique par exemple, PHP va convertir le texte en valeur numérique, et donc
$xx="1/3"; n'est pas la même chose que $xx=1/3;
$xx=1/3 :: opération de division
$xx="1/3" :: affectation d'une chaine.
 
Et à la conversion numérique, $xx="1/3" equivaut à $xx= 1 car la conversion numérique s'arrete au premier caracrère non autorisé pour représenter un nombre.
 
une solution simple mais hasardeuse:
$xx=$_POST['textfield2'];
eval('$xx='.$xx);
 
sinon, c'est verifier au lancement du calcul (bouton d'envoi) si le champs de saisie contient un nombre légal et non une fraction.
 
On peut dire qu'en PHP:
$xx= "12" * 5; équivaut à $xx= 60;
 
mais que $xx= "12*12" + 5; équivaut à $xx= 17; et non pas à $xx= 161;


Message édité par Corebreaker le 13-06-2009 à 04:04:05
Reply

Marsh Posté le 13-06-2009 à 04:21:18    

Voici, sans PHP:
 

Code :
  1. <HTML>
  2. <BODY>
  3. <PRE>
  4. <FORM>
  5.    X=<INPUT type="text" name="valx" value="0"><BR>
  6.    Y=<INPUT type="text" name="valy" value="0"><BR>
  7.    Z=<INPUT type="text" name="valz" value="1"><BR>
  8.    (X * Y) / Z <INPUT type="button" value="=?" onclick="calcul(this.form)"><SPAN id="result">0</SPAN>
  9. </PRE>
  10. </BODY>
  11. <SCRIPT>
  12. <!-- //
  13. function calcul(f)
  14. {
  15.    var x= parseFloat(f.elements('valx').value);
  16.    var y= parseFloat(f.elements('valy').value);
  17.    var z= parseFloat(f.elements('valz').value);
  18.    document.getElementById("result" ).innerHTML= (x * y) / z;
  19. }
  20. // -->
  21. </SCRIPT>
  22. </HTML>

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed