Page 1 sur 1

Comment supprimer les Undefined offset

Posté : 05 déc. 2016, 22:47
par blinz
Salut, salut
Comment supprimer les undefined offset.

Dans mes requetes le resultat retourné est parfois le numéro 60 par exemple ou 0 ou autre encore et biensur il n'existe pas en bdd.
Pour diverseraison je ne peut les supprimer de la bdd, mais lors de l'appel de ma requete j'aimerais éviter que ces fameux :
Notice: Undefined offset: 75 apparaissent.
Voici une de mes requetes:
<?php
    $loisir_localisation = "SELECT DISTINCT id_region FROM loisirs WHERE genre_loisir = '".$_GET['loisir']."'";
    $req = $bdd->query($loisir_localisation);           
    while($ligne = $req->fetch(PDO::FETCH_ASSOC)){                                 
    echo '<li><a href="/idclick/sortie/region-'.simplification($aRegion[$ligne['id_region']]).'/activie-'.simplification($_GET['loisir']).'.html">'.ucfirst(strtolower($aRegion[$ligne['id_region']])).'</li>';    	
    }
	?>
Merci à vous

Re: Comment supprimer les Undefined offset

Posté : 06 déc. 2016, 09:15
par moogli
salut,

undefined offset => l'index n'existe pas dans le tabeau => du coup faut pas l'utiliser :-)

les fonctions isset ou empty t'aideront à tester l’existence de l'index dans ton tableau.
Si celui ci n'existe pas il ne faut pas l'utiliser, d'ailleurs si la donnée n'existe pas il faut traiter la chose correctement avec un message par défaut ou quelque chose du genre.

@+

Re: Comment supprimer les Undefined offset

Posté : 06 déc. 2016, 09:18
par Spols
Pour éviter ce type d'erreur, tu dois tester l’existence de l'index dans ton tableau avant de l'utiliser avec isset() ou empty()

je suppose un truc de ce genre
<?php
    $loisir_localisation = "SELECT DISTINCT id_region FROM loisirs WHERE genre_loisir = '".$_GET['loisir']."'";
    $req = $bdd->query($loisir_localisation);           
    while($ligne = $req->fetch(PDO::FETCH_ASSOC)){                                 
    if (isset($ligne['id_region']) && $aRegion[$ligne['id_region']] ) {
echo '<li><a href="/idclick/sortie/region-'.simplification($aRegion[$ligne['id_region']]).'/activie-'.simplification($_GET['loisir']).'.html">'.ucfirst(strtolower($aRegion[$ligne['id_region']])).'</li>';    
}	
    }
  ?>

Re: Comment supprimer les Undefined offset

Posté : 06 déc. 2016, 09:30
par moogli
@Spols : a vu de nez c'est le second qui pose problème le premier venant de la requête sql il y a peu de chance qu'il ne soit pas fournit (même cela est le comportement par défaut des fonction oracle je ne crois que cela soit le cas pour PDO, en tout cas cela ne m'est jamais arrivé :) )

@+