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 :

Variable avec chiffre + lettre ou fourchette de valeur


Sujet :

Langage PHP

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Points : 71
    Points
    71
    Par défaut Variable avec chiffre + lettre ou fourchette de valeur
    Bonsoir,

    j'ai une série de variable qui contiennent des valeurs (nombres), et certaines des fouchettes de valeur (ex : 4 à 5). Voici comment j'ai codé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $hommeGR= 5;
    $femmeGR= 4;
    $hommeGB= 4 'à' 10;
    $vfemmeGB= 3 'à' 9;
    Pour mes 2 premieres variable il n'y a aucun souci, mais pour la troisième j'aimerais avoir une fouchette disant que mes valeurs vont de 4 à 10, mais apparement le 'à' ne passe pas bien

    Donc comment faire cela, sachant que par la suite, cette fourchette de valeur doit etre exploitable pour un comparatif avec une autre variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if( $gb < $hommeGB ) echo 'Erythropénie'; 
    if( $gb > $hommeGB ) echo 'Polyglobulie';
    Mais dans ce comparatif, il faut que mon $gb < $hommeGB prenne la plus petite valeur du hommeGB (=4), et que mon $gb > hommeGB prenne la plus grande valeur du hommeGB (=10) pour que si mon $gb = 3 alors le comparatif est 3<4 et si $gb = 12 alors le comparatif est 12>10.

    Par contre faut pas qu'il m'embete si mon $gb est compris dan la fourchette

    Pourriez vous m'aider ?

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi tu n'utilises pas une variable pour le minimum et une pour le maximum, au besoin en les mettant dans un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $hommeGB=array('min'=>4,'max'=>10);
    if( $gb <  $hommeGB['min']) echo 'Erythropénie'; 
    elseif( $gb > $hommeGB['max'] ) echo 'Polyglobulie';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Points : 71
    Points
    71
    Par défaut
    Ah ben voila, ca marche comme cela. Génial et encore merci.

    Par contre, on ne sait jamais, peut etre existe il une technique différente plus appropriée pour le faire ?

    Je t'explique (ou aux autres^^) :

    Pour un élément donné du tableau (par exemple pour mon paramètre GR), la norme est différente pour les hommes ($hommeGR="4.7-5.7") et pour les femmes ($femmeGR="4-5")

    Sur ma page, on a deux boutons de radio pour dire si notre patient est un homme ou une femme.

    Avec ta technique, je suis obligé de faire le code ci dessous pour que ca marche pour les hommes et pour les femmes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $hommeGR=array('min'=>4.7,'max'=>5.7);
    if( $gr <  $hommeGR['min']) echo 'Erythropénie'; 
    elseif( $gr > $hommeGR['max'] ) echo 'Polyglobulie';
     
    $femmeGR=array('min'=>4,'max'=>5);
    if( $gr <  $femmeGR['min']) echo 'Erythropénie'; 
    elseif( $gr > $femmeGR['max'] ) echo 'Polyglobulie';
    J'en demande peut etre trop, mais est il possible de lui faire un truc du genre :
    Si $homme (si j'ai coché le bouton "homme" ) alors je compare mon résultat rentré ($GR) aux normes physioliques de l'homme ($hommeGR), et si c'est la femme qui a été coché, alors je compare mes resultats aux normes de la femme.

    En faite cette technique récupérerai directement mon chiffre de la norme dans ma variable $HommeGR ou $femmeGR.

    A mon avis c'est un peu compliqué a mettre en marche, mais ca me permettrait de reduire le nombre de ligne. Enfin, je peux largement m'en passer avec ta technique précédente qui marche très bien

    Merci encore

    nb : je le laisse 24h voir si j'ai une reponse pour cette demande, sans réponse je mettrais "résolu"

    Edit :

    en fin de compte j'ai un probleme, je n'arrive pas a faire pour l'homme et la femme en meme temps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    echo "<tr><td>GR (T/L)</td>";
      echo "<td>"; echo number_format($gr, 2, ',', ' '). " </td>";
      echo "<td>"; if ($femme) echo $valgrf ; else echo $valgrh; " </td>";
       $valgrh=array('min'=>4.7,'max'=>5.7);
         echo "<td>"; if( $gr < $valgrh['min']) echo 'Erythropénie'; 
         elseif( $gr > $valgrh['max'] ) echo 'Polyglobulie'; "
       $valgrf=array('min'=>4,'max'=>5);
         if( $gr < $valgrf['min']) echo 'Erythropénie'; 
         elseif( $gr > $valgrf['max'] ) echo 'Polyglobulie';</td>";    
     echo "</tr>";
    J'ai un message d'erreur pour cette ligne :
    if( $gr < $valgrf['min']) echo 'Erythropénie';

    Le messaage d'erreur est :

    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/enrico83/public_html/hemogramme.php on line 122

  4. #4
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Défini tes paramètres puis fait le traitement de manière indiferenciée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if ($_POST['sexe'] == 'femme') {
          $limitesGR=array('min'=>4,'max'=>5);
          $autre = 56;
    }
    else {
           $limitesGR=array('min'=>4.7,'max'=>5.7);
           $autre = 42;
    }
     
    if( $gr <  $limitesGR['min']) echo 'Erythropénie'; 
    elseif( $gr > $limitesGR['max'] ) echo 'Polyglobulie';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Points : 71
    Points
    71
    Par défaut
    Et bien voila, exactement ce que je cherchais. T'es un as Sabotin

    Juste un petit truc : il sert à quoi le $autre ?


    Merci beaucoup

  6. #6
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    $autre c'etait juste pour illustrer que tu mettais tous tes paramètres.

    Juste pour faire le tour de la question, si tu avais besoin d'utiliser les paramètres homme et femme dans la meme page, tu pourrais utiliser un tableau avec une dimension supplementaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $limitesGR['homme']=array('min'=>4,'max'=>5);
    $limitesGR['femme']=array('min'=>4.7,'max'=>5.7);
     
    $sexe = $_POST['sexe']; 
     
    if( $gr <  $limitesGR[$sexe]['min']) echo 'Erythropénie'; 
    elseif( $gr > $limitesGR[$sexe]['max'] ) echo 'Polyglobulie';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Points : 71
    Points
    71
    Par défaut
    Cette derniere technique me parait bien plus propre encore, et plus compréhensible

    Surtout, du moins visuellement, ca simplifie pas mal si je veux rajouter (ce qui est le cas) un troisieme bouton de radio, qui sera Nourisson.

    Du coup j'ai juste a rajouter une ligne pour chaque bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $limitesGR['homme']=array('min'=>4,'max'=>5);
    $limitesGR['femme']=array('min'=>4.7,'max'=>5.7);
    $limitesGR['nourisson']=array('min'=>5.2,'max'=>5.7);
    Je vais tester ca demain soir, là je commence a tourner de l'oeil et je me lève tot .

    Alors encore merci puis je vous dirais si ca marche demain (je n'en doute pas une seconde)

  8. #8
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    L'inconvenient comme ca c'est ton script stock des données dont il n'a pas besoin.
    Sur si peu ca ne fait pas grand chose comme difference mais il faut toujours prendre en compte ce genre de choses.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Points : 71
    Points
    71
    Par défaut
    Arf j'ai un souci. Il ne compare mes résultats que en prenant les normes de la femme, meme si je prend l'homme ou le nourisson.

    Je pense que j'ai un probleme de codage pour la récupération de mes boutons de radio, surement lié a mon $_POST['sex'] (nb: veuillez m'excuser, je suis un novice en php ).

    Tout d'abord je vous comment comment j'ai codé mon boutton de radio dans la partie html , ainsi que mes zones de texte, et comment je les récupère dans le php (a mon avis ma technique est très maladroite^^) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    ................................blablabla
    <td width="180" height="15"><center>Ht :<br /><INPUT TYPE="text" NAME="zonetext3" SIZE="5" MAXLENGTH="10" VALUE=""></center></td>
     
      <td width="180" height="15"><center>Hb :<br /><INPUT TYPE="text" NAME="zonetext4" SIZE="5" MAXLENGTH="10" VALUE=""></center></td>
     
      <td width="180" height="15"><center>Age :<br /><INPUT TYPE="text" NAME="zonetext5" SIZE="5" MAXLENGTH="10" VALUE=""></center></td>
     </table>
     
        <input type="radio" name="sex" value="nourisson" />Nourisson
        <input type="radio" name="sex" value="homme" />Homme
        <input type="radio" name="sex" value="femme" />Femme
       </center>
    <br /> 
     
    <input name="button2" id="button2" value="Calculer" type="submit">
    </form>
     
    <br />
     
    <?php 
    if (isset($_POST['zonetext1']) && ($_POST['sex']))
    {
    $gr=$_POST['zonetext1'];
    $gb=$_POST['zonetext2'];
    $ht=$_POST['zonetext3'];
    $hb=$_POST['zonetext4'];
    $age=$_POST['zonetext5'];
    $homme=$_POST['sex'];
    $femme=$_POST['sex'];
    $nourisson=$_POST['sex'];
    .......blablabla
    Donc juste auparavant, je codais mes sex en faisant $homme=$_POST['zontexet6']; et les boutons je les nommais aussi zonetext6 et blablabla.

    Tout cela marchais parfaitement bien en faisant mon tableau avec la technique d'avant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    echo "<tr><td>Ht (L/L)</td>";
      echo "<td>"; echo number_format($ht, 2, ',', ' '). " </td>";
      echo "<td>"; if ($femme) echo $valhtf ; else echo $valhth; " </td>";
      echo "<td>"; if ($femme) {
          $limitesHT=array('min'=>0.37,'max'=>0.47);
          $autre = 56; }
         else {
          $limitesHT=array('min'=>0.40,'max'=>0.54);
          $autre = 42; }
         if( $ht <  $limitesHT['min']) echo 'ht inf'; 
         elseif( $ht > $limitesHT['max'] ) echo 'ht sup'; "</td>";    
     echo "</tr>";
    Et mainenant, j'ai fais la technique que tu m'a proposé (donc en association au code que j'ai mis en haut de ce message. J'espere que je ne n'explique aps trop mal :p)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    echo "<td>"; if ($femme) echo $valgrf ; else if ($homme) echo $valgrh ; else if ($nourisson) echo $valgrn; " </td>";
      echo "<td>";  
         $limitesGR['femme']=array('min'=>4,'max'=>5);
         $limitesGR['homme']=array('min'=>4.7,'max'=>5.7);
         $limitesGR['nourisson']=array('min'=>5,'max'=>6.2);
     
         $sexe = $_POST['sexe']; 
     
         if( $gr <  $limitesGR[$sexe]['min']) echo 'Erythropénie'; 
         elseif( $gr > $limitesGR[$sexe]['max'] ) echo 'Polyglobulie'; "</td>";
    Donc la il me met ni'mporte quoi : dans l'avant derniere colone du tableau sur ma page web il me met uniquement la norme femme, et en conclusion, dans la derniere colonne, il me met systématiquement polyglobulie meme si ma valeur est au dessus de la norme

    Vous avez une idée d'où j'ai raté mon coup ? Besoin de plus d'indication ?

    Sinon tant pis je reprendrais l'ancienne technique qui marchait mais qui me mangeaix un peu plus de ligne

  10. #10
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Salut,

    je n'ai lu que le problème de départ et je serais parti sur une autre piste en utilisant des tableaux.
    Un peu comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
     
    $hommeGR= 5;
    $femmeGR= 4;
    $hommeGB= range(4, 10);
    $femmeGB= range(3, 9);
     
    $gb = 3;
     
    if( $gb < min($hommeGB) ) echo 'Erythropénie';
    if( $gb > max($hommeGB) ) echo 'Polyglobulie';
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

Discussions similaires

  1. Récupèrer une variable avec une lettre au bout.
    Par arthuro45 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/01/2011, 12h52
  2. changer la valeur d'une variable avec 2 bouton
    Par toutounesan_bg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 03/08/2007, 10h51
  3. Réponses: 3
    Dernier message: 27/01/2007, 17h53
  4. Affichage des valeurs des variables avec tkprof
    Par hkhan13 dans le forum Oracle
    Réponses: 2
    Dernier message: 04/07/2006, 11h59
  5. variable avec 2 chiffres
    Par MANU_2 dans le forum Langage
    Réponses: 1
    Dernier message: 03/10/2005, 09h48

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