Forums

LOUCAN.FR :: Forums :: PHP - MySql :: Fonctions PHP
 
<< Previous thread | Next thread >>
PHP - Notice variable undefined
Moderators: Jordane
Author Post
Jordane
Tue Dec 30 2014, 11:59am

Registered Member #1
Joined: Wed Mar 17 2010, 04:14pm
Posts: 74

Lorsque vous faites appel à une variable qui n'est pas initialisée ou qui n'existe pas (et que votre serveur est configuré pour vous afficher les "notice" ..) vous avez un message d'erreur qui apparait pour vous le signaler..

Par exemple :


<?php
// Affichage des messages d'erreur
error_reporting(E_ERROR E_WARNING E_PARSE E_NOTICE);

//Utilisation d'une variable "inconnue" dans le script
echo $test;

?>


Vous donnera l'erreur :

Notice: Undefined variable: test in C:\wamp\www\_PERSO\notice.php on line 3


Pour éviter cela.. il est vivement conseillé de vérifier AVANT de l'utiliser.. que la Variable existe ( en utilisant la fonction ISSET )

Le code corrigé donne alors :

<?php
// Affichage des messages d'erreur
error_reporting(E_ERROR E_WARNING E_PARSE E_NOTICE);

//Utilisation d'une variable "inconnue" dans le script
echo isset($test)?$test:'';
?>




Vous pouvez aussi désactiver l'affichage des NOTICE grace à la ligne de code :

<?php
// Rapporte toutes les erreurs à part les E_NOTICE
// C'est la configuration par défaut de php.ini
error_reporting(E_ALL & ~E_NOTICE);
?>


Mais... un conseil... Laissez les et préférez plutôt la correction du code plutôt que de les ignorer !









[ Edited Tue Dec 30 2014, 12:00pm ]

Cordialement,
Jordane.
www.jr.loucan.fr
Back to top
Jordane
Tue Dec 30 2014, 12:06pm

Registered Member #1
Joined: Wed Mar 17 2010, 04:14pm
Posts: 74
Pour récupérer les variables passées en POST/ GET / SESSION / COOKIE ... j'utilise une petite fonction bien pratique qui évite d'avoir a réécrire à chaque fois le test ( if isset....)


<?php
 
function getParams($name,$type="POST",$default=''){  
     switch (
$type){
     case 
"POST":
         
$var = isset($_POST[$name])?$_POST[$name]:$default;
         break;
     case 
"GET":
          
$var = isset($_GET[$name])?$_GET[$name]:$default;
         break;
     case 
"SESSION":
          
$var = isset($_SESSION[$name])?$_SESSION[$name]:$default;
         break;
     case 
"COOKIE":
          
$var = isset($_COOKIE[$name])?$_COOKIE[$name]:$default;
         break;
     }
     return 
$var;
 }

?>



et pour l'utiliser :


<?php
// dans la cas d'un submit POST d'un input dont le nom est toto :
$maVariable getParams('toto');
?>




NB: Vous vous demandez peut être ce que signifie le code du genre :
 $var = isset($_POST[$name])?$_POST[$name]:$default;

C'est l'équivalent d'un IF / ELSE .. mais écrit avec ce que l'on appel l'écriture TERNAIRE...
Voir ici pour plus d'infos :
http://www.analyste-programmeur.com/php/bien-developper/operateur-ternaire-php



Cordialement,
Jordane.
www.jr.loucan.fr
Back to top
 

Jump:     Back to top

Syndicate this thread: rss 0.92 Syndicate this thread: rss 2.0 Syndicate this thread: RDF
Powered by e107 Forum System