IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Supprimer "valeur" vide php


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Par défaut Supprimer "valeur" vide php
    Bonjour (et j'espere etre au bon endroit),

    Je créé un calcul en php qui fait la moyenne (entre autre) sur plusieurs valeurs (jusqu'à 5 valeurs).

    Ma page se présente donc de la maniere suivante : il y a 5 zones de textes où lutilisateur entre ses valeurs, puis il click sur valider pour que le calcul se fasse et le resultat s'affiche.

    Cependant ca marche tres bien quand l'utilisateur utilise les 5 zones de texte, mais si il en utilise moins ca ne marche plus car la moyenne se fait comme si il y avait les 5 zones de textes de remplies
    ma page : http://www.compterendutp.webou.net/numerationgr.php

    Voici une partie du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <td width="180" height="15"><center>Rectangle 1 :<br /><INPUT TYPE="text" NAME="valeurs[]" SIZE="5" MAXLENGTH="10" VALUE=""></center></td>
     
      <td width="180" height="15"><center>Rectangle 2 :<br /><INPUT TYPE="text" NAME="valeurs[]" SIZE="5" MAXLENGTH="10" VALUE=""></center></td>
     
    //voila 2 de mes 5 zones de texte, puis la suite c'est le code du calcul
     
    <?php
    if (isset($_POST['valeurs']))
    {
    $moyenne = array_sum($_POST['valeurs']) / count($_POST['valeurs']);
    $nbr=($moyenne * 2)/100;
    echo 'Résultat : '; echo number_format($nbr, 4, ',', ' ')." T/L (10^12/L) ";
    }
    ?>
    Ce qu'il faudrait arriver à faire c'est lui dire qu'il ne compte dans le "count" que les zones de texte remplies, et la je dois avouer je n'y arrive pas du tout...

    Qui sait ? (a moins qu'il y ait une autre facon plus simple d'y arriver)

    Je vous remercie d'avance
    [/code]

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Parcours ton tableau $_POST['valeurs'] et enleve les valeurs vides.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Ou simplement utiliser un array_filter().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST = array_filter( $_POST );

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Par défaut
    J'ai essayé cete derniere solution en faisant ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    if (isset($_POST['valeurs']))
    {
    $_POST = array_filter( $_POST );
    $moyenne = array_sum($_POST['valeurs']) / count($_POST['valeurs']);
    $nbr=($moyenne * 2)/100;
    echo 'Résultat : '; echo number_format($nbr, 4, ',', ' ')." T/L (10^12/L) ";
    }
    ?>
    Mais ca ne marche pas, si je remplie que 4 zones de texte mon count prend quand meme la valeur de 5 (j'ai essayé aussi de mettre cete fonction array_filter juste avant le if(isset), mais ca donne le meme resultat).

    Donc y a t'il moyen de faire marcher cette fonction ?

    Sinon pour ce qui est d'enlever les valeurs vides, j'ai essayé avec des boucles de types "for", mais je n'y arrive vraiment pas (faut dire aussi que les boucles je ne gere pas du tout, j'ai lu quelques tutos tout à l'heure mais aucun ne fait ce que je souhaite faire donc j'ai essayé d'adapter mais ca foire ).

    Besoin de votre aide les geek (et merci pour ceux qui m'ont repondu)

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST['valeurs'] = array_filter( $_POST['valeurs']);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Par défaut
    génial, encore une fois ca marche et encore une fois developpez.net me permet d'avancer (je crois meme que sabotage a deja resolu plusieurs de mes problemes)

    Merci à toutes l'equipe et a tous ceux qui apportent leur aide

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo