Switch ne marche pas

Bonjour,
j'ai un code qui va afficher un tableau qui contient des données enregistrés dans la base de données .Dans le dernier cas je veux afficher une cercle(image) selon la valeur de $row[4] (la decision).Alors que l'affichage me donne cet erreur :Notice: Undefined variable: DecisionP in C:\wamp\www\gestionrisques\tableau_bord_tools.inc.php on line 52

 while( $row=mysql_fetch_array($result)){
  
 
switch ($row[4]) {
 
    case 'non terminé':
       return $DecisionP = 'images/head_form_ok.jpg';
        break;
    case 'terminé':
        return $DecisionP = 'images/circle-green.PNG';
        break;
    
}
 
   
  echo"<tr>" ;
   
   
  echo "<td style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc; '>$row[0]</td>
      <td style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>$row[1]</td>
      <td style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>$row[2]</td>
      <td style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>$row[3]</td>
     
     ";
 
 echo"<td align='center' style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'><img  src=".$DecisionP."/></td> 
     ";
   echo "</tr>" ;
  $i++ ;
    }  
 }
 return $contenu ;
} ;



Quelqu'un aurait une solution svp?
Merci d'avance.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.

12 réponses

Résumé de la discussion

Un code PHP affiche un tableau issu d'une base de données et tente d'afficher une image selon la valeur de $row[4] (la décision), mais une Notice undefined variable: DecisionP apparaît. Plusieurs éléments indiquent de ne pas employer return dans le switch et d'affecter plutôt $DecisionP (par ex 'images/head_form_ok.jpg' ou 'images/circle-green.PNG'), puis finalement d'utiliser <img src="$DecisionP" />. Des discussions portent aussi sur la gestion des accents dans les statuts ('terminé' vs 'termine'), le trim de $row[4], et la vérification que les chemins d'image existent et sont accessibles. En pratique, un extrait correct propose switch ($statut) { case 'non terminé': $DecisionP='images/head_form_ok.jpg'; break; case 'terminé': $DecisionP='images/circle-green.PNG'; break; default: $DecisionP=''; } puis affichage avec <img src="$DecisionP" />.

