Rechercher : dans
Par :

[PHP] Variables non définies

Dernière réponse le 15 fév 2009 à 14:02:49 scriptiz, le 11 fév 2009 à 12:29:14 
 Signaler ce message aux modérateurs

Bonjour tout le monde,

Voilà en fait sur mes sites j'oublie parfois d'initialiser les variables dans tout les cas possible, lorsque je suis sur l'hébergeur ça ne pose aucun soucis, mais chez moi en local (avec WAMP), j'ai des erreurs de ce type, pas très dérangeantes mais je voudrais bien m'en passer (vu que l'hébergeur parvient à ne pas les afficher).

Notice: Undefined variable: upload_ok in C:\wamp\www\mylbn\modules\admin\files_upload_add.admin.php on line 24


J'ai donc regarder dans le php.ini, mais je n'ai rien trouvé sur les variables non définies. J'ai commencer à faire des if(isset($variable)) avant de faire d'autres tests dessus mais ça me lourde un peu car il y en a un peu partout.

Donc si quelqu'un possède la solution pour ne plus être embêter par ces erreurs/notifications je le remercie d'avance.
Configuration: Windows Seven
Google Chrome 1.0.154.48

Meilleures réponses pour « [PHP] Variables non définies » dans :
PHP - Les variables VoirConcept de variable avec PHP Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois...
PHP - Les variables d'environnement VoirNotion de variable d'environnement Les variables d'environnement sont, comme leur nom l'indique, des données stockées dans des variables permettant au programme d'avoir des informations sur son environnement. L'environnement, dans le cas du script...
Les variables avec Perl VoirConcept de variable avec Perl Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage Perl peuvent être de trois...

1

zoby44, le 11 fév 2009 à 12:31:08

Salut, tu peux nous mettre le script de la page ,s'il te plait ? Il est souvent plus rapide de chercher que d'attendre une ré­ponse... Google est notre ami.

Répondre à zoby44

2

974_Vin's_974, le 11 fév 2009 à 12:33:53

Il nous faut du code !!!!!!

^^

Dséolé puor l'otrhogarphe, arpès tuot on s'enfuo, t'es bein ­capbale de cmoprnedre ça non ??
[' Tu tr0uveras t0uj0urs plus f0rt que t0i ']

Répondre à 974_Vin's_974

3

Passarinho44, le 11 fév 2009 à 12:37:23

Ne pas initialiser une variable est une erreur ...
Pas besoin de isset() partout, un simple : $tavariable = ""; avant toute utilisation de celle-ci et ça sera bon :)

Répondre à Passarinho44

4

scriptiz, le 11 fév 2009 à 23:03:38

Bon je vous fait rapide un script qui génère cette erreur, je me foule pas sur le html :)

<html>
<head><title>titre test</title></head>
<body>
<?php
if($maVariableNonInitialisee == 2)
    echo "<p>Lililalilère</p>";
else
	echo "<p>Lalalilalère</p>";
?>
</body>
</html>


Ce qui m'affichera ceci en local (sous WAMP 2.0) :

==========
Notice: Undefined variable: maVariableNonInitialisee in C:\wamp\www\erreur.php on line 5
Lalalilalère
==========


Et ceci sur mon hébergeur :
==========
Lalalilalère
==========


Donc en gros sur l'hébergeur tout se passe bien, et sur le local il me lache un warning dont j'aimerais me passer autrement qu'en mettant des @ partout :p

Passarinho> Je sais que c'est un peu une erreur mais ici j'aimerais la contourner, l'hébergeur y arrive bien donc logiquement je peux le faire moi aussi. En même tant PHP n'est pas un langage hyper explicite sur ce genre de choses donc on va pas faire un caca comme si c'était du C ^^

Merci d'avance

Répondre à scriptiz

5

974_Vin's_974, le 12 fév 2009 à 05:11:05

Tu as un ptit peu oublié les acolades pour la condition if ...

<html>
<head><title>titre test</title></head>
<body>
<?php
if($maVariableNonInitialisee == 2)
{
    echo "<p>Lililalilère</p>";
}
else
{
	echo "<p>Lalalilalère</p>";
}
?>
</body>
</html>


