begin process at 2012 05 28 13:57:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

bug dans fonction simple


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

bug dans fonction simple

lundi 18 janvier 2010 à 10:27:25 | bug dans fonction simple

enibib

Bonjour,

J'ai un petit soucis avec une fonctions que j'ai créé.

Cette fonction me permet de traduire une date stocké en BDD en date "lisible"

Mon format en base : 20101010 AAAAMMJJ

Mon format "lisible" : 10 Octobre 2010

Le problème c'est que pour le mois de Septembre et d'aout ma fonction affiche un 09 ou un 08 à la place d'un Septembre ou d'un Aout.

Voici ma fonction:

Code PHP :
    <?php

    function base_to_date($date)
    {
    //format date dentree -> 20101231
    $date_jour = substr($date, -2);
    $date_annee = substr($date, 0, -4);
    $date_mois = substr($date, -4, -2);

    switch($date_mois)
    {
    case 01: $date_mois = "Janvier"; break;
    case 02: $date_mois = "Février"; break;
    case 03: $date_mois = "Mars"; break;
    case 04: $date_mois = "Avril"; break;
    case 05: $date_mois = "Mai"; break;
    case 06: $date_mois = "Juin"; break;
    case 07: $date_mois = "Juillet"; break;
    case 08: $date_mois = "Août"; break;
    case 09: $date_mois = "Septembre"; break;
    case 10: $date_mois = "Octobre"; break;
    case 11: $date_mois = "Novembre"; break;
    case 12: $date_mois = "Décembre"; break;
    }

    //format sortie -> 31 Décembre 2010
    return $date = $date_jour." ".$date_mois." ".$date_annee;
    }

    echo base_to_date("20091009");

    ?>
lundi 18 janvier 2010 à 10:46:45 | Re : bug dans fonction simple

syndrael

Tu es en PHP4 ou >= 5.2.9 ? Si c'est 5.2.9 (ou 5.2.6, je ne sais plus), tu peux utiliser directement l'objet DateTime. Et 5.3 c'est Byzance car tu peux créer au format désiré.
S.
lundi 18 janvier 2010 à 11:11:33 | Re : bug dans fonction simple

Tonio_35

Hello,

J'ai testé, chez moi j'ai le même problème. Je ne le comprends pas et donc je ne pourrais pas te dire pourquoi cela ne fonctionne pas. Celas-dis, j'ai résolu le problème en castant mon mois en INT :
Code PHP :
<?php
//........
    $date_mois = (int)substr($date, -4, -2);
    switch($date_mois)
    {
        case 1: $date_mois = "Janvier"; break;
        case 2: $date_mois = "Février"; break;
        case 3: $date_mois = "Mars"; break;
        case 4: $date_mois = "Avril"; break;
        case 5: $date_mois = "Mai"; break;
        case 6: $date_mois = "Juin"; break;
        case 7: $date_mois = "Juillet"; break;
        case 8: $date_mois = "Août"; break;
        case 9: $date_mois = "Septembre"; break;
        case 10: $date_mois = "Octobre"; break;
        case 11: $date_mois = "Novembre"; break;
        case 12: $date_mois = "Décembre"; break;
    }
//........
?>

La ca fonctionne. Du coup ca doit être un problème de typage de données... Par contre ce que t'as dit syndrael est mieux...
_________________________________
Min iPomme
lundi 18 janvier 2010 à 11:22:46 | Re : bug dans fonction simple

syndrael

Réponse acceptée !
La solude aurait été:
Code PHP :
switch($date_mois)
    {
    case '01': $date_mois = "Janvier"; break;
    case '02': $date_mois = "Février"; break;...

Mais autant chercher une meilleure méthode au lieu de ré-inventé l'eau chaude.
S.
mardi 19 janvier 2010 à 11:30:35 | Re : bug dans fonction simple

enibib

Le problème venait du fait que les nombres commençant par un 0 sont sont considérés comme des nombres en octal. Or, les chiffres 8 et 9 n'existent pas dans cette base.

J'ai essayé de mettre des guillemets autour des tes nombres (ex: case "08") et ça marche.

Merci de votre aide.


Cette discussion est classée dans : fonction, date, case, break, mois


Répondre à ce message

Sujets en rapport avec ce message

Ca marchait, ça marche pu :'( [ par Inekman ] Bonjour à tous,J'ai écris une fonction qui renvoie une date avec 2 affichages possible en fonction du paramètre donné à la fonction.La fonction, la vo Livre d'or [ par GillesWebmaster ] Salut à tous j'ai un prob avec mon livre d'or:je vous mets les fichiers ce serait sympa de jetter un oeil...------------------------------------------ date et heure en 3 étages [ par piteur30 ] Bonjour voici un script d'affichage de l'heure et la date serveuril affiche le tout sur 2  étages mais j'aimerai qu'il affiche sur 3 étagesexemplela i Fonction : date() [ par sebalex ] Bonjour à tous et bonne année. Voici mon problème : J'ai la ligne de code suivante : if((date('m') + 3) > 12) {$MOIS = (date('m') + 3) - 12;}else{$MO Rafraichire tous un code php toute les 10 seconde [ par rxx941 ] Bonjour, Je cherche un moyen de rafraichir ce code php d'un module xoops mais je ne connais pas le moyen d'y arriver. on ma proposer ce code mais sa récupérer des données sur un mois, array des jours occupés [ par 555clR ] Bonsoir ! J'ai deux problèmes auxquels je ne trouve pas de solution : 1/ Le premier se trouve dans ma requête... Je vous dresse le décor: - Une tabl Recuperation date et horaire selon le case cocher [ par hafaliana ] Bonjour, J'ai le formulaire dynamique suivant : "> <table width="600" border="1" cellspacing="0" cellpadd Problème disabled [ par naroco ] bonjour je créé un formulaire de collecte d'heures. je propose au collecteur la date du jour ou une autre date via un bouton radio. s'il s'agit d'une Calendrier [ par faabulous ] Bonsoir ! J'ai, à l'aide d'un livre acheté, essayé de coder un calendrier. J'avais plusieurs erreurs, donc j'ai recopié à la lettre le code du livre switch case en php [ par vishwas ] hafsa_rani[^^clinoeil3] salut tout le monde Aujourd'hui j'ai besoin de votre aide j'aime que quelqu'un peut m'aider rapidement, J'ai un cas ou il faut


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales