Notice: Undefined index

Résolu/Fermé
Sinistrus Messages postés 1007 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 20 mai 2022 - 18 avril 2016 à 16:14
Sinistrus Messages postés 1007 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 20 mai 2022 - 18 avril 2016 à 17:28
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 lundi 2 décembre 2013 Statut Membre Dernière intervention 10 octobre 2016 21
Modifié par Xavierdu34 le 18/04/2016 à 16: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 1007 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 20 mai 2022 17
18 avril 2016 à 16:58
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 lundi 2 décembre 2013 Statut Membre Dernière intervention 10 octobre 2016 21
18 avril 2016 à 17:09
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 36384 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 octobre 2022 4 367
18 avril 2016 à 17:11
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 1007 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 20 mai 2022 17
18 avril 2016 à 17:28
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