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: Notice: Undefined offset: 01 in. situation incompréhensible


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut erreur: Notice: Undefined offset: 01 in. situation incompréhensible
    Bonjour à toutes et tous

    je crée un tableau pour enregistrer le nombre d'heure par mois de mes animateurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(!isset($nbh_anim_mois[$nom_animateur][$mem])){
    									$nbh_anim_mois[$nom_animateur][$mois_salaire]=0;
    								}
     
    								$nbh_anim_mois[$nom_animateur][$mois_salaire]+= $nb_h;
    quand le calcul est terminé tous les animateurs toutes les activités j'ai exactement dans le tableau pour le mois considéré le nombre d'heure de chaque animateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $quantieme_prevu = $nbh_anim_mois[$nom_animateur][($mois_salaire)]
    que j'affiche dans un tableau Html.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    				<td><input type ="text" name="quantieme_mois[]"id=<?php echo ($id_animateur."_quantieme_mois");?> value ='<?php echo ($quantieme_mois) ;?>' style="width:80px; text-align:right; border:0px;" ></td>
    Ceci fonctionne bien
    j'enregistre tout les Post du formulaire dans une base de donnée et ré-affiche le même formulaire
    l'enregistrement fonctionne bien.

    Je ré-affiche la même page donc en refaisant les calculs du nombre d'heure par mois de mes animateurs
    et là ça ne fonctionne plus j'ai un message d'erreur:
    Notice: Undefined offset: 01 in .....xxxx.php on line 402
    01 correspond au mois de janvier 01
    à cette ligne c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $quantieme_prevu = $nbh_anim_mois[$nom_animateur][($mois_salaire)]
    je vérifie les données juste avant la ligne d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    				echo "mois_salaire : ".$mois_salaire;echo'<br/>';
    				echo "type du  mois_salaire : ".gettype(($mois_salaire));echo'<br/>';
    				echo "quantième prevu : ".$quantieme_prevu = $nbh_anim_mois[$nom_animateur][($mois_salaire)];echo'<br/>';
    j'ai comme affichage:
    mois_salaire : 01
    type du mois_salaire : string

    Notice: Undefined index: 01 in ....xxxxx.php on line 402
    quantième prevu :
    peut être le type n'est pas bon, je recommence en changeant le type de mois_salaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    				echo "type du  mois_salaire : ".gettype(intval($mois_salaire));echo'<br/>';
    				echo "quantième prevu : ".$quantieme_prevu = $nbh_anim_mois[$nom_animateur][intval($mois_salaire)];echo'<br/>';
    résultat
    type du mois_salaire : integer

    Notice: Undefined offset: 1 in /home/www-gnf/MesFichiersWordPress/adherent/administration/heures_mois_animateurs.php on line 402
    quantième prevu :
    j'essaie en mettant directement mois salaire '01'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    				echo "quantième prevu '01' : ".$quantieme_prevu = $nbh_anim_mois[$nom_animateur][('01')];echo'<br/>';
    et j'obtiens
    quantième prevu '01' : 37.5
    la bonne valeur

    j'en perds mon latin !!!

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 563
    Par défaut
    Bonjour,

    Quel est le contenu du tableau $nbh_anim_mois[$nom_animateur] complet ?

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    Citation Envoyé par Toufik83 Voir le message
    Bonjour,

    Quel est le contenu du tableau $nbh_anim_mois[$nom_animateur] complet ?

    à la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    				 echo"<pre> nbh_anim_mois : "; print_r($nbh_anim_mois[$nom_animateur]);echo"<pre>";echo'<br/>';
    réponse
    nbh_anim_mois : Array
    (
    [09] => 42
    [10] => 31.5
    [11] => 40.25
    [12] => 22.75
    [01] => 42
    [02] => 21
    [03] => 48.75
    [04] => 21
    [05] => 45.25
    [06] => 33.25
    )

  4. #4
    Membre chevronné Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 341
    Par défaut
    Citation Envoyé par marco62118 Voir le message
    à cette ligne c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $quantieme_prevu = $nbh_anim_mois[$nom_animateur][($mois_salaire)]
    Pourquoi les parenthèses à [($mois_salaire)] ?

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    Citation Envoyé par ddaweb Voir le message
    Pourquoi les parenthèses à [($mois_salaire)] ?
    ce n'est qu'un reste mais ça change rien

  6. #6
    Membre chevronné Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 341
    Par défaut
    Est-ce qu'il y a une différence pour ton 01 ?
    Un string 01 et un chiffre 01 ?

    Dans votre code qui fonctionne c'est un string (oublions les parenthèses de trop) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "quantième prevu '01' : ".$quantieme_prevu = $nbh_anim_mois[$nom_animateur][('01')];echo'<br/>';
    Vous pouvez tester avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "quantième prevu '01' : ".$quantieme_prevu = $nbh_anim_mois[$nom_animateur][01];echo'<br/>';

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    non c'est pareille

    Notice: Undefined offset: 1 in /....xxxxxx.php on line 408
    quantième prevu 01 :

  8. #8
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    Merci à vous deux

    je viens de trouver l'incompréhensible !

    pour élaborer le tableau le mois est tiré d'une date d'une période.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    						$m = date('m',strtotime($jour_cour)); // $jour_cour est une date au format Y-m-d
    						echo "mois m : ".$m;echo'<br/>';  // affiche -> mois m : 01
    						echo "type du  m : ".gettype($m);echo'<br/>'; //affiche -> string
    et pour pouvoir sortir la valeur pour le mois en cours, le mois en cours est tiré du résultat d'un contrôle calendrier qui donne : 2023-01
    donc j’extrai le mois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		$mois_annee_salaire = ($_POST["mois_annee2"]); // 2023-01
    		echo "type du  mois_annee_salaire : ".gettype($mois_annee_salaire);echo'<br/>'; // string
     
    	$mois_salaire = (explode("-",$mois_annee_salaire))[1]; // 01
    	echo "type du  mois_salaire : ".gettype($mois_salaire);echo'<br/>'; // string
    et maintenant en extrayant la valeur du mois_salaire comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		echo "mois_annee_salaire ".$mois_annee_salaire;echo'<br/>'; // 2023-01
    		echo "strtotime(mois_annee_salaire) : ".strtotime($mois_annee_salaire);echo'<br/>'; //affiche -> strtotime(mois_annee_salaire) : 1672527600
    		echo "mois du strtotime(mois_annee_salaire) : ".date('m',strtotime($mois_annee_salaire));echo'<br/>'; // affiche -> mois du strtotime(mois_annee_salaire) : 01
    		$mois_salaire = date('m',strtotime($mois_annee_salaire));
    et maintenant il n'y a plus d'erreur
    ça me parait incroyable 01 string n'est pas égal à 01 string ????????

    je mettrais résolu après que vous m'ayez donné votre avis

  9. #9
    Membre chevronné Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 341
    Par défaut
    Citation Envoyé par marco62118 Voir le message
    non c'est pareille
    Ce qui veux bien dire que c'est un string dans votre tableau et non un nombre
    Il faudra uniformiser cela dans votre tableau et la recherche du mois : tous les 2 string ou nombre : '01' (string) est différent de 01 (nombre) dans le tableau, même si cela ressemble très fort !

    Citation Envoyé par marco62118 Voir le message
    et maintenant il n'y a plus d'erreur
    ça me parait incroyable 01 string n'est pas égal à 01 string ????????
    C'est bien uniformisé sur un string pour les 2 : donc la valeur est bien trouvée dans votre tableau

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

Discussions similaires

  1. Erreur php : "Notice: Undefined offset: 1"
    Par bobette16 dans le forum Langage
    Réponses: 3
    Dernier message: 08/04/2013, 10h44
  2. [MySQL] Erreur de programmation PHP & MySQL (Notice: Undefined offset: 890)
    Par petit.quent dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 29/12/2011, 15h38
  3. erreur: "Notice: Undefined offset:"
    Par Sh1v3r dans le forum Langage
    Réponses: 2
    Dernier message: 17/06/2006, 23h48
  4. Erreur de "Undefined offset"
    Par guy2004 dans le forum Langage
    Réponses: 8
    Dernier message: 16/10/2005, 13h48

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