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] Problème d'initialisation de tableau ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut [Tableaux] Problème d'initialisation de tableau ?
    Salut !

    J'ai un soucis. J'ai une fonction qui me permet de récupérer le nombre d'années qui se sont écoulées entre une date de début et une date de fin. Je récupère le nombre d'années ça il y a aucun problème mais j'obtiens des messages d'erreurs pénibles :

    Notice: Undefined offset: 1 in c:\program files\easyphp1-7\www\test\func.php on line 146

    Notice: Undefined offset: 2 in c:\program files\easyphp1-7\www\test\func.php on line 146

    Notice: Undefined offset: 1 in c:\program files\easyphp1-7\www\test\func.php on line 147

    Notice: Undefined offset: 2 in c:\program files\easyphp1-7\www\test\func.php on line 147
    Pour le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function NbJours($debut, $fin) 
       {
        $tDeb = explode("-", $debut);
        $tFin = explode("-", $fin);
     
        $diff = mktime(0, 0, 0, $tFin[1], $tFin[2], $tFin[0]) - 
                mktime(0, 0, 0, $tDeb[1], $tDeb[2], $tDeb[0]);
        $diff = (($diff / 86400)+1); 
        $nb_annees = $diff / 365;
     
        return $nb_annees;
       }
    Quelqu'un peut m'aider à corriger ce problème svp ?

    Merci d'avance...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 115
    Par défaut
    les dates que tu passent en paramètres sont sous quelle forme ? à priori le explode ne remplit pas les indices 1 et 2, le problème vient de là je pense, donc dépend du format des dates passées en paramètres : par exemple si tu passes en paramètre seulement l'année cette erreur est normale il suffit de modifier un peu le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function NbJours($debut, $fin) 
       {
        $tDeb = $debut;
        $tFin = $fin;
     
        $diff = mktime(0, 0, 0, 0, 0, $tFin) - 
                mktime(0, 0, 0, 0, 0, $tDeb);
        $diff = (($diff / 86400)+1); 
        $nb_annees = $diff / 365;
     
        return $nb_annees;
       }

  3. #3
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut
    Citation Envoyé par Odulo
    les dates que tu passent en paramètres sont sous quelle forme ? à priori le explode ne remplit pas les indices 1 et 2, le problème vient de là je pense, donc dépend du format des dates passées en paramètres : par exemple si tu passes en paramètre seulement l'année cette erreur est normale il suffit de modifier un peu le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function NbJours($debut, $fin) 
       {
        $tDeb = $debut;
        $tFin = $fin;
     
        $diff = mktime(0, 0, 0, 0, 0, $tFin) - 
                mktime(0, 0, 0, 0, 0, $tDeb);
        $diff = (($diff / 86400)+1); 
        $nb_annees = $diff / 365;
     
        return $nb_annees;
       }
    En fait j'ai modifié, je passais juste l'année mais en fait c'est mieux de passer la date complète, je la passe sous la forme AAAAMMJJ

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 115
    Par défaut
    donc c'est bon maintenant ? par AAAAMMJJ tu veux dire AAAA-MM-JJ ? si c'est le cas plus de problèmes je pense

  5. #5
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut
    Citation Envoyé par Odulo
    donc c'est bon maintenant ? par AAAAMMJJ tu veux dire AAAA-MM-JJ ? si c'est le cas plus de problèmes je pense
    Avec ma fonction ? Non j'ai toujours des problèmes oui c'est bien AAAA-MM-JJ

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Par défaut
    Tu dois avoir une erreur dans la chaîne que la fonction reçois en argument :o, car je viens d'essayer ceci rapidement sur un serveur local PHP 5 (easyphp) :

    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
     
    <?php
     
    function NbJours($debut, $fin) 
    {
        $tDeb = explode("-", $debut);
        $tFin = explode("-", $fin);
     
        $diff = mktime(0, 0, 0, $tFin[1], $tFin[2], $tFin[0]) - 
                mktime(0, 0, 0, $tDeb[1], $tDeb[2], $tDeb[0]);
        $diff = (($diff / 86400)+1); 
        $nb_annees = $diff / 365;
     
        return $nb_annees;
    }
     
    $test = NbJours( '2000-01-01', '2005-01-01' );
    var_dump($test); //Affiche : float(5.0082191780822).
    echo ( (int) $test); //Affiche : 5 
    ?>
    Donc 5 ans de différence ?? ^^ Tu dois bien avoir une erreur dans la chaîne de caractère envoyée en guise d'argument.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/02/2007, 20h02
  2. Réponses: 3
    Dernier message: 21/09/2006, 15h55
  3. Réponses: 9
    Dernier message: 11/08/2006, 21h58
  4. [Tableaux] Problème pour contrôler un tableau
    Par renaud26 dans le forum Langage
    Réponses: 5
    Dernier message: 10/04/2006, 11h45
  5. Problème d'initialisation variable tableau
    Par HeZiX dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2005, 16h30

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