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

PHP & Base de données Discussion :

Fonction Explode avec date [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut Fonction Explode avec date
    BOnjour, je dois séparer un champs date dans une base de donnée afin de pouvoir utiliser le mois, le jour et l'année séparément.
    Donc dans ma base, j'ai un champ date normal yyyy.mm.dd

    Et sur ma page php, je voudrais ressortir que le jour et le mois, j'utilise la fonction explode, est-ce judicieux? comment ressortir la variable a l'affichage :
    Fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?
    $date1 = $row_Recordset1['date'];
     
    $date_explosee = explode("/", $date1);
     
    $jour = $date_explosee[0];
    $mois = $date_explosee[1];
    $annee = $date_explosee[2];
    ?>
    Affichage du mois :

    merci de votre aide

  2. #2
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Bonjour,

    Ce n'est peut être pas le plus judicieux mais c'est ce que j'utilise.

    Je ne vois pas de problème particulier.
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  3. #3
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par jeromeb66 Voir le message
    BOnjour, je dois séparer un champs date dans une base de donnée afin de pouvoir utiliser le mois, le jour et l'année séparément.
    Donc dans ma base, j'ai un champ date normal yyyy.mm.dd

    Et sur ma page php, je voudrais ressortir que le jour et le mois, j'utilise la fonction explode, est-ce judicieux? comment ressortir la variable a l'affichage :
    Fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?
    $date1 = $row_Recordset1['date'];
     
    $date_explosee = explode("/", $date1);
     
    $jour = $date_explosee[0];
    $mois = $date_explosee[1];
    $annee = $date_explosee[2];
    ?>
    Affichage du mois :

    merci de votre aide
    Bonjour,

    Avant tout, ma première remarque est d'abandonner les shorts tags, c'est une pratique incorrecte qui doit disparaître. Une code php se balise ainsi
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    //ici je fais du bon code;
    ?>

    Ceci étant dit, l'utilisation de explode est très bien, mais pourquoi mélanger les séparateurs : si c'est un point en base, explosez la chaîne suivant le point.

    Et enfin, utilisez vos variables intermédiaires : vous les avez nommées judicieusement, ce serait dommage de se priver de cette clarté syntaxique.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    // nous pouvons nous permettre de condenser la première ligne.
    // préférez les simples quotes pour le séparateur
    // l'utilisation de la fonction list condense encore un peu le code sans perdre en lisibilité
    list($jour, $mois, $annee) = explode('.', $row_Recordset1['date']);
     
    // affichage du mois
    echo "nous sommes le mois de ". $mois;
    ?>

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    // nous pouvons nous permettre de condenser la première ligne.
    // préférez les simples quotes pour le séparateur
    // l'utilisation de la fonction list condense encore un peu le code sans perdre en lisibilité
    list($annee, $mois, $jour) = explode('.', $row_Recordset1['date']);
     
    // affichage du mois
    echo "nous sommes le mois de ". $mois;
    ?>
    Vous aurez compris qu'il fallait inverser deux variables, puisque la date viens de votre db (crf post 1 date = yyyy.mm.dd)

  5. #5
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    // nous pouvons nous permettre de condenser la première ligne.
    // préférez les simples quotes pour le séparateur
    // l'utilisation de la fonction list condense encore un peu le code sans perdre en lisibilité
    list($annee, $mois, $jour) = explode('.', $row_Recordset1['date']);
     
    // affichage du mois
    echo "nous sommes le mois de ". $mois;
    ?>
    Vous aurez compris qu'il fallait inverser deux variables, puisque la date viens de votre db (crf post 1 date = yyyy.mm.dd)
    oops

  6. #6
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut


    J'avais survolé le code et laisser passer le short tag et l'instanciation de variable qui ne sont pas utilisées xD

    Bon...

    Préfères la solution de JML94
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut suite
    merci de ces réponses, j'ai juste une erreur de sortie

    il me mets :


    Notice: Undefined offset: 2 in D:\www\test\test.php on line 67

    Notice: Undefined offset: 1 in D:\www\test\test.php on line 67

    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
    <?php
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
     
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    }
     
    mysql_select_db($database_test, $test);
    $query_Recordset1 = "SELECT * FROM concert_audition";
    $Recordset1 = mysql_query($query_Recordset1, $test) or die(mysql_error());
    $row_Recordset1 = mysql_fetch_assoc($Recordset1);
    $totalRows_Recordset1 = mysql_num_rows($Recordset1);
    ?>

    et pour afficher votre code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     <?php
    list($annee,$mois,$jour ) = explode('.', $row_Recordset1['date']);
    echo $mois;
    ?>

  8. #8
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par jeromeb66 Voir le message
    merci de ces réponses, j'ai juste une erreur de sortie

    il me mets :


    Notice: Undefined offset: 2 in D:\www\test\test.php on line 67

    Notice: Undefined offset: 1 in D:\www\test\test.php on line 67
    Je n'ai que survolé le reste du code, mais ceci me fait tout de suite croire que certaines dates sont incorrectes dans la base : soit le champ est vide, soit la date est mal formatée.

    Le champ vide peut être correct si cette colonne n'est pas obligatoire, auquel cas il faut d'abord tester.

    Pour le format, c'est une autre histoire.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut champs date
    mon champs date dans ma bd est bien en format DATE et NULL oui.. il devrait pouvoir la lire. Je n'ai pas encore formatée le champs date

  10. #10
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    En ce cas, il faut tester le vide et respecter le format DATE de MySQL

    Citation Envoyé par documentation MySQL
    Le type DATE est prévu lorsque vous souhaitez stocker une date. MySQL affiche les valeurs de type DATE au format ‘AAAA-MM-JJ’. L'intervalle de validité va de '1000-01-01' à '9999-12-31'.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    if ( trim($row_Recordset1['date']) )
        list($annee,$mois,$jour ) = explode('-', $row_Recordset1['date']);
    else {
        $annee = 0;
        $mois = 0;
        $jour = 0;
    }
    echo $mois;
    ?>

  11. #11
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    La colonne de type 'date' mysql permet :
    • '2008-01-01',
    • mais aussi '2008-01-00'
    • et '2008-00-00'

    Pourquoi ne pas faire cette extraction dans la requête ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      $sql = 'SELECT YEAR(colonneDate) as annee, 
                     DATE_FORMAT(colonneDate, \'%m\') as mois, 
                     DATE_FORMAT(colonneDate, \'%d\') as jour
              FROM  laTable';
    ou bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      $sql = 'SELECT YEAR(colonneDate) as annee, 
                     MONTH(colonneDate) as mois, 
                     DAY(colonneDate) as jour
              FROM  laTable';
    si le jour et mois sur 2 chiffres ne sont pas indispensables.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut Merci
    ca fonction bien avec le trim, merci je vais continuer mes css maintenant.....

    merci à tous

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/12/2012, 18h35
  2. [XL-2002] fonction SI avec date du jour
    Par polynesian turtle dans le forum Excel
    Réponses: 3
    Dernier message: 16/10/2009, 12h13
  3. fonction mid avec date
    Par ouioui_cmoi dans le forum Excel
    Réponses: 3
    Dernier message: 01/05/2008, 23h12
  4. [Dates] Bug avec ma fonction formatage de date
    Par groland dans le forum Langage
    Réponses: 6
    Dernier message: 14/03/2007, 15h24
  5. fonction explode avec excel
    Par wehtam dans le forum VBScript
    Réponses: 2
    Dernier message: 18/10/2006, 20h55

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