Notice: Undefined offset: / index:

Petit nouveau ! | 5 Messages

29 juin 2006, 09:31

Bonjour à tous,
J'ai un petit PB lors de l'execution de mon script PHP.
Il me dit:

Code : Tout sélectionner

Notice: Undefined index: description in d:\easyphp\www\aa\printers.php on line 52 Notice: Undefined index: location in d:\easyphp\www\aa\printers.php on line 51 Notice: Undefined offset: 81 in d:\easyphp\www\aa\printers.php on line 50 Notice: Undefined offset: 81 in d:\easyphp\www\aa\printers.php on line 51
J'ai pu localiser la source du problème, mais je n'arrive pas à l'éliminer.
Lors de l'execution du script, je me connecte à LDAP, j'extrait des infos et les listes dans un tableau.
Pour ce faire je charge une array. Apparemment lorsque un champs LDAP est vide, ben, il aime pas.
for($i=0; $i<count($info); $i++) 
{ 
$format_array[$i][0] = $info[$i]["printername"][0]; 
$format_array[$i][1] = $info[$i]["location"][0]; 
$format_array[$i][2] = $info[$i]["description"][0]; 
$format_array[$i][3] = $info[$i]["portname"][0]; 
} 
Si vous avez une idée...

Mammouth du PHP | 684 Messages

29 juin 2006, 10:31

Salut, tu peux utiliser isset($ta_variable) pour vérifier si la variable est bien initialisée.
for($i = 0; $i < count($info); $i++)
{
    if (isset($info[$i])) {
        $format_array[$i][0] = $info[$i]["printername"][0];
        $format_array[$i][1] = $info[$i]["location"][0];
        $format_array[$i][2] = $info[$i]["description"][0];
        $format_array[$i][3] = $info[$i]["portname"][0];
    }
} 
Si bien sur c'est ton $info qui pose problème, ce qu'il faut trouver par toi même. Tu peux utiliser ce bout de code pour voir le contenue de ton tableau avant de faire ta boucle et en comprendre le contenue :
echo '<pre>';print_r($info);echo '</pre><br />';
Zigz4g

Eléphant du PHP | 82 Messages

30 juin 2006, 19:31

Salut,

les problèmes d'undefined index !!! Quand on pense que php était bien car il n'était pas nécessaire de déclarer toutes les variables !!!!

Bonne solution le précédent post mais perso j'ai ajouté un petit
error_reporting(~E_NOTICE);
qui va bien :)

++


PS : Clair que le mieux est déclarer et de tester si les variables existent !!!

Petit nouveau ! | 5 Messages

06 juil. 2006, 23:10

Merci à Zigz4g pour sa participation. Merci aussi à jobi1722, La fonction error reporting a "corrigé" mon PB
Bonne journée

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 juil. 2006, 09:30

Je voudrais bien appuyer la remarque de jobi1722
PS : Clair que le mieux est déclarer et de tester si les variables existent !!!
La solution qu'il t'a donné n'est qu'un camouflage. Les erreurs existent encore.

La solution la plus pérenne est celle de tester l'existence des indexs avant de réaliser le traitement.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 337 Messages

14 janv. 2007, 15:02

Bonjour !

Désolé d'exhumer ce message, mais j'ai un problème similaire d'erreurs en cascade de notice après un changement d'ordi et une réinstallation de easyPHP... J'ai regardé le fichier php.ini, et la ligne error_reporting est bien la suivante : E_ALL & ~E_NOTICE

Cela peut-il venir d'autre part ? Aurais-je oublié quelque chose ?

Edition : au temps pour moi, j'ai résolu mon problème en ajoutant la ligne error_reporting(E_ALL ^ E_NOTICE); avant mon code. N'empêche, je me demande pourquoi ça n'a pas marché avec le php.ini...

Eléphant du PHP | 337 Messages

14 janv. 2007, 18:33

Problème résolu : je modifiais le fichier php.ini situé dans le répertoire "php" et non celui situé dans le répertoire "apache"

(à l'attention des neuneus comme moi qui pourraient rencontrer le même problème 8-))