2015-11-23 1 views
0

Я пытаюсь архивировать блог новостей. Я хотел бы сделать его похожим на показанный THEREАрхивируйте мой blog'news по году и месяцу, показывая название и данные создания

В точке я, я могу показать год, месяц и число сообщений для каждого месяца, но я не могу показать заголовок и пуля различных постов.

Моя структура базы данных представляет собой таблицу с этими строками: id (int), заголовок (varchar), slug (varchar), созданный (временная метка).

здесь у есть код:

$newsdata= $db->query(" 
    SELECT 
     YEAR(created) AS YEAR, 
     MONTHNAME(created) AS MONTH, 
     title, 
     slug, 
     id, 
     COUNT(*) AS TOTAL 
     FROM pages 
     GROUP BY YEAR, MONTH 
     ORDER BY YEAR DESC, MONTH 

")->fetchALL(PDO::FETCH_ASSOC); 

$currentYear = null; 

foreach($newsdata AS $news){    
    if ($currentYear != $news['YEAR']){ 
    echo '<h2>'.$news['YEAR'].'<h2>'; 
    $currentYear = $news['YEAR']; 
    } 
    echo '<p>' .$news['MONTH']. '</p><p>' .$news['TOTAL']. '</p>'; 
} 

U можно увидеть результат HERE

Я знаю также, что есть интересный пост there о моих потребностях, но это не поможет мне достичь моего Цель.

+0

потому, показавший здесь: http://www.matteocorona.com/lega/m_y.php, за каждый месяц из разных лет один и тот же заголовок появляется 4 раза. Мне нужно видеть разные названия только один раз в месяц. Я уверен, что это что-то не так в запросе, я не знаю, что такое –

+0

Если вам нравится, подумайте о следующем простом двухэтапном действии: 1. Если вы еще этого не сделали, предоставьте правильные инструкции CREATE и INSERT (и/или sqlfiddle), чтобы мы могли легче воспроизвести проблему. 2. Если вы еще этого не сделали, укажите желаемый набор результатов, который соответствует информации, представленной на шаге 1. – Strawberry

+0

Я считаю, что для создания скрипки для этого не нужно. О том, что мне нужно достичь, я добавил точный пример в заданном вопросе. Если вы можете мне помочь, пожалуйста, дайте мне знать. спасибо –

ответ

1

Я нашел решение подходящим для меня HERE, если вы хотите прочитать всю дискуссию.

Здесь мы идем код:

$db= new PDO('mysql:host=62.149.150.197;dbname=Sql692231_4', 'Sql692231', 'f7157ead'); //connection setup 
$stmt = $db->query(" 
    SELECT 
    Month(created) as Month, 
    Year(created) as Year, 
    title, 
    slug, 
    created 
    FROM pages 
    ORDER BY created DESC 
"); 

// you will store current month here to control when the month changes 
$currentMonth = 0; 
// you will store current year here to control when the year changes 
$currentYear = 0; 

while($row = $stmt->fetch()){ 
    // if the year changes you have to display another year 
    if($row['Year'] != $currentYear) { 
     // reinitialize current month 
     $currentMonth = 0; 
     // display the current year 
     echo "<li class=\"cl-year\">{$row['Year']}</li>"; 
     // change the current year 
     $currentYear = $row['Year']; 
    } 
    // if the month changes you have to display another month 
    if($row['Month'] != $currentMonth) { 
     // display the current month 
     $monthName = date("F", mktime(0, 0, 0, $row['Month'], 10)); 
     echo "<li class=\"cl-month\">$monthName</li>"; 
     // change the current month 
     $currentMonth = $row['Month']; 
    } 
    // display posts within the current month 
    //$slug = 'a-'.$row['Month'].'-'.$row['Year']; 
    //echo "<li class=\"cl-posts\"><a href='$slug'>$monthName</a></li>"; 
    echo '<li class="cl-posts active"><a  href="http://www.matteocorona.com/cms_images/page.php?page='.$row['slug'].'">'.$row['title'].'</a></li>'; 
    echo '<li class="cl-posts active">'.$row['created'].'</li>'; 
    echo "<br/>"; 
} 

и результат, HERE

+0

Awesome !! благодаря –

 Смежные вопросы

  • Нет связанных вопросов^_^