Probleme calcul : conditions - PHP - Programmation
Marsh Posté le 30-06-2009 à 23:02:51
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);
Marsh Posté le 01-07-2009 à 00:28:13
Sinon tu peux faire tes input comme ceci :
Code :
|
et tu récupères en $_POST un tableau nommé valeurs :
Code :
|
bien entendu, il faut faire plus sémantique dans l'HTML, et vérifier que $_POST['valeurs']soit bien un tableau ... de numériques
Marsh Posté le 03-07-2009 à 22:40:29
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 :
|
Puis voila comment j'ai codé mon php pour le calcul :
Code :
|
Donc la quand je click sur le bouton pour valider, je n'ai plus aucun resultat qui s'affiche, c'est sans effet
J'ai essayé pour $moyenne de faire :
Code :
|
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
Merci deja pour l'aide apportée
Marsh Posté le 04-07-2009 à 01:10:17
charlelechauve a écrit :
|
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 ...
Marsh Posté le 04-07-2009 à 02:07:37
Code :
|
Toujours aucun résultat qui s'affiche quand je click sur le bouton pour valider
si vous voulez voir ma page :
http://www.compterendutp.webou.net/numerationgr.php
Marsh Posté le 04-07-2009 à 11:33:21
Tu fais un isset sur $_POST['valeur'] mais essaie de récupérer $_POST['valeurs']
Marsh Posté le 06-07-2009 à 22:40:23
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 :
|
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...
Marsh Posté le 07-07-2009 à 09:19:40
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
Marsh Posté le 07-07-2009 à 18:21:38
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
Marsh Posté le 07-07-2009 à 18:53:35
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
Marsh Posté le 07-07-2009 à 19:07:59
Mais je ne sais absolument pas le faire et absolument pas dans quelle direction me tourner pour y arriver
Ca fait à peine plus d'un mois que je fais du php et j'ai pas trouvé de tuto ou d'explication la dessus
Marsh Posté le 07-07-2009 à 20:07:00
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 :
|
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
Marsh Posté le 07-07-2009 à 21:59:06
$_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 !
Merci quand meme pour l'aide apportée
Résolu
Marsh Posté le 08-07-2009 à 07:44:39
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
Marsh Posté le 08-07-2009 à 09:23:11
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
PS : Merci au fait d'avoir donné la solution que tu as trouvé ici, au moins je me coucherai moins con
Marsh Posté le 08-07-2009 à 13:33:54
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? |
gatsu35 a écrit : d'un coté il y a la politique de HFR comme tu le dis esox_ch, |
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
Marsh Posté le 30-06-2009 à 22:50:18
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
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 :
(les zones de textes ne sont pas mises dans l'extrait de code ci dessus )
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...