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 :

Formater une date issue d'une variable


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 412
    Par défaut Formater une date issue d'une variable
    Bonjour,
    Je ne sais pas si ce que je vais vous demander est possible.

    J'affiche des noms et dates de naissance avec le code ci-dessous.
    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
     
     <?php
    include('../config.php');
    $select = '	SELECT nom, ddn, ddn_en FROM rh WHERE MONTH(ddn_en) = MONTH(CURRENT_DATE) ORDER BY ddn ASC';
     
     
    $result = $conn->query($select);
    $total = mysqli_num_rows($result);
     
     
    if($total) {
     
     
     
     
    while($row = mysqli_fetch_array($result)) {
     
     
    echo '<span>'.$row["nom"].'</span>'; 
    echo '<span> </span>'; 
    echo '<span style="color:#000cff; font-weight:bold">'.$row["ddn"].'</span>'; 
    echo '<br>'; 
    echo '<br>';
     
     
    }
    }
     
     
    mysqli_free_result($result);
     
     
    ?>
    Le résultat :

    Toto : 01 /05/1985
    Dada 28/05/1970

    J'aimerai que le format de la date à l'affichage soit un peu different du genre :

    Toto : 01 /05
    Dada 28/05

    ou

    Toto : 01 mai
    Dada 28 mai

    je sais pas ce qui est possible mais quoi qu'il en soit, à l'affichage, j'aimerai que l'année n'apparaisse pas

    Est-ce possible?

    Merci à vous

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 602
    Billets dans le blog
    10
    Par défaut
    bonjour,

    Les fonctions chaînes de caractères peuvent être différentes d'un SGBD à l'autre, mais ceci devrait fonctionner avec la plupart d'entre eux :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select NOM
         , concat(substring(cast(DDN as char(10)), 09, 02) 
                 ,substring(cast(DDN as char(10)), 05, 03)) as DDN
    from RH
    order by NOM

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 412
    Par défaut
    Merci escartefigue

    ton code m'à bien plu en prime abord mais il ne fonctionne pas

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 602
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par UDSP50 Voir le message
    Merci escartefigue

    ton code m'à bien plu en prime abord mais il ne fonctionne pas
    Je viens de le tester sous DB Fiddle avec MySQL 8.0, MariaDB 10.6, Postgres 15 et SQL server 2022 , ça fonctionne très bien.
    Un message d'erreur ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 412
    Par défaut
    Alors Séb je pige pas

    ton code à fonctionné mais la plus rien il réaffiche comme avant

    Là sérieux c'est trop chelou

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Avec DATE_FORMAT(), et en supposant que ddn_en est une colonne de type DATE :

    Toto : 01 /05
    Dada 28/05
    Avec des numériques :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT nom, ddn, ddn_en, DATE_FORMAT(ddn_en, '%d/%m') AS jour_mois
    FROM ...
    Toto : 01 mai
    Dada 28 mai
    Pour le mois en toute lettres selon la locale du serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT nom, ddn, ddn_en, DATE_FORMAT(ddn_en, '%d %M') AS jour_mois
    FROM ...
    https://dev.mysql.com/doc/refman/8.0...on_date-format

    Par ailleurs, tu ne devrais pas avoir 2 colonnes ddn et ddn_en,
    mais 1 colonne ddn au format DATE que tu formates ponctuellement au besoin

  7. #7
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Citation Envoyé par Séb. Voir le message
    en supposant que ddn_en est une colonne de type DATE
    Ta colonne ddn (ou ddn_en, au moins l'une des deux) est-elle oui ou non de type DATE?



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $total = mysqli_num_rows($result);
     
    if($total) {
        while($row = mysqli_fetch_array($result)) { //...
    Aussi, sauf si tu as un usage ultérieur de ta variable $total, mysqli_num_rows() n'est pas faite pour savoir si la requête renvoie des résultats, mais pour savoir combien il y en a.
    Pour savoir s'il y a des résultats, le premier fetch te l'indiquera de toute manière. D'ailleurs dans le cas présent tu peux trés bien écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $result = $conn->query($select);
    $rows = $result->fetch_all(MYSQLI_ASSOC);
     
    foreach($rows as $row) { //...
    S'il n'y a aucun résultat, la boucle foreach ne s'exécutera pas.

    Et si malgré ça, une envie irrépressible de connaître le nombre de résultats te prend => count($rows)

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 412
    Par défaut
    bonjour,

    ma date "ddn" est un format texte, pour des raisons de facilité, c'est une transformation de ma date "ddn_en"

    ma date"ddn_en" elle est au format date en anglais

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 412
    Par défaut
    voila ce que j'ai mis mais la date reste entière

    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
     
    include('../config.php');
    $select = "SELECT nom, ddn, ddn_en, DATE_FORMAT(ddn_en, '%m/%d') AS jour_mois FROM rh WHERE MONTH(ddn_en) = MONTH(CURRENT_DATE) ORDER BY ddn ASC";
     
     
    $result = $conn->query($select);
    $total = mysqli_num_rows($result);
     
     
    if($total) {
     
     
     
     
    while($row = mysqli_fetch_array($result)) {
     
     
    echo '<span>'.$row["nom"].'</span>'; 
    echo '<span> </span>'; 
    echo '<span style="color:#000cff; font-weight:bold">'.$row["ddn"].'</span>'; 
    echo '<br>'; 
    echo '<br>';

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

Discussions similaires

  1. [XL-2007] VBA: Formater une variable numérique
    Par kimou75 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/03/2016, 10h27
  2. Réponses: 2
    Dernier message: 29/04/2014, 17h12
  3. [Smarty] Formater une variable
    Par heldev dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 06/01/2012, 16h15
  4. Création d'une variable date au Format MMYYS7.
    Par MEGAMIND2 dans le forum SAS Base
    Réponses: 29
    Dernier message: 30/05/2011, 21h48
  5. Réponses: 6
    Dernier message: 14/02/2005, 11h53

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