IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Undefined index sur une variable dans la superglobale $_SESSION


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut Undefined index sur une variable dans la superglobale $_SESSION
    Bonjour à tous,

    Comme le titre l'indique, je me retrouve avec un undefined index, que je n'arrive pas à résoudre.

    Voici un screen de l'erreur Nom : 5f434eacb8e682910f55ad906054b3b8.png
Affichages : 350
Taille : 11,4 Ko

    Et voici le code en question :
    Ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    	public function getListeInterlocuteurs( $contact_id ) {
    		$ret = array();
    		$_CHAMPS_INTERLOCUTEURS = 'I.I_CODE as I_CODE,
    									I.I_CODECONTACT as I_CODECONTACT,
    									I.I_NOM as I_NOM,
    									I.I_PRENOM as I_PRENOM,
    									I.I_TEL1 as I_TEL1,
    									I.I_TEL3 as I_TEL3,
    									I.I_EMAIL as I_EMAIL,
    									I.I_ADRESSE4 as I_ADRESSE4
    									';
    		$sql = "select ".$_CHAMPS_INTERLOCUTEURS." from CHAMP where I_CODECONTACT = '".StringTools::CleanInjectionFirebird(strtoupper(utf8_decode(trim($contact_id))))."' and I.I_INACTIF = 'F' order by I_NOM, I_PRENOM";
    		$_array_bind = array();
    		$results = InfocobDB::getInstance()->fetchAll( $sql, $_array_bind );
    		if ( isset( $results) && !empty( $results ) ) {
    			foreach ($results as $key => $val) :
    				$ret[] = array('CODE'=>utf8_encode($val['I_CODE']), 'NOM'=>trim(utf8_encode($val['I_NOM'].' '.$val['I_PRENOM'])), 'TEL'=>trim(utf8_encode($val['I_TEL1'])), 'PORTABLE'=>trim(utf8_encode($val['I_TEL3'])), 'EMAIL'=>trim(utf8_encode($val['I_EMAIL'])), 'ADRESSE'=>trim(utf8_encode($val['I_ADRESSE4']))); 
    			endforeach;
    		}
    		return $ret;
    	}
    Je stocke le tout dans une variable de session de cette manière là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public $listeInterlocuteur;
     
    public function connect( $login, $pass ) {
    ...
     
    $this->listeInterlocuteur = $this->getListeInterlocuteurs();
    $_SESSION['liste_interlocuteur'] = $this->listeInterlocuteur;
     
    ...
    }
    Pour ensuite l'afficher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <div class="form-group">
    		<label class="col-sm-3 control-label" for="">Interlocuteur :</label>
    		<div class="col-sm-9">
    			<select name="" id="" class="selectpicker form-control">
    			<option value="">Choix du destinataire</option>
    			<?php
    			if ( isset($_SESSION['liste_interlocuteur']) ) {
    				$total = count($_SESSION['liste_interlocuteur']);
    				for ( $i = 0; $i < $total; $i++ ) { 
    					//$sel = $_SESSION['codeclient'] == $_SESSION['liste_interlocuteur'][$i]['CODE'] ? ' selected="selected"':'';
    				?>
    					<option value=""><?php echo $_SESSION['liste_interlocuteur'][$i]['NOM']; ?></option>
    				<?php
    				}
    			} else
    				?><option>nul</option>
    			<?php
    			?>
    			</select>
    		</div>
    	</div>
    Le truc étant, que j'ai agis exactement de la même manière pour afficher des valeurs de ma bdd dans d'autres <option>, et ça fonctionnait à peu près. Mais là, j'ai cette erreur que je n'arrive pas à résoudre.

    Si quelqu'un à une quelconque idée, je suis preneur !

    Bonne journée à tous et bon weekend !
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Le nom et le numéro de ligne sont dans le message d'erreur.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Bonjour Jreaux, décidément, on est lié

    Oui, ils le sont bien. Et c'est lors de l'affichage, la récupération de ma variable soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( isset($_SESSION['liste_interlocuteur']) ) {
    Mais je ne saurais l'expliquer, encore moins le résoudre...
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  4. #4
    Invité
    Invité(e)
    Par défaut
    Revois la logique de ton code.
    Notamment la chronologie (creation des variables, utilisation...).

    Car manifestement, soit elle n'est pas créée... soit il manque un session_start() (?)

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Le problème étant, que dans ce même fichier, d'autres variable de session sont utilisées. Donc l'hypothèse du session_start() est enlevé.

    Et je déclare exactement de la même manière cette nouvelle variable... D'ou le fait que je sèche..
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je vais proposer un débug de base : faire un var_dump($_SESSION) au début de la page et ajoute un echo après chaque insertion dans $_SESSION histoire de vérifier que tu passes bien où tu penses passer.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Merci pour l'idée, je mets ça en place aussi vite que possible !

    (En passant, j'ai un deuxième problème de ce genre. Une autre variable fonctionne en local, et en prod, n'existe plus... )
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    @Celira

    Après avoir fait ton test, ma variable de session n'est pas présente. (la $_SESSION['liste_titre']) alors que je l'ai incrusté entre deux autres variables, qui elles sont dans le débug...
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par magicarpe44 Voir le message
    Une autre variable fonctionne en local, et en prod, n'existe plus... )
    1/ Attention à la sensibilité à la casse !
    => Vérifie les majuscules/minuscules.


    2/ session_start() doit être présent dans TOUS les fichiers, dont celui où est CREEE la variable de SESSION (pas uniquement où elle est "utilisée"...).


    N.B. Comme tu ne montres que des bribes de codes, on ne peut pas tester à ta place...

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Il doit y avoir une condition "alakon" autour de ta variable. Mais comme l'indique notre ami tacheté, il nous faudra davantage de code pour pouvoir t'aider.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Résolu !

    Différents problèmes :
    - Un cache non vidé
    - Un minuscule oubliée

    Désolé de vous avoir embêté avec quelque chose d'aussi simpliste.

    Merci à vous d'avoir pris le temps de donner quelques solutions !
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Test sur une variable dans la session
    Par midou159 dans le forum Struts 2
    Réponses: 3
    Dernier message: 17/01/2011, 22h26
  2. 'Undefined index' sur une liste issue d'une requete
    Par Gareth dans le forum Langage
    Réponses: 9
    Dernier message: 26/05/2009, 12h35
  3. IF sur une variable SHELL dans un bout de SQL
    Par nicolas.pailheret dans le forum Linux
    Réponses: 4
    Dernier message: 15/05/2009, 15h15
  4. affichage d'une variable sur une image dans un mail
    Par diabli73 dans le forum Langage
    Réponses: 3
    Dernier message: 25/02/2009, 19h22
  5. Réponses: 3
    Dernier message: 05/08/2008, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo