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 :

formule conditionnelle zinzin


Sujet :

Langage PHP

  1. #1
    Membre habitué

    Profil pro
    Pompier
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 171
    Points
    171
    Par défaut formule conditionnelle zinzin
    bonjour,

    j'ai un formulaire php en lien avec une base access, avec ce bout de 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     // on recupere le nombre d'agent ayant declare la disponibilite
    for ($i = 300 ; $i<=327; $i++) {
     $NB{$i}=0;
     
     
    // connection à la base de données:
       $cnx = odbc_connect( "DSN_disponibilite", "root", "" ) or die ("Impossible de se connecter à la base de donnée") ;
     
    	  $NB = "SELECT * FROM recape_nb".$NC." WHERE num_centre=$i" ;
    	//  echo $NB;
     // exécution de la requête:
        $requeteNB = odbc_do($cnx, $NB) ;
    $resultNB = odbc_fetch_object($requeteNB);
     
    	$centre=$resultNB->num_centre;
    	if ($resultNB->NB==''){$NB{$i}=0;}else{ $NB{$i}=$resultNB->NB;}
     
     
     
    if (($centre==300)AND($NB{$i}>=6))               {$B{$i} ="CSPV.JPG";}   
    if (($centre==300)AND(3>$NB{$i})AND ($NB{$i}>0) ){$B{$i}= "CSPR.JPG";}
    if (($centre==300)AND($NB{$i}==0))               {$B{$i}= "CSPN.JPG";} 
    if (($centre==300)AND(6>$NB{$i})AND ($NB{$i}>=3) ){$B{$i}= "CSPO.JPG";}
     
    if (($centre==301)AND($NB{$i}>=6))               {$B{$i} ="CSV.JPG";}
    if (($centre==301)AND($NB{$i}<3) AND ($NB{$i}>0)){$B{$i}= "CSR.JPG";}
    if (($centre==301)AND($NB{$i}==0)){$B{$i}= "CSN.JPG";}
    if (($centre==301)AND($NB{$i}<6) AND ($NB{$i}>=3)){$B{$i}= "CSO.JPG";}
    ....
    Ainsi en fonction du nombre d'agents declarant de la disponibilité, l'image du centre apparaitra soir en noir, rouge, orange ou vert.

    Jusqu'à 9 personnes tout se passe bien, après , l'image est CSPR.JPG

    Si vous avez une idée, merci

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Attention à la priorité des opérateurs ! Il y a une différence entre AND et && :
    Citation Envoyé par php.net
    // --------------------
    // "&&" a un précédence supérieure à "and"

    // Le résultat de l'expression (true && false) est assigné à $g
    // Agit comme : ($g = (true && false)) => retourne false
    $g = true && false;

    // La constante true est assignée à $h, puis, false est ignoré
    // Agit comme : (($h = true) and false) => retourne true
    $h = true and false;
    D'autre part, si tu n'imbriques pas tes conditions, tu risques un cas type "c'est celui qui parle en dernier qui a raison". Donc si tes conditions sont théoriquement mutuellement exclusives, le mieux c'est de les imbriquer à coup de if/else...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if ($centre==300) {
    	if ($NB{$i}>=6) {
    		$B{$i} ="CSPV.JPG";
    	} else if ((6>$NB{$i}) && ($NB{$i}>=3)) {
    		$B{$i}= "CSPO.JPG";
    	} else if ((3>$NB{$i}) && ($NB{$i}>0) ) {
    		$B{$i}= "CSPR.JPG";
    	} else ($NB{$i}==0) {
    		$B{$i}= "CSPN.JPG";
    	} 
    } else if ($centre==301) {
    	....
    }
    N'oublie pas soit d'initialiser $B{$i}, soit de prévoir les cas else

  3. #3
    Membre habitué

    Profil pro
    Pompier
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 171
    Points
    171
    Par défaut
    bravo et merci pour tes explications très claires.

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

Discussions similaires

  1. Formule conditionnelle avec couleur
    Par khongo agon dans le forum Excel
    Réponses: 1
    Dernier message: 18/12/2008, 19h48
  2. trouver formule conditionnelle a la date
    Par luminused dans le forum Excel
    Réponses: 15
    Dernier message: 05/12/2007, 21h12
  3. PB formule conditionnelle
    Par froutloops62 dans le forum VBA Access
    Réponses: 5
    Dernier message: 26/05/2007, 18h21
  4. Réponses: 6
    Dernier message: 20/06/2006, 15h49
  5. une formule conditionnelle "si" sur ACCESS est ce
    Par amandine2910 dans le forum Access
    Réponses: 3
    Dernier message: 29/11/2005, 00h09

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