Partage
  • Partager sur Facebook
  • Partager sur Twitter

Changer format date

Sujet résolu
    9 mars 2021 à 0:18:19

    J'ai suivi le tutoriel et ajouté l'extension mais le message d'erreur reste le même
    • Partager sur Facebook
    • Partager sur Twitter
      9 mars 2021 à 8:24:14

      Peut-être que ce n'est pas possible avec la version gratuite, je n'ai pas pris le temps de regarder si c'était précisé dans la page.

      C'est une extension incluse dans PHP, tu ne devrais pas avoir à télécharger un fichier, si jamais.

      -
      Edité par Ymox 9 mars 2021 à 8:28:14

      • Partager sur Facebook
      • Partager sur Twitter
        9 mars 2021 à 11:58:57

        Oui c’est ce que j’avais cru comprendre qu’elle était incluse dans php, je ne pense pas que ça pose problème avec la version gratuite car ça me valide bien l’extension.

        S’il n’y a pas d’autres solutions je vais faire avec strotime, tu me confirmes qu’il n’y a pas de traductions possibles ?

        • Partager sur Facebook
        • Partager sur Twitter
          9 mars 2021 à 12:48:59

          Jeicko a écrit:

          […} ça me valide bien l’extension […]

          Tu peux préciser ce que tu entends par là ? Tu vois bien intl dans le phpinfo ?

          • Partager sur Facebook
          • Partager sur Twitter
            9 mars 2021 à 14:05:08

            Oui Je vois bien intl dans le php info, je te mets une capture d'écran voir si on parle de la même chose :

            Le nouveau message d'erreur : 

            intl dans le phpinfo :

            -
            Edité par Jokoa 9 mars 2021 à 14:13:12

            • Partager sur Facebook
            • Partager sur Twitter
              9 mars 2021 à 15:27:04

              Ah effectivement, c'est un autre souci, très clair d'ailleurs.

              L'exemple mentionnait 3 paramètres, mais si tu ne veux rien pour le temps, il faut mettre IntlDateFormatter::NONE dans le troisième, et non pas rien.

              • Partager sur Facebook
              • Partager sur Twitter
                9 mars 2021 à 18:05:06

                Je veux le temps mais pas les secondes, bref c'est un détail pour le moment, j'aimerais déjà que ça fonctionne.

                Si je suis ton exemple sur la FAQ PHP je vois 2 paramètres : 

                IntlDateFormatter::FULL,
                    IntlDateFormatter::NONE

                Je viens de mettre ça à l'identique pour faire un test et j'ai cette erreur

                Recoverable fatal error: Object of class IntlDateFormatter could not be converted to string in /home/prenoms-bebe/www/fetch_comment.php on line 65

                De plus je ne suis même pas sûr de pouvoir mettre le format que je souhaite "08 Mars 2021 à 18h02", Je ne vois rien de similaire dans les constantes prés définies, bon après je ne suis pas hyper doué en anglais je les testerai toutes si ça veut bien marcher.

                -
                Edité par Jokoa 9 mars 2021 à 18:05:26

                • Partager sur Facebook
                • Partager sur Twitter
                  9 mars 2021 à 22:59:26

                  Alors il y a bien moyen d'avoir exactement le format que tu souhaites, mais c'est le sixième paramètre, et ce n'est pas la même chose que pour le format de la fonction date(), ce serait trop simple. Par contre, la documentation semble avoir changé depuis que je l'ai consultée.
                  Dans un premier temps, tu peux jouer avec les différentes constantes de IntlDateFormatter à savoir IntlDateFormatter::FULL, IntlDateFormatter::LONG, IntlDateFormatter::MEDIUM et IntlDateFormatter::SHORT, pour la date et pour l'heure (les deuxième et troisième paramètres). Note que si tu spécifies une locale plutôt que juste une langue (fr_FR plutôt que fr) comme premier paramètre, le résultat peut être légèrement différent.

                  L'erreur, en fait, te dit qu'il manque quelque chose : l'équivalent de la ligne 15 du premier code d'ici ou de la ligne 8 du code de la FAQ PHP. Ajoute des parenthèses autour de ce qu'il y a à droite du signe =, mais sans prendre le point-virgule ;, et complète avec ce qu'il manque.
                  Il faut comprendre ici que tu construis un objet pour formater des dates, et qu'il faut donc appliquer la méthode de formatage à une date. Adapter le code aux noms de tes variables devrait t'être possible.

                  Par contre, je te conseille de prendre le temps de regarder la documentation (qui existe en français) de PHP. C'est un des langages dont la documentation est claire et bien fournie, et en plus traduite : cela fait autant de raisons de ne pas la négliger.

                  -
                  Edité par Ymox 9 mars 2021 à 23:00:10

                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 mars 2021 à 0:55:40

                    Ok, pour l'instant je me concentre sur l'erreur, je verrai après pour le format. J'ai donc suivi ce que tu m'as expliqué, une petite lueur d'espoir car je vois une date formatée mais j'ai toujours une erreur :

                    lundi 8 mars 2021 à 15:20:49 heure normale d’Europe centrale
                    Recoverable fatal error: Object of class IntlDateFormatter could not be converted to string in /home/prenoms-bebe/www/fetch_comment.php on line 65
                    foreach ($result as $row) {
                            $date = new \DateTime($row["date"]); // cf. ma remarque pour créer une date depuis la base de données
                            $formatedDate = (new IntlDateFormatter( 'fr_FR', IntlDateFormatter::FULL, IntlDateFormatter::FULL)); echo $formatedDate->format($date); // cf. la FAQ PHP
                            $output .= '
                            <div class="separator"</div>
                            <div class="box-light" style="margin-left:'.$marginleft.'px">
                            <div class="chapeau">@ <b>'.$row["comment_sender_name"].'</b></div><div class="white"><i>'. $formatedDate .'</i></div>
                             <div class="texte-com">'.$row["comment"].'</div>
                             <div class="reponse"><button type="button" class="reply" id="'.$row["comment_id"].'">Répondre</button></div>
                            </div>
                            ';
                       $output .= get_reply_comment($connect, $row["comment_id"], $marginleft);
                      }
                     }
                     return $output;
                    }

                     Qu'ai-je encore fait de travers

                    EDIT : 

                    J'ai essayé de modifier de cette manière la ligne concernée

                    <div class="chapeau">@ <b>'.$row["comment_sender_name"].'</b></div><div class="white"><i>'. $formatedDate->format($date) .'</i></div>


                     et l'erreur a disparu mais toutes les dates de mes commentaires sont dupliquées à la place du message d'erreur : 

                    -
                    Edité par Jokoa 10 mars 2021 à 1:25:43

                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 mars 2021 à 8:13:33

                      Un peu de logique : tu as ajouté un echo après le point-virgule. Que fait echo ?
                      Supprime exactement ; echo $formatedDate ligne 3.

                      Il te manque encore des notions de syntaxe du langage, notamment au niveau orienté objet. Je te conseille de te renseigner un peu avant de continuer. Si tu ne comprends pas la logique du code au niveau de sa structure (comme j'ai l'impression que c'est le cas ici), tu vas avoir de la peine à continuer.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 mars 2021 à 10:51:23

                        Merci, avant que j'attaque le format de la date, une dernière question concernant les erreurs que j'ai. Actuellement je n'en n'ai plus à part que je ne peux plus poster de message. On est d'accord que mon tout premier essai dans add_ comment je peux le virer ? car je l'avais laissé de côté et c'est bien ce bout de code qui m'empêche de poster des nouveaux messages (je pense connaitre la réponse mais bon..) :

                        add_comment

                        $now = new DateTime();
                        $metteurEnForme = new IntlDateFormatter(
                            'fr',
                            IntlDateFormatter::FULL,
                            IntlDateFormatter::NONE
                        );
                        echo $metteurEnForme->format($now);


                        Du coup si je supprime ce code dans add_comment et que je duplique le code fonctionnel pour "les réponses" aux messages dans fetch_comment, tout fonctionne ce qui donne : 

                        fetch_comment

                        <?php
                        
                        //fetch_comment.php
                        
                        $connect = new PDO('');
                        
                        $query = "
                        SELECT * FROM tbl_comment 
                        WHERE parent_comment_id = '0' 
                        ORDER BY comment_id DESC
                        ";
                        
                        $statement = $connect->prepare($query);
                        
                        $statement->execute();
                        
                        $result = $statement->fetchAll();
                        $output = '';
                        foreach ($result as $row) {
                            $date = new \DateTime($row["date"]); // cf. ma remarque pour créer une date depuis la base de données
                            $formatedDate = (new IntlDateFormatter( 'fr_FR', IntlDateFormatter::FULL, IntlDateFormatter::FULL)); // cf. la FAQ PHP
                            $output .= '
                         <div class="separator"</div>
                         <div class="box-light">
                          <div class="chapeau">@ <b>'.$row["comment_sender_name"].'</b></div><div class="white"><i>'.$formatedDate->format($date).'</i></div>
                          <div class="texte-com">'.$row["comment"].'</div>
                          <div class="repondre"><button type="button" class="reply" id="'.$row["comment_id"].'">Répondre</button></div>
                         </div>
                         ';
                        
                        
                         
                         $output .= get_reply_comment($connect, $row["comment_id"]);
                        }
                        
                        echo $output;
                        
                        function get_reply_comment($connect, $parent_id = 0, $marginleft = 0)
                        {
                         $query = "
                         SELECT * FROM tbl_comment WHERE parent_comment_id = '".$parent_id."'
                         ";
                         $output = '';
                         $statement = $connect->prepare($query);
                         $statement->execute();
                         $result = $statement->fetchAll();
                         $count = $statement->rowCount();
                         if($parent_id == 0)
                         {
                          $marginleft = 0;
                         }
                         else
                         {
                          $marginleft = $marginleft + 5;
                         }
                         if($count > 0)
                         {
                        
                        
                            foreach ($result as $row) {
                                $date = new \DateTime($row["date"]); // cf. ma remarque pour créer une date depuis la base de données
                                $formatedDate = (new IntlDateFormatter( 'fr_FR', IntlDateFormatter::FULL, IntlDateFormatter::FULL)); // cf. la FAQ PHP
                                $output .= '
                                <div class="separator"</div>
                                <div class="box-light" style="margin-left:'.$marginleft.'px">
                                <div class="chapeau">@ <b>'.$row["comment_sender_name"].'</b></div><div class="white"><i>'.$formatedDate->format($date).'</i></div>
                                 <div class="texte-com">'.$row["comment"].'</div>
                                 <div class="reponse"><button type="button" class="reply" id="'.$row["comment_id"].'">Répondre</button></div>
                                </div>
                                ';
                           $output .= get_reply_comment($connect, $row["comment_id"], $marginleft);
                          }
                         }
                         return $output;
                        }
                        
                        
                        
                        
                        
                        
                        ?>
                        



                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 mars 2021 à 11:17:28

                          Pour être honnête, je ne sais même pas pourquoi tu affichais la date dans add_comment.php dans la toute première version…

                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 mars 2021 à 12:57:04

                            Pour le format de la date je n'ai pas rencontré de problèmes ce fut très simple : 
                             $formatedDate = (new IntlDateFormatter( 'fr_FR', IntlDateFormatter::LONG, IntlDateFormatter::SHORT));

                            Ce qui correspond à "10 mars 2021 à 12:50"

                            Voilà tout est ok.

                            Je te remercie pour ton aide et surtout pour ta patience face à mon amateurisme !

                            Un grand merci, je passe le sujet en résolu.

                            -
                            Edité par Jokoa 10 mars 2021 à 13:04:34

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Changer format date

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown