Notice: Undefined index [Résolu/Fermé]

Signaler
Messages postés
1000
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
24 octobre 2020
-
Messages postés
1000
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
24 octobre 2020
-
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

Messages postés
216
Date d'inscription
lundi 2 décembre 2013
Statut
Membre
Dernière intervention
10 octobre 2016
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.
Messages postés
1000
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
24 octobre 2020
15
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>';
?>
Messages postés
216
Date d'inscription
lundi 2 décembre 2013
Statut
Membre
Dernière intervention
10 octobre 2016
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']='';
Messages postés
31566
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mars 2021
3 295
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"




Messages postés
1000
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
24 octobre 2020
15
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 !