Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1243 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Créer calculs à trou donnant résultat

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Créer calculs à trou donnant résultat

n°1893807
charlelech​auve
Posté le 10-06-2009 à 19:10:36  profilanswer
 

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

mood
Publicité
Posté le 10-06-2009 à 19:10:36  profilanswer
 

n°1893889
charlelech​auve
Posté le 10-06-2009 à 23:13:45  profilanswer
 

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
n°1893955
l0g4n
Expert en tout :o
Posté le 11-06-2009 à 08:52:28  profilanswer
 

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

n°1893997
deliriumtr​emens
sic transit intestinal...
Posté le 11-06-2009 à 10:03:46  profilanswer
 

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
n°1894022
gelatine_v​elue
Posté le 11-06-2009 à 10:36:31  profilanswer
 

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. ?>

n°1894250
charlelech​auve
Posté le 11-06-2009 à 19:12:52  profilanswer
 

é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

n°1894283
Corebreake​r
Posté le 11-06-2009 à 21:44:36  profilanswer
 

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
n°1894309
charlelech​auve
Posté le 11-06-2009 à 23:21:18  profilanswer
 

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

n°1894323
stealth35
Posté le 12-06-2009 à 00:15:03  profilanswer
 

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

n°1894377
jagstang
Pa Capona ಠ_ಠ
Posté le 12-06-2009 à 10:44:22  profilanswer
 

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?  
mood
Publicité
Posté le 12-06-2009 à 10:44:22  profilanswer
 

n°1894626
charlelech​auve
Posté le 12-06-2009 à 18:13:06  profilanswer
 

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

n°1894701
Corebreake​r
Posté le 13-06-2009 à 03:59:51  profilanswer
 

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
n°1894704
Corebreake​r
Posté le 13-06-2009 à 04:21:18  profilanswer
 

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>


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Créer calculs à trou donnant résultat

 

Sujets relatifs
[HTML] creer un message d'erreurAccess : créer une condition If
AIDE créer une page en INTRANETComment créer un système de caddie en PHP
Créer un formulaire et récupérer les données saisies ds un tableauCreer un menu deroulant en passant par un fichier CSV
recuperer le resultat d'un javascript dans un formulaire[Phpbb] Creer des posts automatiquement à partir d'un flux rss ?
[PHP/mySQL] Different resultat d'une equete SQL entre PHP / phpMyAdminAffichage résultat requête Select depuis code VB
Plus de sujets relatifs à : Créer calculs à trou donnant résultat


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR