Notice: Undefined index

Résolu
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   -  
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous !

J'essaie de remplacer un texte en PHP mais je rencontre le soucis du
Notice: Undefined index


En fait, la page est appelée sur d'autre pages via
includes
et chacune de ces pages est connectée à une table différente.

$type = $data_c["titre"];
$libelle = $data_d["libelle"];

if (isset($titre)) {$type;}
if (isset($libelle)) {$libelle;}

$search  = array('conseil','item');
$replace = array($titre, $libelle);


Lorsque je suis une la page dédiée à
libelle
je recois l'erreur du la page
titre
et vis-versa.

Y a t-il un moyen de corriger ce soucis ?
Je ne peux pas mettre de condition dans mon array et si je fais comme plus haut il ne corrige rien...

Merci de votre aide.

4 réponses

Xavierdu34 Messages postés 216 Date d'inscription   Statut Membre Dernière intervention   21
 
Bonjour,

Je ne comprends pas bien ta demande mais je vais tout de même tenter de te donner des éléments de réponse :

L'indication Notice (signifie que c'est une note, et non une erreur).
Ensuite undefined index, est un message qui apparaît lorsque tu fais référence à une clé d'un tableau inexistante ...

2 solutions :
- Soit tu trouves pourquoi cette référence n'existe pas, si c'est une erreur tu la corriges ....
- Soit cela arrive dans certains cas seulement, et donc tu dois tester la clé avant de l'appeler ... tu rajoutes donc un if(isset($tableau['clé'])) { ton code } else { // si la clé n'existe pas }

Ton code n'est pas très clair, à quoi sert :
if (isset($titre)) {$type;}
if (isset($libelle)) {$libelle;}

?????

Cdlt.
0
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
Comme précisé en MP, voici le code de la page :
<?php
if(isset($data["Titre"])) 		{$Titre;} 		else {$data["Titre"]='';}
if(isset($data["Libelle"])) 	{$Libelle;} 	else {$data["Libelle"]='';}
if(isset($data["Intitule"])) 	{$Intitule;} 	else {$data["Intitule"]='';}
if(isset($data["Titre"])) 		{$Details;} 	else {$data["Titre"]='';}
if(isset($data["Titre"])) 		{$Inscription;} else {$data["Titre"]='';}
/*----------------------------*/
$search  = array('annonces', 'details', 'inscription', 'conseil', 'item');
$replace = array($Intitule, $Details, $Inscription, $Titre, $Libelle);
/*----------------------------*/
$address = 'http://'.$_SERVER['HTTP_HOST'];
if($location1 = substr(dirname($_SERVER['PHP_SELF']), 1)) $dirlist1 = explode('/', $location1); else $dirlist1 = array();
if($location2 = substr(dirname($_SERVER['PHP_SELF']), 1)) $dirlist2 = explode('/', $location2); else $dirlist2 = array();
$count1 = array_push($dirlist1, basename($_SERVER['PHP_SELF']));
$count2 = array_push($dirlist2, basename($_SERVER['PHP_SELF'].$_SERVER['REQUEST_URI']));
echo '<a href="#" onclick="javascript:history.back();" title="Page précédente"><span style="font-size:18px;" class="divider">«</span></a> <a href="'.$address.'" title="Page d\'accueil">Accueil</a>';
for($i = 0; $i < $count1; $i++)
for($i = 0; $i < $count2; $i++)

echo ' <span style="font-size:18px;" class="divider">»</span> <a href="'.($address.= '/'.$dirlist2[$i]).'">'.ucfirst(str_replace($search, $replace, $dirlist1[$i])).'</a>';
?>
0
Xavierdu34 Messages postés 216 Date d'inscription   Statut Membre Dernière intervention   21
 
Déjà, pour clarifier ton code, tu peux remplacer tes lignes :

if(isset($data["Titre"])) {$Titre;} else {$data["Titre"]='';}

par
if(!isset($data["Titre"])) $data['Titre']='';
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Bonjour,

En complément des réponses déjà données..... pense qu'il faut récupérer "proprement" les variables AVANT de les utiliser.

Pour se faire, tu peux utiliser l'écriture ternaire (une sorte de if...) avec un ISSET ou !EMPTY.
 $mavariable = (mon teste) ? (reponse si teste = true ) : (reponse si teste = false);


Par exemple :

$type = isset($data_c["titre"]) ? $data_c["titre"] : NULL;
$libelle = isset($data_d["libelle"]) ? $data_d["libelle"]: NULL;

Ce qui signifie :
// $type vaut : Si $data_c["titre"] existe ? $data_c["titre"] : sinon vaut "NULL"
// $type vaut : Si $data_d["libelle"] existe ? $data_d["libelle"] : sinon vaut "NULL"




0
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
Un grand merci à tous les deux !
Je crois que ça a fonctionné.

Jordan45, j'ai cherché partout comment déclarer une condition et j'ai pas trouvé...
je ne savais pas que ça pouvait se faire et surtout comment on appel ça :D


Merci beaucoup à tous les deux !
0