Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de timestamp

Dans des news...

Sujet résolu
    30 août 2006 à 20:25:48

    Bonjour,
    en suivant les cours de mateo, j'avais fait un petit truc pour afficher les news sur mon site. Je les créais directement sur phpmyadmin, donc je n'avais pas besoin de timestamp.

    Or, j'ai voulu qu'on puisse créer, gérer les news directement sur le site. J'ai donc suivi le tuto de mateo, mais j'ai un problème...

    La date affichée est le premier Janvier 1970, même quand je créé une news sur le site. Et pour courroner le tout, si je créé une news en passant par le site, le contenu n'est pas bon ! Au lieu d'afficher du texte, il affiche des numéros...

    Voici le code qui affiche les news :
    <?php
    mysql_connect("localhost", "******", "******"); // Connexion à MySQL
    mysql_select_db("sablebasket"); // Sélection de la base de données

    $reponse = mysql_query("SELECT * FROM news ORDER by id DESC LIMIT 0, 5"); // Requête SQL

    // On fait une boucle pour lister tout ce que contient la table

    while ($donnees = mysql_fetch_array($reponse) )
    {
    ?>

    <div class="bloc_news">
        <h5>
            <?php echo $donnees['titre']; ?>
            <em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?></em>
       </h5>
        <p>
        <?php
        // On enlève les éventuels antislash PUIS on crée les entrées en HTML (<br />)
        $contenu = nl2br(stripslashes($donnees['contenu']));
        echo $contenu;
        ?>
        </p>
    </div>
    <br /><br />
    <?php
    } // Fin de la boucle des news
    ?>


    <?php

    // On met dans une variable le nombre de messages qu'on veut par page
    $nombreDeMessagesParPage = 5;

    // On récupère le nombre total de messages
    $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM news');
    $donnees = mysql_fetch_array($retour);
    $totalDesMessages = $donnees['nb_messages'];

    // On calcule le nombre de pages à créer
    $nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);

    // Puis on fait une boucle pour écrire les liens vers chacune des pages
    echo '<br />Page : ';
    for ($i = 1 ; $i <= $nombreDePages ; $i++)
    {
    echo '<a href="index.php?page=' . $i . '">' . $i . '</a> ';
    }
    ?>

    <?php
    if (isset($_GET['page']))
    {
    $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse
    }
    else // La variable n'existe pas, c'est la première fois qu'on charge la page
    {
    $page = 1;
    }

    mysql_close(); // Déconnexion de MySQL
    ?>


    S'il vous faut d'autres codes, je les mettrai après.
    Merci.
    • Partager sur Facebook
    • Partager sur Twitter
      30 août 2006 à 21:02:08

      Faudrait voir le code que t'utilises pour envoyer les données.
      Et il faut que tu regardes dans phpmyadmin ce que affiche le champ timestamp.
      • Partager sur Facebook
      • Partager sur Twitter
        30 août 2006 à 21:10:29

        Voici le code de la page d'aministration des news :
        <?php
        mysql_connect("localhost", "******", "******");
        mysql_select_db("sablebasket");

        //-----------------------------------------------------
        // Vérification 1 : est-ce qu'on veut poster une news ?
        //-----------------------------------------------------

        if (isset($_POST['titre']) AND isset($_POST['contenu']))
        {
            $titre = addslashes($_POST['titre']);
            $contenu = addslashes($_POST['contenu']);
            // On vérifie si c'est une modification de news ou pas
            if ($_POST['id_news'] == 0)
            {
                // Ce n'est pas une modification, on crée une nouvelle entrée dans la table
                mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" . $contenu . "', '" . time() . "')");
            }
            else
            {
                // C'est une modification, on met juste à jour le titre et le contenu
                mysql_query("UPDATE news SET titre='" . $titre . "', contenu='" . $contenu . "' WHERE id=" . $_POST['id_news']);
            }
        }


        //--------------------------------------------------------
        // Vérification 2 : est-ce qu'on veut supprimer une news ?
        //--------------------------------------------------------

        if (isset($_GET['supprimer_news'])) // Si on demande de supprimer une news
        {
            // Alors on supprime la news correspondante
            mysql_query('DELETE FROM news WHERE id=' . $_GET['supprimer_news']);
        }
        ?>

        <p>Si vous voulez supprimer une news d'une autre personne, j'aimerais être prévenu.</p>
        <p>Si cela ne vous dérange pas, j'aimerais aussi que chaque news soit signée (au moins ce sera clair), merci.</p>

        <center><table><tr>
        <th>Modifier</th>
        <th>Supprimer</th>
        <th>Titre</th>
        <th>Date</th>
        </tr></center>

        <?php
        $id= $donnees['
        id'];
        $retour = mysql_query('
        SELECT * FROM news ORDER BY id DESC');
        while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
        {
        ?>

        <tr>
        <td><?php echo '
        <a href="rediger_news.php?modifier_news=' . $donnees['id']. '">'; ?>Modifier</a></td>
        <td><?php echo '
        <a href="admin_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
        <td><?php echo stripslashes($donnees['
        titre']); ?></td>
        <td><?php echo date('
        d/m/Y', $donnees['timestamp']); ?></td>
        </tr>

        <?php
        } // Fin de la boucle qui liste les news
        ?>


        Et maintenant le code qui permet d'ajouter ou de modifier une news :
        <?php
        mysql_connect("localhost", "*******", "*******");
        mysql_select_db("sablebasket");

        if (isset($_GET['modifier_news'])) // Si on demande de modifier une news
        {
            // On récupère les infos de la correspondante
            $retour = mysql_query('SELECT * FROM news WHERE id=' . $_GET['modifier_news']);
            $donnees = mysql_fetch_array($retour);
           
            // On place le titre et le contenu dans des variables simples
            $titre = $donnees['titre'];
            $contenu = $donnees['contenu'];
            $id_news = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
        }
        else // C'est qu'on rédige une nouvelle news
        {
            // Les variables $titre et $contenu sont vides, puisque c'est une nouvelle news
            $titre = '';
            $contenu = '';
            $id_news = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
        }
        ?>


        J'ai regardé dans phpmyadmin, le timestamp affiche seulement "2006".
        • Partager sur Facebook
        • Partager sur Twitter
          30 août 2006 à 21:28:01

          regardes dans phpmyadmin, le "type" que a le champ timestamp.
          Sa vient peut etre de la moi je le met tout le temps en INT
          • Partager sur Facebook
          • Partager sur Twitter
            30 août 2006 à 21:31:33

            J'ai fait comme dans le tuto de mateo, il est en "bigint" et il a pour valeur 20.
            • Partager sur Facebook
            • Partager sur Twitter
              30 août 2006 à 21:34:32

              Desolé je vois pas ou est le probleme.
              Ton insert a l'air bon, je comprends pas pourquoi sa affiche seulement 2006 il devrait y avoir une grande suite de nombre.
              • Partager sur Facebook
              • Partager sur Twitter
                30 août 2006 à 21:44:46

                Arf, je vais essayer de voir autre part ce qui peut clocher...

                Sinon pour les nombres qui s'affichent au lieu du texte dans le contenu de la news, as-tu une idée ?

                En tout cas merci pour ton aide.
                • Partager sur Facebook
                • Partager sur Twitter
                  30 août 2006 à 21:50:26

                  Les nombres que tu vois sa ressemblerait pas a un timestamp par hasard.
                  Si c'est oui sa veut dire que tu t'es trompé dans l'ordre de l'INSERT.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    30 août 2006 à 21:53:29

                    J'ai bien l'impression que c'est un timestamp, je vais voir mon insert tout de suite.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      30 août 2006 à 22:02:50

                      Janvier 1970 <=> Timestamp=0

                      Pour les news que tu as crée avant, tu aura par défaut 0 dans ta colonne timestamp donc la date sera janvier 1970.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 août 2006 à 22:07:46

                        J'ai modifié la place du champ timestamp dans la table, et ça fonctionne !
                        J'ai juste à changer la date des news d'avant (il n'y en a que 2) et tout sera parfait.

                        Merci beaucoup.
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Problème de timestamp

                        × 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