Quantcast
Channel: Informaticando.NET - fix
Viewing all articles
Browse latest Browse all 19

PHP notice undefined index - FIX

0
0

Se ricevi la notifica "notice undefined index" dal tuo interprete PHP, non preoccuparti non è un'errore grave e bloccante, vediamo di capire il perché si verifica e come risolverlo.

Questa "notice undefined index" compare perché si sta cercando di accedere all'indice di un array che non è definito, capita spesso con gli array associativi ed in particolar modo quando abbiamo un insieme (un resultset) ritornato da una interrogazione al database, dopodiché si accede ai singoli elementi dell'insieme trasformandoli in un array grazie alla funzione mysql_fetch_assoc (i mysqli_fetch_assoc se usata l'estensione MySqli), quest'utlima funzione d'interfacciamento con mysql ritorna appunto un array associativo dove i nomi delle varie colonne della tabella del database rappresentano proprio il nome dell'indice dell'array associativo.

 

Può capitare pertanto, magari in seguito ad un banale errore di battitura, di scrivere male il nome dell'indice associato alla posizione di quell'elemento nell'array, in questo caso l'interprete PHP ritornerà proprio detta notifica "notice undefined index" , facciamo un es.

 

$resultset = mysqli_query($link,$query);
while($row=mysqli_fetch_assoc($resultset)) {
    $items[]= new Product($row['id'],$row['tile'],$row['price']);
}

 

Se leggete bene il nome della colonna della row title è scritto errato (volutamente) come 'tile' ed in questo caso l'indice dell'array non verrà riconosciuto generando quel notice. Le segnalazioni notice non bloccano l'esecuzione dello script, non sono pertanto dei "fatal error" , possono essere però molto insidiosi poiché puoi ritrovarti senza un determinato valore/campo senze che tu riesca a renderti conto del perché, talvota sono gli "errori" più insidiosi da andare a scovare.

Conviener talvolta verificare la presenza dell'indice con la funzione isset in questo modo:

 

$field_val = (isset($row['title']) ? $row['title'] : null);

 

In entrambi i casi effettuiamo un controllo sulla proprietà field di object, ed eviteremo il presentarsi della notifica "notice undefined property" sia che filed non sia definita sia che non abbia un valore corretto assegnato o che non sia accessibile da dove viene utilizzata.

 

Come spiegato su un articolo analogo Come risolvere l'errore"notice undefined property" ricordiamo che le notice possono essere disattivate sia a livello di singolo script (file) PHP, in questo modo:

<?php
error_reporting(E_ALL & ~E_NOTICE);
...
?>

Sia a livello dell'intero applicativo web intervenendo sul file di CONFIG php.ini con la direttiva:

error_reporting = E_ALL & ~E_NOTICE

 

Questo è tutto per risolvere e far scomparire la notifica "notice undefined index", concludo postandovi anche il link per un ulteriore "errore" analogo che si verifica in PHP "Notice undefined variable in PHP" , se vuoi chiedere dell'altro usa lo spazio dei commenti.


Viewing all articles
Browse latest Browse all 19

Latest Images

Trending Articles





Latest Images