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 :

anticiper une erreur qu'on arrive pas à résoudre (sortie d'index de tableau)


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 477
    Par défaut anticiper une erreur qu'on arrive pas à résoudre (sortie d'index de tableau)
    bonjour,

    je n'arrive pas à résoudre une erreur (un index de tableau qui sort du possible), du coup j'aimerai détecté l'erreur.
    elle s'affiche comme ça :
    Notice: Undefined offset: 1 in C:\xampp\htdocs\ent\classes\taches_list.php on line 3541
    y-a-t-il un moyen dans ma fonction de dire
    if (telle erreur) fait rien;
    else

    {
    // taches sans erreur
    ..
    instructions habituel
    }

    Pour info, ma ligne 3541 est : mais impossible de traiter pourquoi $i+1 prend une valeur bizarre ni même d'afficher cette valeur bizarre !

    merci de votre aide si vous avez une astuce pour anticiper l'erreur

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 372
    Par défaut
    Bonjour,

    je n'arrive pas à résoudre une erreur (un index de tableau qui sort du possible)
    Un peu compliqué de deviner sans plus de contexte


    mais impossible de traiter pourquoi $i+1 prend une valeur bizarre ni même d'afficher cette valeur bizarre !
    Ca l'est d'autant plus pour moi ? Tu récupères rien ? T'as fait un var_dump ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (telle erreur) fait rien;
    Try catch ?
    Un problème sans solution est un problème mal posé. (Albert Einstein)

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 346
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 346
    Billets dans le blog
    17
    Par défaut
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if (isset($tab[$i + 1])) {
        // $tab[$i + 1] existe
        $couleur = $tab[$i + 1];
    } else {
        // $tab[$i + 1] n'existe pas
        $couleur = null;
    } // Peut être raccourci en $couleur = $tabl[$i + 1] ?? null;
     
    // Agit selon si $couleur est null ou pas
    if ($couleur !== null) {
        // ...
    } else {
        // ...
    }
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  4. #4
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 477
    Par défaut
    comme je suis dans une humeur cascou, je tente de résoudre une nouvelle fois.
    en gros j'ai une chaine de caractère comme ça :
    $chaine="rouge;#0000ff;bleu ciel;#3748c0"
    c'est une série de couple "nom et couleur html"
    je tente d'isoler la couleur pour transformer le tout en une suite de code html

    en premier je met mes item dans un tableau :
    $tab=explode(";", $chaine);
    puis je parcours le tableau en prenant soin de traiter une valeur sur 2
    Une fois sur 2, car un coup c'est le nom, et le coup suivant c'est le code couleur
    En gras j'ai mis la ligne qui créer l'erreur :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $nb=count($tab);
    for ($i=0;$i<$nb;$i++)
    					{
    
    					//si c'est pair, on complète le rendu avec la couleur de l'élement suivant
    					if ($i % 2 == 0)
    						{											
    						$couleur=$tab[$i+1];			
    						$couleur=substr($couleur,0,7);			
    						$rendu_html.="<font color=\"".$couleur."\">".$tab[$i]." </font>";
    						} //si pair		
    					} //traitement des couples

    Dans la boucle for, j'ai bien mis une condition $i<$nb et non pas $i<=$nb car ça sert à rien d'analyser le dernier item vu que c'est une couleur
    mais c'est comme si il était qand-même analysée et que ($i % 2 == 0) marchait pas pour le n°4 c-a-d i=3

    Au départ je pensais qu'il yavait un ; en trop dans ma chaine qui tromper le compteur mais non, ya bien que 4 valeurs :
    /*
    echo "<pre>";
    print_r($tab);
    echo "</pre>";
    Array
    (
    [0] => rouge
    [1] => #db3636
    [2] => vert
    [3] => #2b7631
    )
    */

  5. #5
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 477
    Par défaut
    résolu !
    encore une erreur stupide de ma part
    comme ma fonction est lancée aussi pour une ligne de total, donc une ligne sans couple (nom;couleur), j'avais pas pensé au fait qu'il pouvait y avoir aucun ; , donc un $tab vide, donc un $nb=0 donc il fallait que j'évite pour traitement de rendu !!
    en visuel ,on comprens mieux, ya 2 espaces blanc quand il n'y a pas de couple "nom;couleur" :
    Nom : espace en trop.png
Affichages : 44
Taille : 18,4 Ko

    du coup, avant ma découpe du $tab j'ai rajouté une condition :

    if (strlen(strip_tags($chaine))>0 && (strpos($chaine, ';') !== false))....

    c'est clairement un bud d'effet de bord ;-) j'avais pensé à l'élément impaire de fin, mais pas pensé au cas de gauche quand ya rien dans le tableau !

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

Discussions similaires

  1. [TRIGGER] Une erreur que j'arrive pas à résoudre..
    Par Phobizeur dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 06/11/2016, 17h31
  2. Réponses: 1
    Dernier message: 29/01/2010, 09h33
  3. une erreur que je saisi pas
    Par gipfel11 dans le forum C
    Réponses: 4
    Dernier message: 06/03/2008, 23h07
  4. Une erreur que j'arrive pas a comprendre
    Par olifile dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/05/2007, 13h41
  5. Réponses: 2
    Dernier message: 09/06/2006, 14h38

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