Format de date en php

Résolu
Bonjour,

Voici mon dilemne :

Je crée un moteur de recherche qui me permet de trier des articles entre 2 dates.
dans mon php, j'ai :
<?php $date_debut = $_GET['date_debut']; ?>
<?php $date_fin = $_GET['date_fin']; ?>

et mon formulaire :

<td>
<input type="text" name="date_debut" />
<input type="button" value="Afficher le calendrier" onclick="displayCalendar(document.forms[0].date_debut,'yyyy.mm.dd',this)">
</td>
<td>
<input type="text" name="date_fin" />
<input type="button" value="Afficher le calendrier" onclick="displayCalendar(document.forms[0].date_fin,'yyyy.mm.dd',this)">
</td>

Mon problème est que je voudrais formater mes dates en français pour que le trie fonctionne et que cela s'affiche en français.

Quelqu'un à une idée ?

19 réponses

  1. Bonjour,

    tu peux faire une fonction qui change le format :

    function toChange($date) {
    $array_date = split('/',$date);
    $date_change = array_date[2].'/'.array_date[1].'/'.array_date[0];
    return $date_change;
    }
    1. tu l'a met au début de ton script php par exemple et ensuite tu l'applique sur les variables date que tu veux modifié :

      $date_debut; //ta date au format AAAA/MM/JJ
      toChange($date_debut); //ta date au format JJ/MM/AAAA
      1. C'est très gentil de m'aider, mais j'ai un soucis :

        J'ai fait comme ça :

        <?php

        function toChange($date)
        {
        $array_date = split('/',$date);
        $date_change = array_date[2]."/".array_date[1].'/'.array_date[0];
        return $date_change;
        }

        $date_debut = $_GET['date_debut'];
        $date_debut;
        toChange($date_debut);
        ?>

        <?php

        function toChange($date)
        {
        $array_date = split('/',$date);
        $date_change = array_date[2]."/".array_date[1].'/'.array_date[0];
        return $date_change;
        }

        $date_fin = $_GET['date_fin'];
        $date_fin;
        toChange($date_fin);
        ?>

        Dans mon HTML j'ai changé : document.forms[0].date_debut,'dd.mm.yyyy',this

        Mais à présent, j'ai :
        Parse error: syntax error, unexpected '[' in C:\Documents and Settings\..\..\..\..\..\..\public.php(190) : eval()'d code on line 55

        Je ne sais pas ce que c'est ???
        1. Attention à bien stocker la valeur de retour de la fonction, car elle ne change pas la valeur de ta variable, elle renvoi juste une nouvelle valeur.
          $date_changer = toChange($date_debut);
      2. C'est de ma faute je passe du C au php et j'oublie mes '$' ^^

        function toChange($date)
        {
        $array_date = split('/',$date);
        $date_change = $array_date[2]."/".$array_date[1].'/'.$array_date[0];
        return $date_change;
        }
        1. Donc, je fais comme ceci ? :

          <?php
          function toChange($date)
          {
          $array_date = split('/',$date);
          $date_change = $array_date[2]."/".$array_date[1].'/'.$array_date[0];
          return $date_change;
          }
          ?>

          <?php $date_debut = $_GET['date_debut'];
          $date_changer = toChange($date_debut);
          ?>

          <?php $date_fin = $_GET['date_fin'];
          $date_changer = toChange($date_fin);

          ?>

          Ca ne trie ni ne récupère mes articles et ne les affiche pas :(
          1. Oui la fonction est bien utilisé (pense juste à mettre deux nom différents pour tes variables finales : $date_debut_changer et $date_fin_changer, par exemple).
            Pour ton autre problème je ne connais ni le pourquoi et le comment donc je ne peut pas t'aider ^^
        2. Une autre idée :

          J'ai essayé avec une fonction et un onchange, pour laisser actifs mes champs, mais les cacher et afficher un leurre.
          Mais pas plus de résultats :(
          Peut-être est-ce ma syntaxe ???

          <?php
          function toChange($date)
          {
          $array_date = split('.',$date);
          $date_change = $array_date[2].".".$array_date[1].'.'.$array_date[0];
          return $date_change;
          }
          ?>

          <input type="hidden" name="date_debut" value="2010.01.01" onchange="toChange($this.value)"/>
          <input type="text" name="date_change" value="" />

          <input type="button" value="Afficher le calendrier" onclick="displayCalendar(document.forms[0].date_debut,'yyyy.mm.dd',this)">

          SVP un coup de main ???
          1. Les fonctions existent déjà... Il suffit d'y mettre les bons paramètres.

            MySQL:
            Fonction: DATE_FORMAT(date,format) à mettre dans ta requete SQL
            CTRL+F "DATE_FORMAT" sur cette page:
            http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html

            PhP:
            Fonction: date(format);
            https://www.php.net/manual/fr/function.date.php

            JavaScript:
            Fonction: date(format);
            https://www.commentcamarche.net/contents/571-javascript-l-objet-date

            Pour ton problème de onChange ou de onClick: si tu caches un élément comment veux-tu modifier sa valeur ou cliquer dessus?
            1. Je suis en php, mais si je met date(format), c'est ensuite mes articles qui ne sont plus lu et mon moteur de recherche qui ne fonctionne plus.
              Il faudrait vraiment (enfin je pense) un hidden, mais je ne sais pas comment l'utiliser :)
              1. Je finis dans une heure, et serait arriver chez moi d'ici 17h45.

                Je t'aiderais par MP.
                1. Pour te donner une idée, j'ai ceci :

                  <?php
                  function toChange($date)
                  {
                  $array_date = split('.',$date);
                  $date_change = $array_date[2].".".$array_date[1].'.'.$array_date[0];
                  return $date_change;
                  }
                  ?>

                  <input type="hidden" name="date_debut" value="2010.01.01" onchange="toChange(date_change)" />
                  <input type="text" name="01.01.2010"/>

                  <input type="button" value="Afficher le calendrier" onclick="displayCalendar(document.forms[0].date_debut,'yyyy.mm.dd',this)">

                  </td>

                  <td>
                  <input type="hidden" name="date_fin" value="2011.01.06" onchange="toChange(date_change)" />
                  <input type="text" name="06.01.2011"/>

                  <input type="button" value="Afficher le calendrier" onclick="displayCalendar(document.forms[0].date_fin,'yyyy.mm.dd',this)">

                  </td>

                  Le truc, c'est que mon moteur de recherche fonctionne (il trie bien mes articles), mais je voudrais que mon <input type="text" name="06.01.2011"/>
                  s'actualise en fonction du calendrier (!!!).

                  Je ne sais pas si je suis clair, car c'est difficile à expliquer comme ceci ;)
                  1. Désolé du retard je suis là.
                    Possibilité de voir ça sur MSN? envoie moi ton adresse par MP.
                    1. Je viens de me créer une adresse hotmail, mais je n'arrive pas à accéder à ton mail perso. Je suis derrière mon ordi si tu peux encore m'aider. Sinon dis-moi si tu es joignable demain, je ne voudrais pas te bloquer ta soirée :)
                      1. c'est pour sa que je t'ai dis de m'envoyé un message privé sur comment ça marche avec ton adresse hotmail. Je t'ajouterais. Sinon pour le shoraires, demain ce sera pareil, et je ne pense pas que cela prendra la soirée t'inquiète.
                      2. C'est fait tu l'as reçu ???
                    2. Et comment on fait ?
                      1. tu clic sur mon pseudo et une fois sur ma page tu clic sur message privé?
                    3. Akronos, est-ce que tu seras là demain matin ?

                      J'espère que tu pourras encore m'aider si gentiment.
                      Je pense que je ne suis pas loin (enfin j'espère), mais quand ça veux pas, ça veut pas ;)
                      1. Quelqu'un pourrai me débloquer, je n'ai toujours pas de solution à mon problème :(