^^ ...
Dséolé puor l'otrhogarphe, arpès tuot on s'enfuo, t'es bein capbale de cmoprnedre ça non ??
[' Tu tr0uveras t0uj0urs plus f0rt que t0i ']

Répondre à 974_Vin's_974

6

scriptiz, le 12 fév 2009 à 10:21:38

Les accolades ne sont pas obligatoires, si tu n'en met pas, une seul instruction après le if sera executée, exemple :

// 1
if(true)
    echo "ceci va s'afficher<br />";
echo "ceci va s'afficher aussi mais on est sortit du IF<br />";

// 2
if(false)
    echo "ceci ne s'affichera pas<br />";
echo "ceci va s'afficher<br />";

// 3
if(true)
    echo "ceci va s'afficher<br />";
else
    echo "ceci ne s'affichera pas<br />";
echo "ceci va s'afficher mais on est sortit du IF ELSE<br />";

// Même chose avec les boucles : 
$x = 10;

while($x >= 1)
    echo($x--);
echo "<br />compte à rebours terminé";
// sortie : "10987654321
// compte à rebours terminé"


Essaye chez toi ou sur ton site, si tu ne comprends toujours pas, sinon va voir sur le site du zéro.

Bref je n'ai pas poser de question là dessus, ce serait bien si les gens qui pensent pouvoir faire quelque chose pour moi s'en abstienne tant que ce n'est pas en rapport direct avec la question, où qu'ils n'ont aucune idée de mon petit soucis (php.ini, variables non initialisées, ...).

Merci d'avance :)

Répondre à scriptiz

7

Gogeta59, le 12 fév 2009 à 10:39:43

Salut, essaye de remplacer

if($maVariableNonInitialisee == 2)
par
if(isset($maVariableNonInitialisee) AND $maVariableNonInitialisee == 2)


Edit: Ou alors en début de page, tu mets
$maVariableNonInitialisee = '';

Répondre à Gogeta59

8

scriptiz, le 12 fév 2009 à 16:58:29

J'ai donc regarder dans le php.ini, mais je n'ai rien trouvé sur les variables non définies. J'ai commencer à faire des if(isset($variable)) avant de faire d'autres tests dessus mais ça me lourde un peu car il y en a un peu partout.

Merci gogeta, mais comme j'ai dit ça me lourde un peu de mettre des isset partout car j'ai ces "warning" qui sont bien dispersés parmis pas mal de lignes de codes (quasi 3000 dans environ 60 fichiers).

Donc je cherche la solution que l'hébergeur utilise (qui doit surement être la modification de la configuration de php.ini).

D'avance merci.

Répondre à scriptiz

9

Gogeta59, le 12 fév 2009 à 17:12:08
  • +1

Oki d'après ce lien , il te faut désactiver la constante de report d'erreurs E_NOTICE.

Répondre à Gogeta59

10

scriptiz, le 13 fév 2009 à 22:59:42
  • +1

Un tout grand merci Gogeta, enfin la réponse que je souhaitais =)

J'ai donc mit ceci dans mon php.ini pour la valeur error_reporting :

;default : error_reporting  =  E_ALL
error_reporting = E_ALL & ~E_NOTICE


Par défaut c'était error_reporting = E_ALL

En ajoutant & ~E_NOTICE ça enlève les erreurs de type NOTICE (donc celles que je ne voulais pas :) ).

Encore merci et à bientôt.

Répondre à scriptiz

11

Gogeta59, le 14 fév 2009 à 11:19:22

De rien, content d'avoir pu t'aider^^
Oublie pas de mettre ton sujet en Résolu, sinon c'est cool aussi de ta part d'avoir posté ta solution.
Voilà en espérant que ça aide quelqu'un d'autre!! ;D

Répondre à Gogeta59

12

 scriptiz, le 15 fév 2009 à 14:02:49

Voilà c'est fait, désolé du petit oubli ^^

A la prochaine, j'espère que ça en aidera d'autres aussi :)

Répondre à scriptiz