Bobot (l’IA à votre service)
  1. Modérateur
    Bonjour,

    Tu fais un RETURN + une afectation de variable en même temps... ce n'est pas terrible !
    Essayes ceci :

    switch ($row[4]) {
     
        case 'non terminé':
            $DecisionP = 'images/head_form_ok.jpg';
            break;
        case 'terminé':
             $DecisionP = 'images/circle-green.PNG';
            break;
        default:
         // toute autre valeur...
         $DecisionP = '';
         break;
    }
    
    

    1. Merci joradane45 pour votre réponse
      mais maintenant la case contient une image vide alors que le statut dans la base de données est 'terminé' donc normalement on aura l'image images/circle-green.PNG ce qui n'est pas le cas :(
  2. voilà mon code jordane45 et merci de m'aider :))
    <?php
    include("db_tools.inc.php") ;
    function tableau_bord_client($roleU) {
     
     $query="SELECT p.Nom_P, p.Date_debut, p.Date_fin, p.Avancement,p.DecisionP FROM projet p , client_projet cp WHERE  cp.idCl=".  $_SESSION['id_User']. " and p.id_P = cp.idPr " ;
     $result=db_doquery($query) ;
     
     //La balise <table> et la ligne des entêtes sont déjà déclarés dans le script listClients.php.
     //Nous allons parcourir le resultat et créer les lignes de ce tableau HTML. Il s'agit de créer une chaine de caractère
     //lui cotient ces les lignes. Cette chaine sera la valeur de retour de cette fonction.
     $contenu="" ;
     $chef=(isset($roleU) && $roleU=="terminé")? TRUE : FALSE ;
    
     if( @mysql_num_rows($result)==0){
     //dans le cas où pas de clients trouvés, une seule ligne qui s'affiche indiquant cette état
    echo"<tr class=\"notfound\"><td colspan='6'> Aucun étape n'a été trouvé.</td></tr>" ;
     }else {
     $i=0 ;  
      
     while( $row=mysql_fetch_array($result)){
      
     
    switch ($row[4]) {
     
        case 'non terminé':
            $DecisionP = 'images/head_form_ok.jpg';
            break;
        case 'terminé':
             $DecisionP = 'images/circle-green.PNG';
            break;
        default:
         // toute autre valeur...
         $DecisionP = '';
         break;
    }
     
       
      echo"<tr>" ;
       
       
      echo "<td style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc; '>$row[0]</td>
          <td style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>$row[1]</td>
          <td style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>$row[2]</td>
          <td style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>$row[3]</td>
         
         ";
     
     echo"<td align='center' style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'><img  src=".$DecisionP."/></td> 
         ";
       echo "</tr>" ;
      $i++ ;
        }  
     }
     return $contenu ;
    } ;


    EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
    Explications disponibles ici :
    https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
    1. Modérateur
      Commence par faire un ECHO de ta variable pour voir ce qu'elle vaut.
      <?php
      include("db_tools.inc.php") ;
      function tableau_bord_client($roleU) {
       $id_user = isset($_SESSION['id_User'])?$_SESSION['id_User']:NULL;
       if($id_user){
       $query="SELECT p.Nom_P, p.Date_debut, p.Date_fin, p.Avancement,p.DecisionP 
                       FROM projet p , client_projet cp
                      WHERE  cp.idCl='$id_user' 
                          AND  p.id_P =cp.idPr " ;
       $result=db_doquery($query) ;
      }else{
       // si aucun ID user présent dans la variable SESSION['id_User']
       return -1;
      }
       
       //La balise <table> et la ligne des entêtes sont déjà déclarés dans le script listClients.php.
       //Nous allons parcourir le resultat et créer les lignes de ce tableau HTML. Il s'agit de créer une chaine de caractère
       //qui contient les lignes. Cette chaine sera la valeur de retour de cette fonction.
       $contenu="" ;
       $chef=(isset($roleU) && $roleU=="terminé")? TRUE : FALSE ;
      
       if( @mysql_num_rows($result)==0){
       //dans le cas où pas de clients trouvés, une seule ligne qui s'affiche indiquant cette état
      echo"<tr class=\"notfound\"><td colspan='6'> Aucun étape n'a été trouvée.</td></tr>" ;
       }else {
       $i=0 ;  
        
       while( $row=mysql_fetch_array($result)){
        $statut= $row[4];
        switch ($statut) {
          case 'non terminé':
              $DecisionP = 'images/head_form_ok.jpg';
              break;
          case 'terminé':
               $DecisionP = 'images/circle-green.PNG';
              break;
          default:
           // toute autre valeur...
           $DecisionP = '';
            //Le temps des tests 
            echo "<br><br> row[4] => ".$statut; 
           break;
       }
       
         
        echo"<tr id='tr_$i'>" ;
         
         
        echo "<td style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc; '>$row[0]</td>
            <td style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>$row[1]</td>
            <td style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>$row[2]</td>
            <td style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>$row[3]</td>
           
           ";
       
       echo"<td align='center' style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>
                 <img  src='$DecisionP' alt='image'></img>
                </td> 
           ";
         echo "</tr>" ;
        $i++ ;
          }  
       }
       return $contenu ;
      } ;
      


      EDIT : MAJ du code
      1. Modérateur
        Au passage .. j'ai fait quelques ajustement à ton code et un peu de mise en forme.
      2. Bonjour jordane45,
        Désolé hier j'ai pas connecté.
        votre code m'a donnée comme ça:
        row[4] => termine

        row[4] => en risque
        mais les images ne s'affichent pas
        Merci de me répondre et bonne journée :)
      3. oui c'est bon merci beaucoup les images s'affichent maintenant :)
        Merci autre fois :)
      4. Modérateur
        @Imen Ben Hassen.... normal non ??
        Tu as mis dans ton SWITCH :
        "terminé" (avec un accent...) ... et là .. tu me dis qu'il t'affiche : "termine" .. (sans accent ! )
    2. Jordane45 svp quand je mets terminé avec "é" dans la base de données et dans le switch , l'image ne s'affiche pas
      1. Modérateur
        ... et qu'affiche mon code ?

        ..et si tu fais un clic-doit sur ta page, afficher la SOURCE, que contiennent tes balises IMG (dans leur SRC) ?
        Est-ce bien le lien vers les images ? ou est-ce vide ?
      2. @jordane45jordane45 j'ai mets dans la base de données les valeurs comme ça: en risque, terminé , non terminé et en cours et dans votre code je mets
        $statut= $row[4];
          switch ($statut) {
            case 'en risque':
                $DecisionP = 'images/circle-ora.png';
                break;
            case 'terminé':
                 $DecisionP = 'images/circle-green.PNG';
                break;
          case 'non terminé':
                 $DecisionP = 'images/circle-red.PNG';
                break;
            default:
             // toute autre valeur...
             $DecisionP = 'images/circle-blue.PNG';
              
             break;
         }
        
        


        et la source de la page m'affiche comme ça:<img src="alt='image'">
        merci :)

        EDIT : Ajout des balises de code (la coloration syntaxique).
        Explications disponibles ici :
        https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

        Merci d'y penser dans tes prochains messages.
        .
    3. Modérateur
      Commence par afficher le contenu de la variable $statut pour voir ce qu'elle contient :

      $statut= $row[4];
      
      echo "<br><br> Statut : ".$statut;
      
        switch ($statut) {
          case 'en risque':
              $DecisionP = 'images/circle-ora.png';
              break;
          case 'terminé':
               $DecisionP = 'images/circle-green.PNG';
              break;
        case 'non terminé':
               $DecisionP = 'images/circle-red.PNG';
              break;
          default:
           // toute autre valeur...
           $DecisionP = 'images/circle-blue.PNG';
            
           break;
       }
      
      


      Ensuite, tu me confirmes que le code utilisé pour afficher les image est toujours le même que celui que tu nous avais montré ?
       echo"<td align='center' style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>
                 <img  src='$DecisionP' alt='image'></img>
                </td> 
           ";
      

      Au cas où .. remontre nous le code COMPLET de ta page.

      1. voilà le code complet jordane45
        <?php
        include("db_tools.inc.php") ;
        function tableau_bord_client($roleU) {
         
         $query="SELECT p.Nom_P, p.Date_debut, p.Date_fin, p.Avancement,p.DecisionP FROM projet p , client_projet cp WHERE  cp.idCl=".  $_SESSION['id_User']. " and p.id_P = cp.idPr " ;
         $result=db_doquery($query) ;
         
         //La balise <table> et la ligne des entêtes sont déjà déclarés dans le script listClients.php.
         //Nous allons parcourir le resultat et créer les lignes de ce tableau HTML. Il s'agit de créer une chaine de caractère
         //lui cotient ces les lignes. Cette chaine sera la valeur de retour de cette fonction.
         $contenu="" ;
         $chef=(isset($roleU) && $roleU=="terminé")? TRUE : FALSE ;
        
         if( @mysql_num_rows($result)==0){
         //dans le cas où pas de clients trouvés, une seule ligne qui s'affiche indiquant cette état
        echo"<tr class=\"notfound\"><td colspan='6'> Aucun étape n'a été trouvé.</td></tr>" ;
         }else {
         $i=0 ;  
          
         while( $row=mysql_fetch_array($result)){
          
         $statut= $row[4];
          switch ($statut) {
            case 'en risque':
                $DecisionP = 'images/circle-ora.png';
                break;
            case 'terminé':
                 $DecisionP = 'images/circle-green.PNG';
                break;
          case 'non terminé':
                 $DecisionP = 'images/circle-red.PNG';
                break;
            default:
             // toute autre valeur...
             $DecisionP = 'images/circle-blue.PNG';
              
             break;
         }
         
           
          echo"<tr>" ;
           
           
          echo "<td style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc; '>$row[0]</td>
              <td style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>$row[1]</td>
              <td style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>$row[2]</td>
              <td style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>$row[3]</td>
             
             ";
         
         echo"<td align='center' style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>
                   <img  src=".$DecisionP." alt='image'></img>
                  </td> 
             ";
           echo "</tr>" ;
          $i++ ;
        
               
            }  
         }
         return $contenu ;
        } ;

        merci :)
        EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
        Explications disponibles ici :
        https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

        Merci d'y penser dans tes prochains messages.
        1. Modérateur
          Tu as changé le code ?
          echo"<td align='center' style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>
                     <img  src=".$DecisionP." alt='image'></img>
                    </td> 
               ";
          

          N'est pas celui que je t'avais donné :
           echo"<td align='center' style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>
                     <img  src='$DecisionP' alt='image'></img>
                    </td> 
               ";
          


          Tu as oublié de mettre des QUOTES dans ta balises SRC.
          A la limite.. si tu veux garder la séparation de ta varible (comme tu as fais dans TON code)
          tu peux faire comme ceci :
          echo"<td align='center' style=' background:#DCDCDC; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc;'>
                     <img  src='".$DecisionP."' alt='image'></img>
                    </td> 
               ";
          


          PS : Comme te l'a conseillé Groarch dans son message de ta dernière question https://forums.commentcamarche.net/forum/affich-32096945-rowspan-ne-marche-pas#1
          .. fais un peu de ménage dans ton code (principalement au niveau des Styles..)
          1. jordane45 j'ai corrigé ce que me dit mais le problème que quand je mets "é" à la fin de terminé ou non terminé j'aurai automatiquement l'image que je fais au DEFAUT . c'est ça le problème :/
        2. Modérateur
          Je t'ai demandé de rajouter, dans ton code, du débug sur ta variable :
          echo "<br><br> Statut : ".$statut;

          .... qu'est ce que ça t'affiche ?????

          Es-tu sûr que dans ta BDD .. tu n'aurais pas des espaces en plus par exemple ?
          Tu as bien la même syntaxe (Majuscules/minuscules) ??

          A la limite, on va supprimer les éventuels espaces superflus pour limiter les risques :
          $statut= trim($row[4]);
          
          1. quand j'ai fait echo "<br><br> Statut : ".$statut;
            il m'affiche Statut : terminé
            Statut : non terminé comme dans ma base mais je sais pourquoi il ne marche dans l'affichage des images :(
          2. Jordane45 même quand j'utilise $statut= trim($row[4]); reste le même erreur , les statuts qui ont comme valeur terminé et non terminé s'affichent par l'image que j'ai fait au DEFAUT de switch
        3. Modérateur
          Pourrais tu nous fournir un dump de ta table ?
          histoire qu'on sache exactement ce qu'elle contient... et sous quelle forme ?

          1. je vais vous envoyer un capture de ma table mais je sais pas pourquoi ne l'envoie pas :(
          2. Modérateur
            @Imen Ben Hassenplutôt qu'une IMAGE .. je préfèrerais un DUMP !
            ça permet d'avoir la structure + les données .. et ainsi de pouvoir l'importer chez moi pour des tests si besoin.
          3. @jordane45-- phpMyAdmin SQL Dump
            -- version 4.0.4

            voilà jordane la table et mrci pour votre d'aide :)))

            -- http://www.phpmyadmin.net
        4. -- phpMyAdmin SQL Dump
          -- version 4.0.4
          -- http://www.phpmyadmin.net
          --
          -- Client: localhost
          -- Généré le: Jeu 11 Juin 2015 à 13:34
          -- Version du serveur: 5.6.12-log
          -- Version de PHP: 5.4.16
          
          SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
          SET time_zone = "+00:00";
          
          
          /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
          /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
          /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
          /*!40101 SET NAMES utf8 */;
          
          --
          -- Base de données: `gestionrisques`
          --
          
          -- --------------------------------------------------------
          
          --
          -- Structure de la table `projet`
          --
          
          CREATE TABLE IF NOT EXISTS `projet` (
            `id_P` int(11) NOT NULL AUTO_INCREMENT,
            `Nom_P` varchar(100) NOT NULL,
            `idM` int(11) NOT NULL,
            `idRo` int(11) NOT NULL,
            `Date_debut` date NOT NULL,
            `Date_fin` date NOT NULL,
            `Avancement` varchar(10) DEFAULT '0%',
            `DecisionP` varchar(100) NOT NULL DEFAULT '1',
            `Date_fin_estime` date DEFAULT NULL,
            PRIMARY KEY (`id_P`),
            UNIQUE KEY `Nom_P` (`Nom_P`),
            KEY `id_M` (`idM`,`idRo`),
            KEY `idRo` (`idRo`),
            KEY `idM` (`idM`)
          ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1495 ;
          
          --
          -- Contenu de la table `projet`
          --
          
          INSERT INTO `projet` (`id_P`, `Nom_P`, `idM`, `idRo`, `Date_debut`, `Date_fin`, `Avancement`, `DecisionP`, `Date_fin_estime`) VALUES
          (1135, 'projet123', 210, 2, '0000-00-00', '0000-00-00', '0', 'non terminé', '0000-00-00'),
          (1136, 'projet 2', 210, 2, '2015-05-21', '2015-07-31', '10', 'non terminé', '2016-03-26'),
          (1139, 'projet de conception et de  ', 210, 7, '2015-05-15', '2015-05-31', '10%', 'non terminé', '0000-00-00'),
          (1236, 'Projet de test ', 210, 2, '2015-05-13', '2015-05-31', '0', 'non terminé', '0000-00-00'),
          (1363, 'projet de production', 210, 2, '0000-00-00', '0000-00-00', '0%', 'non terminé', '0000-00-00'),
          (1364, 'projet', 227, 2, '0000-00-00', '0000-00-00', '0%', 'non terminé', NULL),
          (1365, 'projet3', 210, 2, '0000-00-00', '0000-00-00', '0%', 'non terminé', NULL),
          (1366, 'projet36', 210, 2, '0000-00-00', '0000-00-00', '0%', 'non terminé', NULL),
          (1367, 'Projet de communication', 210, 2, '0000-00-00', '0000-00-00', '0%', 'non terminé', NULL),
          (1368, 'Projet de communication1', 210, 2, '0000-00-00', '0000-00-00', '0%', 'non terminé', NULL),
          (1369, 'gestionn de workflow', 210, 2, '0000-00-00', '0000-00-00', '0%', 'non terminé', NULL),
          (1370, 'projet de logistique', 210, 2, '0000-00-00', '0000-00-00', '0%', 'non terminé', NULL),
          (1371, 'molprlrkr', 210, 2, '0000-00-00', '0000-00-00', '0%', 'non terminé', NULL),
          (1372, 'projet de developement', 210, 2, '0000-00-00', '0000-00-00', '0%', 'non terminé', NULL),
          (1373, 'projet de traitement de cycle', 210, 2, '0000-00-00', '0000-00-00', '0%', 'non terminé', NULL),
          (1374, 'mpppppp', 210, 2, '0000-00-00', '0000-00-00', '0%', 'non terminé', NULL),
          (1375, 'mppppppù', 210, 2, '0000-00-00', '0000-00-00', '0%', 'non terminé', NULL),
          (1376, 'projet 25639', 210, 2, '0000-00-00', '0000-00-00', '0%', 'non terminé', NULL),
          (1377, 'projet12365', 210, 2, '0000-00-00', '0000-00-00', '0%', 'non terminé', NULL),
          (1378, 'prorojet develo', 210, 2, '0000-00-00', '0000-00-00', '0%', 'non terminé', NULL),
          (1379, 'prorojet develop', 210, 2, '2015-05-16', '2015-05-31', '0%', 'non terminé', NULL),
          (1380, 'prorojet develop3', 210, 2, '2015-05-16', '2015-05-31', '0%', 'non terminé', NULL),
          (1381, 'prorojet ', 210, 2, '2015-05-16', '2015-05-31', '0%', 'non terminé', NULL),
          (1382, 'prorojet 23', 210, 2, '2015-05-16', '2015-05-31', '0%', 'non terminé', NULL),
          (1383, 'prorojet 23562', 210, 2, '2015-05-16', '2015-05-31', '0%', 'non terminé', NULL),
          (1494, 'R&D', 210, 10, '2015-06-18', '2015-06-28', '0%', 'en risque', NULL);
          
          --
          -- Contraintes pour les tables exportées
          --
          
          --
          -- Contraintes pour la table `projet`
          --
          ALTER TABLE `projet`
            ADD CONSTRAINT `projet_ibfk_1` FOREIGN KEY (`idM`) REFERENCES `model` (`id_M`) ON DELETE CASCADE ON UPDATE CASCADE,
            ADD CONSTRAINT `projet_ibfk_3` FOREIGN KEY (`idRo`) REFERENCES `users` (`id_User`) ON DELETE CASCADE ON UPDATE CASCADE;
          
          /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
          /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
          /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
          

          -- phpMyAdmin SQL Dump
          -- version 4.0.4
          -- https://www.phpmyadmin.net/

          EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
          Explications disponibles ici :
          https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

          Merci d'y penser dans tes prochains messages.
          .
          1. Modérateur
            Je viens de tester ... ça fonctionne très bien...

            Tu peux essayer ceci :
             $statut= $row[4];
              switch ($statut) {
                case 'en risque':
                    $DecisionP = 'images/circle-ora.png';
                      echo " <br>==> EN RISQUE : OK ";
                    break;
                case 'terminé':
                     $DecisionP = 'images/circle-green.PNG';
                      echo " <br>==> TERMINTE : OK ";
                    break;
              case 'non terminé':
                     $DecisionP = 'images/circle-red.PNG';
                      echo " ==> NON TERMINTE : OK ";
                    break;
                default:
                 // toute autre valeur...
                 $DecisionP = 'images/circle-blue.PNG';
                   echo "<br><b> ==> AUTRE VALEUR </b> :  " . $statut;
                  
                 break;
             }
            
            


            et nos coller le résultat (ce que ça t'affiche) ici ?
            1. il m'affiche comme ceci :
              ==> EN RISQUE : OK
              ==> AUTRE VALEUR : non terminé
          2. Modérateur
            Ton fichier est dans quel encodage ?
            L'idéal serait d'être en UTF8 sans BOM.

            Si tu as notepad++ .. tu ouvres le fichier puis tu regarde dans le menu Encodage ce qui est indiqué ... et tu le changes éventuellement
            1. mon fichier est dans l'encodage UTF8(sans BOM)