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 :

ERREUR Undefined offset dans une boucle


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2014
    Messages : 253
    Points : 164
    Points
    164
    Par défaut ERREUR Undefined offset dans une boucle
    Bonjour,

    J'ai une erreur concernant un index indéfini dans une boucle et je ne vois quelle peut être la solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while ($sommaire[$n][0]!=null) {
    	if($sommaire[$n][1]=="sommaire0") {
    		$index0=$index0."<TD style=\"background-color: #55AAFF ;\" WIDTH=".intval($largeur/$a)."><a style=\" text-decoration: none; \" href=\"#\" onclick=\"ShowPage('".$sommaire[$n][0]."')\">".$sommaire0[0].$sommaire[$n][0].$sommaire0[1]."</a></TD>";
    		//echo $index0;
    	} else {
    		//$sommaire[$n-1][1]<$sommaire[$n][1];
    		$indexcol[$sommaire[$n][2]]=$indexcol[$sommaire[$n][2]]."<a style=\"text-decoration: none; \"  href=\"#\" onclick=\"ShowPage('".$sommaire[$n][0]."')\">".$sommaire1[0].$sommaire[$n][0].$sommaire1[1]."</a>";
    		}
     
    	$n++;
    }
    Notice: Undefined offset: 2 in C:\serveur\apache2\htdocs\eeeter\sommaire.php on line 56
    Cette ligne correspond à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $indexcol[$sommaire[$n][2]]=$indexcol[$sommaire[$n][2]]."<a style=\"text-decoration: none; \"  href=\"#\" onclick=\"ShowPage('".$sommaire[$n][0]."')\">".$sommaire1[0].$sommaire[$n][0].$sommaire1[1]."</a>";

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    ça veut juste dire que $sommaire[$n][2] ou que $indexcol[2] n'existent pas.
    Vérifie si la valeur de $n n'est pas au-delà de la limite.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2014
    Messages : 253
    Points : 164
    Points
    164
    Par défaut
    Oui effectivement ils n'existent pas puisque je créé une boucle dans laquelle ils sont définis. (sauf sommaire qui est déjà défini avant la boucle).
    Je ne vois pas comment concatener en boucle des chaînes dans un tableau sans provoquer cette erreur.

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Tu fais juste un simple if (isset($indexcol[$sommaire[$n][2]]) { /* tu concatènes */ } else { /* tu définis */ }

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu dois juste initialiser ta variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    else {
    		//$sommaire[$n-1][1]<$sommaire[$n][1];
                    if (!isset($indexcol[$sommaire[$n][2]]) { $indexcol[$sommaire[$n][2]] = ''; }
    		$indexcol[$sommaire[$n][2]] .= "<a style=\"text-decoration: none; \"  href=\"#\" onclick=\"ShowPage('".$sommaire[$n][0]."')\">".$sommaire1[0].$sommaire[$n][0].$sommaire1[1]."</a>";
    		}
    Note au passage le ".=" pour alléger ta ligne.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2014
    Messages : 253
    Points : 164
    Points
    164
    Par défaut
    ok j'ai beaucoup moins d'erreurs donc ça marche, mais cela va alourdir un peu mon programme.
    Je pense que le test isset() est une bonne méthode.
    est ce équivalent à l'expression ($mavariable!=NULL) ? en effet j'utilise ce test de nombreuses fois...

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    mais cela va alourdir un peu mon programme.
    Je pense que tu t'en sortais bien tout seul

    est ce équivalent à l'expression ($mavariable!=NULL)
    oui sauf que isset() ne provoque evidement pas d'erreurs quand la variable n'est pas définie
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2014
    Messages : 253
    Points : 164
    Points
    164
    Par défaut
    En tous les cas merci pour vos conseils.

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

Discussions similaires

  1. Erreur Undefined offset dans un tableau
    Par pasc06 dans le forum Langage
    Réponses: 26
    Dernier message: 26/11/2008, 16h04
  2. [VBA-E] pb avec offset dans une boucle
    Par davidlb dans le forum Excel
    Réponses: 4
    Dernier message: 01/04/2007, 09h15
  3. [VB-E] Erreur 1004 dans une boucle For
    Par lycaon dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/11/2006, 22h41
  4. erreur mysql-fetch_array dans une boucle While
    Par carmen256 dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/04/2006, 17h15
  5. Shell - Erreur dans une boucle for
    Par claralavraie dans le forum Linux
    Réponses: 4
    Dernier message: 11/01/2006, 13h45

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