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 :

[Tableaux] Array et Undefined offset


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 192
    Points : 86
    Points
    86
    Par défaut [Tableaux] Array et Undefined offset
    Bonjour,

    Débutant en PHP, j'utilise une boucle dans laquel j'incrémente un tableau, mais je me retrouve avec cette érreur (qui serrait en rapport avec le tableau):

    Notice: Undefined offset: 1 in c:\program files\easyphp1-8\www\site\suivi_activite.php on line 99

    Notice: Undefined offset: 2 in c:\program files\easyphp1-8\www\site\suivi_activite.php on line 99

    Notice: Undefined offset: 3 in c:\program files\easyphp1-8\www\site\suivi_activite.php on line 99

    Notice: Undefined offset: 4 in c:\program files\easyphp1-8\www\site\suivi_activite.php on line 99

    Notice: Undefined offset: 5 in c:\program files\easyphp1-8\www\site\suivi_activite.php on line 99

    Notice: Undefined offset: 6 in c:\program files\easyphp1-8\www\site\suivi_activite.php on line 99
    pourtant a la fin je fais afficher le tableau dans ma page et le résultat s'affiche correctement.

    Voici la boucle en question (je suis obligé de commencer à 1):
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    $totmain = array();
     
    for($j=1;$j<=$nbr_mois_voulu+2;$j++)		
    						{
     
    						$nbr_main=0;
     
    	                                $nbr_main_sql = mysql_query("SELECT count( id_main ) AS nbr_main
    															FROM journal_main
    															WHERE date_res_jour_main
    															BETWEEN '$date_deb-01'
    															AND '$date_deb-31'
    															AND id_categ_main_jour_main = '$id_categ_main'
    															AND res_jour_main != ''");
     
     
     
    								$nbr_main_temp = mysql_fetch_array($nbr_main_sql);
     
    								//regroupement des maintenances dans tableau
    								$nbr_main = $nbr_main_temp['nbr_main'];
     
    								// total de maintenances par mois
     
    								$totmain[$j] += $nbr_main;
     
    									if ($nbr_main !="")
    											{
    												?><td class="maLigne"><?echo $nbr_main;?></td><?
    											}
    											else
    											{
    												?><td class="maLigne"><?echo "0";?></td><?
    											}
    							$date_deb = date("Y-m",mktime(0,0,0,date("m")-$nbr_mois_voulu+$j,0,date("Y")));
    						}?>
    Merci pour votre aide

  2. #2
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    c'est laquelle la ligne 99 du fichier suivi_activite.php?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Salut,

    En faisant comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $totmain[$j] += $nbr_main;
    je pense que tu utilises la valeur de $totmain[$j], alors qu'elle n'existe pas, essaie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $totmain[$j] = $nbr_main;
    ou alors tu dois initialiser tous tes $totmain[$j] avant la boucle

    a+

  4. #4
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Encore plus simple :

    <?php
    $totmain
    []&#160;=&#160;$nbr_main&#160;;
    ?>

    Phpsyntaxcolor powered by decabodi.com
    L'indéxation est implicite alors profitons-en.
    Consultant idéaliste.

  5. #5
    Membre confirmé Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Points : 464
    Points
    464
    Par défaut
    ton probleme est dans cette instriction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $totmain[$j] += $nbr_main;
    si on fait x += 1 => x= x+1 : x doit avoir une valeure et pour cela tu doix initialiser ton tableau:

    _____________________
    Il n'y a pas de choses urgentes, il n'y a que des choses en retard

  6. #6
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Je persiste :


    <?php
    $totmain
    [] = $nbr_main ;
    ?>

    Phpsyntaxcolor powered by decabodi.com
    Inutile d'initialiser, c'est une implémentation qu'il faut là. A moins qu'une subtilité m'ait échappée ?
    Consultant idéaliste.

  7. #7
    Membre confirmé Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Points : 464
    Points
    464
    Par défaut
    richton95 a dit
    Voici la boucle en question (je suis obligé de commencer à 1):
    et avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php 
    $totmain[] = $nbr_main ; 
    ?>
    il va commencer avec 0

    _____________________
    Il n'y a pas de choses urgentes, il n'y a que des choses en retard

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 192
    Points : 86
    Points
    86
    Par défaut
    Déja merci pour ces réponses!

    mais en fait ce que je dois faire (c'est vrai que je vous ai pas mis tout le code) c'est que cette boucle est imbriqué dans une autre boucle while cad
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while ( qqch)
    {
     for(i=0;i<=4;i++)
     
          tab = tab + nbr_main;
    }
    donc a chasques fois que je repasse a l'indice du tableau je dois incrémenter de ce qui était déja dedans
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    tab[] = tab[] + nbr_main;
    bah ca marche po (avec ou sans indice)
    par contre j'ai éssayé et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    tab[] =  nbr_main;
    ça marche... mais c'est pas ce que je recherche , donc si kkn d'autre a une idée
    Merci

  9. #9
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Bah dans ce cas...
    Consultant idéaliste.

  10. #10
    Membre confirmé Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Points : 464
    Points
    464
    Par défaut
    pour cela tu doix initialiser ton tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for($i=1;$i<= ...;$i++) 
        $totmain[$i] = 0;

    _____________________
    Il n'y a pas de choses urgentes, il n'y a que des choses en retard

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 192
    Points : 86
    Points
    86
    Par défaut
    nikel ca marche

    Marchi bcp

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/05/2015, 19h55
  2. [Tableaux] Probleme de syntaxe: Undefined offset:
    Par defacta dans le forum Langage
    Réponses: 1
    Dernier message: 25/09/2007, 12h16
  3. [Tableaux] Notice: Undefined offset: 5 in
    Par fast462 dans le forum Langage
    Réponses: 3
    Dernier message: 30/05/2007, 10h08
  4. [Tableaux] AroundMe : Undefined offset
    Par tiboleo dans le forum Langage
    Réponses: 6
    Dernier message: 18/05/2007, 10h46
  5. [Tableaux] Cannot use string offset as an array ?
    Par haffouff dans le forum Langage
    Réponses: 12
    Dernier message: 21/07/2006, 15h27

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