Switch ne marche pas
Imen Ben Hassen
-
Imen Ben Hassen -
Imen Ben Hassen -
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
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.
.
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.
.
A voir également:
- Switch ne marche pas
- Android switch - Accueil - Android
- Smart switch pc - Télécharger - Divers Bureautique
- Switch off - Télécharger - Divers Utilitaires
- Logiciel switch - Télécharger - Conversion & Extraction
- Switch qwerty azerty - Guide
12 réponses
Bonjour,
Tu fais un RETURN + une afectation de variable en même temps... ce n'est pas terrible !
Essayes ceci :
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; }
voilà mon code jordane45 et merci de m'aider :))
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
<?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
Commence par faire un ECHO de ta variable pour voir ce qu'elle vaut.
EDIT : MAJ du code
<?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
Jordane45 svp quand je mets terminé avec "é" dans la base de données et dans le switch , l'image ne s'affiche pas
jordane45 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
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.
.
$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.
.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Commence par afficher le contenu de la variable $statut pour voir ce qu'elle contient :
Ensuite, tu me confirmes que le code utilisé pour afficher les image est toujours le même que celui que tu nous avais montré ?
Au cas où .. remontre nous le code COMPLET de ta page.
$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.
voilà le code complet jordane45
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.
<?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.
Tu as changé le code ?
N'est pas celui que je t'avais donné :
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 :
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..)
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..)
Je t'ai demandé de rajouter, dans ton code, du débug sur ta variable :
.... 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 :
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]);
Pourrais tu nous fournir un dump de ta table ?
histoire qu'on sache exactement ce qu'elle contient... et sous quelle forme ?
histoire qu'on sache exactement ce qu'elle contient... et sous quelle forme ?
Heuuu..... il manque des lignes ....
Au passage :
**** Attention ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
Au passage :
**** Attention ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
-- 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.
.
Je viens de tester ... ça fonctionne très bien...
Tu peux essayer ceci :
et nos coller le résultat (ce que ça t'affiche) ici ?
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 ?
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 :(