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 :

[Dates] Undefined variable sur une fonction


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2006
    Messages : 158
    Points : 57
    Points
    57
    Par défaut [Dates] Undefined variable sur une fonction
    Bonjour,
    j'utilise 2 fonctions en php pour formater les dates sur mon site depuis une bdd sql. (sachant que dans celle-ci le format est AAAA-MM-JJ)

    Fonction permettant de convertir une date JJ/MM/AAAA en format AAAA-MM-JJ sur cette fonction à l'affichage de ma page j'ai un message d'erreur
    Notice: Undefined variable: tmp_final_date in c:\logiciel\easyphp1-7.2\www\xxx\fonction_php.php on line 23 je ne comprends pas pourquoi vu que ce n'est pas une valeur null au final...

    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
    <? 
    // passer la date en question en paramètre 
    function transform_date_to_mysql_date($date_origine){ 
     
    // exploser la date dans un tableau en fonction du motif '/' 
    $tmpdate = explode( "/", $date_origine); 
     
    // on surf le tableau dans l'ordre inverse en admetant que l'année est toujours à la fin
    for($i=(count($tmpdate)-1);$i>=0;$i--) 
    { 
     
    // si la valeur est d'un seul chiffre ça rajoute un 0 devant (utile pour les mois ou les jours d'un chiffre) 
    if(strlen($tmpdate[$i])<2) 
    $tmpdate[$i] = "0".$tmpdate[$i]; 
     
    // on met tout ca dans $tmp_final_date 
    $tmp_final_date .= $tmpdate[$i]; 
     
    // si on passe un rang on place les séparateurs '-' cher à MySQL 
    // mais pas au dernier rang (0) 
    if($i>0) 
    $tmp_final_date .= "-"; 
    } 
     
    // enfin retourner le résultat 
    return $tmp_final_date; 
    } 
    echo transform_date_to_mysql_date($date); 
    ?>

    J'ai le même message pour l'inverse de la fonction
    Undefined variable: tmp_final_date in c:\logiciel\easyphp1-7.2\www\xxx\fonction_php.php on line 49

    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
    <? 
    // passer la date en question en paramètre 
    function transform_mysql_date_to_french_date($date_origine){ 
     
    // exploser la date dans un tableau en fonction du motif '-' 
    $tmpdate = explode( "-", $date_origine); 
     
    // on surffe le tableau dans l'ordre invèrse car l'année est toujours au début et le jour à la fin 
    for($i=(count($tmpdate)-1);$i>=0;$i--) 
    { 
     
    // on met tout ça dans $tmp_final_date 
    $tmp_final_date .= $tmpdate[$i]; 
     
    // si on passe un rang on place les séparateurs '/' 
    if($i>0) 
    $tmp_final_date .= "/"; 
    } 
    return $tmp_final_date; 
    } 
    echo transform_mysql_date_to_french_date($date); 
    ?>
    ça peut venir d'où ?
    Merci d'avance

  2. #2
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    ta variable tmp_final_date n'est pas déclarée avant la boucle.
    Ajoute $tmp_final_date='' au début de ta fonction, ou désactive les erreur de type E_NOTICE.

  3. #3
    Membre à l'essai
    Profil pro
    aaaa
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aaaa

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Points : 21
    Points
    21
    Par défaut
    Bonjour à toi,

    Je pense que ça vient du fait que tu fais un ".=" alors que ta variable n'est pas déclarée au sein de ta fonction.

    3 solutions :

    Soit ta variable $tmp_final_date n'existe pas et tu peux mettre $tmp_final_date = "" au début de ta fonction.

    Soit tu affectes la valeur à $tmp_final_date en faisant $tmp_final_date = $tmpdate[$i];

    Soit ta variable $tmp_final_date exite déjà en dehors de ta fonction et pour garder sa valeur tu dois mettre global $tmp_final_date; au début de ta fonction.

    J'espère que ça te conviendra

  4. #4
    Membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2006
    Messages : 158
    Points : 57
    Points
    57
    Par défaut
    Si je mets un = à la place de .= ma date m'affiche 1984 au lieu de 04/06/1984

    Juste une question à quoi sert le .= ?

    Rah j'avais déclaré également les variables mais j'avais fait =" " au lieu de =""....

    ça fonctionne niquel là !
    Merci bien pour le coup de main

  5. #5
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    le .= permet d'éviter d'écrire $variable= $variable."blabla";
    En d'autres termes, ça te concatène la chaine de la partie droite de l'opération à la variable. +=, -=, /=, etc existent aussi.

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

Discussions similaires

  1. [MySQL] undefined variable sur une requête
    Par Seferight dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 03/06/2012, 16h05
  2. Réponses: 3
    Dernier message: 16/03/2011, 11h11
  3. Réponses: 3
    Dernier message: 22/09/2009, 21h34
  4. [POO] Bug sur une fonction récursive : renvoit undefined
    Par zaboug dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/06/2008, 14h10
  5. Réponses: 2
    Dernier message: 18/06/2007, 15h29

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