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

  FORUM HardWare.fr
  Programmation
  PHP

  Probleme calcul : conditions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme calcul : conditions

n°1900805
charlelech​auve
Posté le 30-06-2009 à 22:50:18  profilanswer
 

Bonjour,  
 
je ne sais pas si je suis au meilleur endroit pour cette question mais étant donné que c'est dans du php on va faire ca ici :p
 
J'ai 5 zones de texte où l'utilisateur rentre ses chiffres dans ces zones, puis quand on click sur le bouton "valider" un calcul est généré et il fait une moyenne de ces 5 valeurs :  
 

Code :
  1. <input name="button2" id="button2" value="Calculer" type="submit">
  2. </form>
  3. <br />
  4. <?php
  5. if (isset($_POST['zonetext1']))
  6. {
  7. $r1=$_POST['zonetext1'];
  8. $r2=$_POST['zonetext2'];
  9. $r3=$_POST['zonetext3'];
  10. $r4=$_POST['zonetext4'];
  11. $r5=$_POST['zonetext5'];
  12. $nbr=($r1 + $r2 + $r3 + $r4 + $r5)/5;
  13. echo 'Résultat : '; echo number_format($nbr, 4, ',', ' ')." T/L (10^12/L) ";
  14. }
  15. ?>


(les zones de textes ne sont pas mises dans l'extrait de code ci dessus :p)
 
Maus je souhaiterais que, lorque l'utilisateur n'entre ses valeurs que dans 4 zones de texte sur les 5 par exemple, mon resultat ne soit pas diviser par 5 mais par 4.
 
Donc je pense que le plus simple serait de mettre une condition mais la je n'y arrive pas trop...

mood
Publicité
Posté le 30-06-2009 à 22:50:18  profilanswer
 

n°1900811
jonas3
Posté le 30-06-2009 à 23:02:51  profilanswer
 

si ton POST contiendra que des "zonetext"
tu peux faire un count($_POST) qui te renverras le nombre de ligne de POST
 
hésites pas à afficher ton POST pour debugger:
print_r($_POST);


---------------
http://petitjonas.blogspot.com/
n°1900826
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 01-07-2009 à 00:28:13  profilanswer
 

Sinon tu peux faire tes input comme ceci :

Code :
  1. <input type="text" name="valeurs[]" />


 
et tu récupères en $_POST un tableau nommé valeurs :

Code :
  1. $moyenne = array_sum($_POST['valeurs']) / count($_POST['valeurs']);


 
bien entendu, il faut faire plus sémantique dans l'HTML, et vérifier que $_POST['valeurs']soit bien un tableau ... de numériques :)
 


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1902179
charlelech​auve
Posté le 03-07-2009 à 22:40:29  profilanswer
 

J'ai testé la derniere methode proposée car elle me semble la plus simple.
 
Voici comment j'ai codé mes zones de texte :  
 

Code :
  1. <td width="180" height="15"><center>Rectangle 1 :<br /><INPUT TYPE="text" NAME="valeurs[]" SIZE="5" MAXLENGTH="10" VALUE=""></center></td>
  2.   <td width="180" height="15"><center>Rectangle 2 :<br /><INPUT TYPE="text" NAME="valeurs[]" SIZE="5" MAXLENGTH="10" VALUE=""></center></td>


 
Puis voila comment j'ai codé mon php pour le calcul :
 

Code :
  1. <?php
  2. if (isset($_POST['valeur[]']))
  3. {
  4. $moyenne = array_sum($_POST['valeurs[]']) / count($_POST['valeurs[]']);
  5. $nbr=($moyenne * 2)/100;
  6. echo 'Résultat : '; echo number_format($nbr, 4, ',', ' ')." T/L (10^12/L) ";
  7. }
  8. ?>


 
Donc la quand je click sur le bouton pour valider, je n'ai plus aucun resultat qui s'affiche, c'est sans effet :p
J'ai essayé pour $moyenne de faire :

Code :
  1. $moyenne = array_sum($_POST['valeurs']) / count($_POST['valeurs']);


comme précisé precement mais ca ne marchait pas donc j'ai fais comme je l'ai mis ci dessous, avec valeur[] car c'est le nom de mes zones de texte donc je me suis dis que tu as oublié de fermer les crochés (mais comme précis ca ne mrche pas non plus ;o)
 
J'ai besoin d'aide s'il vous plait  :lol:  
 
Merci deja pour l'aide apportée

n°1902208
Alisteroid
Posté le 04-07-2009 à 01:10:17  profilanswer
 

charlelechauve a écrit :


[code]<?php
if (isset($_POST['valeur']))
{

 



Replace les $_POST['valeur[]'] par $_POST['valeur'], ta donnée passée en post est un tableau nommé "valeur", donc $_POST['valeur'] est ton tableau à récuperer ...


Message édité par Alisteroid le 04-07-2009 à 01:12:18
n°1902209
charlelech​auve
Posté le 04-07-2009 à 02:07:37  profilanswer
 

Code :
  1. <?php
  2. if (isset($_POST['valeur']))
  3. {
  4. $moyenne = array_sum($_POST['valeurs']) / count($_POST['valeurs']);
  5. $nbr=($moyenne * 2)/100;
  6. echo 'Résultat : '; echo number_format($nbr, 4, ',', ' ')." T/L (10^12/L) ";
  7. }
  8. ?>


 
Toujours aucun résultat qui s'affiche quand je click sur le bouton pour valider  :pt1cable:  
 
si vous voulez voir ma page :  
http://www.compterendutp.webou.net/numerationgr.php

n°1902225
esox_ch
Posté le 04-07-2009 à 11:33:21  profilanswer
 

Tu fais un isset sur $_POST['valeur'] mais essaie de récupérer $_POST['valeurs']

Message cité 1 fois
Message édité par esox_ch le 04-07-2009 à 11:33:46

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1902930
charlelech​auve
Posté le 06-07-2009 à 22:40:23  profilanswer
 

arf en effet, merci, je suis plutot bete de ne pas avoir vu ca, ca saute aux yeux en plus.  
 
J'ai donc fait ca :  
 

Code :
  1. <?php
  2. if (isset($_POST['valeurs']))
  3. {
  4. $moyenne = array_sum($_POST['valeurs']) / count($_POST['valeurs']);
  5. $nbr=($moyenne * 2)/100;
  6. echo 'Résultat : '; echo number_format($nbr, 4, ',', ' ')." T/L (10^12/L) ";
  7. }
  8. ?>


 
Si je met par exemple la valeur 10 dans mes 5 zones de texte, j'obtient comme valeur 0.2 (ce qui est bon).  
Par contre si je met 10 dans les 4 zones de texte seulement, j'obtient 0.16 au lieu d'obtenir 0.2, ce qui veut dire qu'il ne me fait pas la moyenne sur mes 4 valeurs mais sur 5 valeurs....  
 
Je ne comprends pas, la formule parait plutot juste, pourquoi ma zone de texte n°5 à une valeur =0 par défat au lieu de n'avoir aucune valeur...

n°1902975
esox_ch
Posté le 07-07-2009 à 09:19:40  profilanswer
 

Parce que ton text-field est toujours là, même s'il est vide?
Il faut que tu effaces les "valeurs" vides avant de faire ta moyenne


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1903308
charlelech​auve
Posté le 07-07-2009 à 18:21:38  profilanswer
 

J'ai beau chercher, je n'arrive pas à trouver comment, ou une fonction, pour supprimer les valeurs vides  :(  
 
Pourriez vous m'orienter ou m'indiquer la démarche à suivre ?  
 
Merci d'avance

mood
Publicité
Posté le 07-07-2009 à 18:21:38  profilanswer
 

n°1903317
gatsu35
Blablaté par Harko
Posté le 07-07-2009 à 18:53:35  profilanswer
 

ben ce qu'il veut dire c'est que meme si les champs sont vides ton $valeurs  aura 5 valeurs et non 4
il faudra d'abord passer par une boucle qui teste la valeur des cases et ne récupère que les nombres


---------------
Blablaté par Harko
n°1903322
charlelech​auve
Posté le 07-07-2009 à 19:07:59  profilanswer
 

Mais je ne sais absolument pas le faire et absolument pas dans quelle direction me tourner pour y arriver  :sweat:  
Ca fait à peine plus d'un mois que je fais du php et j'ai pas trouvé de tuto ou d'explication la dessus

n°1903327
charlelech​auve
Posté le 07-07-2009 à 20:07:00  profilanswer
 

Est ce que ca peut marcher si dans mes zones de texte je met value="0" pour les 5 zones de texte, et mon php je le modifie comme ceci :  
 

Code :
  1. <?php
  2. if (isset($_POST['valeurs']))
  3. {
  4. for ($i >=0; ; $i++) {    echo $i;
  5. $i=$_POST['valeurs'];
  6. $moyenne = array_sum($_POST['valeurs']) / count($_POST['valeurs']);
  7. $nbr=($moyenne * 2)/100;
  8. echo 'Résultat : '; echo number_format($nbr, 4, ',', ' ')." T/L (10^12/L) ";
  9. }
  10. ?>


 
voila, a mon avis j'ai fait n'importe quoi car je n'ai pas trouvé ce que je cherchais dans les tutos pour faire les boucles, mais l'idée est que si ma valeur dans la zone de texte = 0 alors la boucle s'arrete (FALSE) et donc si une des 5 zones de texte n'a pas été remplie elle est egal à 0 et donc mon COUNT = 4
 
Donc je ne sais pas si c'esst possible comme ca, mais si quelqun peut m'aider d'une facon ou d'une autre j''en serais ravie

n°1903367
charlelech​auve
Posté le 07-07-2009 à 21:59:06  profilanswer
 

$_POST['valeurs'] = array_filter( $_POST['valeurs']);
 
Voila, tout simplement avec cette fonction ca résolve le probleme sans passer par des boucles ou des choses compliquées.  
 
developpez.net marque un point, attention hardware, faut pas se laisser doubler je vous aime ! :p
 
Merci quand meme pour l'aide apportée
 
Résolu

n°1903422
esox_ch
Posté le 08-07-2009 à 07:44:39  profilanswer
 

Salut,
Ici on privilégie plutôt le côté "on te met sur la bonne piste et après tu cherches" plutôt que le "on te donne le tout, tout fait". Voir les règles du forum


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1903436
gatsu35
Blablaté par Harko
Posté le 08-07-2009 à 09:23:11  profilanswer
 

d'un coté il y a la politique de HFR comme tu le dis esox_ch,
mais comme tu peux le voir, notre ami a cherché de lui même une solution et c'est clair que 1 : on ne l'a pas vraiment aiguillé
2 : nos solutions n'étaient pas très bonne.

 

Mais il faut reconnaitre que charlelechauve, tu étais un peu mal parti dans ton code :D
PS : Merci au fait d'avoir donné la solution que tu as trouvé ici, au moins je me coucherai moins con

Message cité 1 fois
Message édité par gatsu35 le 08-07-2009 à 09:23:34

---------------
Blablaté par Harko
n°1903580
esox_ch
Posté le 08-07-2009 à 13:33:54  profilanswer
 

esox_ch a écrit :

Tu fais un isset sur $_POST['valeur'] mais essaie de récupérer $_POST['valeurs']


 

esox_ch a écrit :

Parce que ton text-field est toujours là, même s'il est vide?
Il faut que tu effaces les "valeurs" vides avant de faire ta moyenne


 

gatsu35 a écrit :

d'un coté il y a la politique de HFR comme tu le dis esox_ch,  
mais comme tu peux le voir, notre ami a cherché de lui même une solution et c'est clair que 1 : on ne l'a pas vraiment aiguillé
2 : nos solutions n'étaient pas très bonne.
 
Mais il faut reconnaitre que charlelechauve, tu étais un peu mal parti dans ton code :D
PS : Merci au fait d'avoir donné la solution que tu as trouvé ici, au moins je me coucherai moins con


 
En quoi les réponses ne l'aiguillaient pas ou n'étaient pas bonnes? À chaque fois j'ai ciblé précisément le problème et esquissé une solution (de manière plus ou moins marquée).
Après, selon moi aiguiller quelqu'un n'est pas lui donner la bonne fonction et lui laisser pour tâche de trouver l'ordre des arguments. PHP  n'est pas non plus ce langage ultra complexe où on peut perdre des heures en cherchant dans la doc hein :bounce:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait

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

  Probleme calcul : conditions

 

Sujets relatifs
Petit problème de structure / chaine de caractèreProblème php5.2.10 E_STRICT
Problème installation joomla chez free[RESOLU] Problème étrange avec le Main
[Résolu]Probleme avec des pointeur de structureProbleme oscommerce
[VBA Access] Problème de requête[RESOLU] Problème exécution .jar
[VB6] Problème arrondi calcul validité IBAN 
Plus de sujets relatifs à : Probleme calcul : conditions


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