Partage
  • Partager sur Facebook
  • Partager sur Twitter

Affichage de News par date

    1 août 2006 à 21:41:40

    salut salut alors voila je voudrai afficher les News de mon site par dates donc sa donnerai par exemple:

    Mardi 1 aout
    -New 1
    -New 2
    ...
    Lundi 31 Juillet
    -New 1
    -New 2
    ...

    Mais voila je ne trouve pas comment faire et je manque un peu de connaissance en php.

    mon code PHP actuel affiche toute les news:

    <?php
    /*........................................
    on se connecte à la base de données
    .........................................*/

    include ('./php/admin.php');
    // On récupère les 10 dernières news
           $retour = mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT 0, 10");
    while ($donnees = mysql_fetch_array($retour))
    {
    ?>
    <table width="" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td colspan="2">
    <div class="date_news">

      <?php
     // On Affiche la date de la news en Fr
    $jours= array("Dimanche","Lundi", "Mardi", "Mercredi", "Jeudi","Vendredi", "Samedi");
    $mois= array( "Décembre","Janvier" , "Février", "Mars", "Avril", "Mai" , "Juin" , "Juillet" , "Août" , "Septembre" , "Octobre" , "Novembre");
     
    $date_jours= date('w' , $donnees['date']);
    $date_mois= date('n' , $donnees['date']);
    ?>
    <?php echo ' '.$jours[$date_jours].' '.date ('j' , $donnees['date']).' '.$mois[$date_mois].'  ';
    ?>
    </div>
            </td>
           </tr>
                <tr>
                   <td width="8%"><img src="image/news/<?php echo $donnees['image']; ?>.jpg"/></td>
                   <td width="92%"><div class="titre_news"><img src="image/menu/curseurcadre.gif" />
                              
                      <?php echo $donnees['titre']; ?>:</div></td>
                </tr>
    <tr>
        <td colspan="2">
    <div class="texte_news">
          <?php
    $texte = nl2br(stripslashes($donnees['texte']));
    $position = 0;
    $maxi = 120 ;
    $cont = nl2br(stripslashes ($donnees['texte']));
    $final = substr ($cont,$position,$maxi);

    echo "$final..." ; ?>
    </div>
        </td>
    </tr>

    <tr>
        <td colspan="2">
    <a href="?rub=news&page=news&afficher=<?php echo $donnees['id'] ;?>">-Lire la suite de l' article</a>    </td>
    </tr>

    </table>
    <?php
    } // Fin de la boucle des news
    mysql_close(); // Déconnexion de MySQL
    ?>
     


    Comment faire??? o_O


    merci
    • Partager sur Facebook
    • Partager sur Twitter
      1 août 2006 à 21:54:13

      Il faut le faire sur ta requête avec un GROUP BY.
      • Partager sur Facebook
      • Partager sur Twitter
        2 août 2006 à 9:59:19

        Alors là, je ne suis pas du tout certain qu'il faille un group by!!!
        J'aurais plutôt simplement dit un ORDER BY date DESC, tu stockes dans une variable la date de la dernière news affichée... Quand tu affiches la suivante, si c'est la même que la précédente, tu n'affiches pas la date, sinon, tu affiches la date, et change la valeur stockée dans la variable...
        • Partager sur Facebook
        • Partager sur Twitter
          2 août 2006 à 10:07:14

          Ben moi si j'en suis certain :D

          Bon, bien sûr si son champ est de type int, c'est pas faisable.
          • Partager sur Facebook
          • Partager sur Twitter
            2 août 2006 à 11:52:37

            D'accord, tu fais une requête qui regroupe par jour...
            Ensuite, tu as donc une entrée par jour...
            Comment récupères-tu toutes les news de chaque jour, sans recourir à des bidouilles, ou une requête dans une boucle???

            Et pourquoi si c'est un int ça ne fonctionne pas??? On ne peut pas faire un group by sur un int???
            • Partager sur Facebook
            • Partager sur Twitter
              2 août 2006 à 12:33:32

              Ben non tu n'as pas une entrée par jour, tu as toutes les entrées regroupées par jour.

              Bon, je me suis peut-être trompé en disant que c'était pas possible avec un time() enregistré dans un champ de type int, mais faudrait le convertir en date avant de faire le GROUP BY.

              Par contre faire un GROUP BY directement sur un time() enregistré dans un champ int, ça n'a aucun sens.
              • Partager sur Facebook
              • Partager sur Twitter
                4 août 2006 à 12:03:19

                euuh o_Oo_Oo_O J 'ai pas tous suivit. Mais mon champ date est de type INT.
                Donc exactement je doit faire comment pour afficher mes news par date???
                • Partager sur Facebook
                • Partager sur Twitter
                  4 août 2006 à 12:11:11

                  Citation : strucky

                  Ben non tu n'as pas une entrée par jour, tu as toutes les entrées regroupées par jour.

                  Bon, je me suis peut-être trompé en disant que c'était pas possible avec un time() enregistré dans un champ de type int, mais faudrait le convertir en date avant de faire le GROUP BY.

                  Par contre faire un GROUP BY directement sur un time() enregistré dans un champ int, ça n'a aucun sens.


                  Je suis désolé, mais quand tu fais un 'group by date', tu n'auras qu'une fois chaque date!!!

                  et cronos, je t'ai expliqué la procédure dans mon premier post, il me semble...
                  Ce n'est pas bien compliquer, il suffit d'y aller lentement...
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Affichage de News par 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