За последние 24 часа нас посетили 21502 программиста и 1026 роботов. Сейчас ищут 680 программистов ...

ЧПУ, .htaccess и вывод архива по датам

Тема в разделе "PHP для новичков", создана пользователем newstarter, 26 авг 2013.

  1. newstarter

    newstarter Активный пользователь

    С нами с:
    3 сен 2012
    Сообщения:
    51
    Симпатии:
    0
    Уважаемые знатоки форума,

    Может, кому-нибудь доводилось делать ЧПУ для архива, где запрашивается переменная date.

    Дело в том, что когда url имел вид view_date.php?date=2013-08, все работало, список заметок по каждому месяцу выводился правильно. Но стоило изменить url на "человекопонятный" - /date/2013-08/, как при клике на определенный месяц стали выводиться ВСЕ заметки в БД (по всем месяцам). Сами урлы и ссылки вида /date/2013-08 получились, но кликая по ним, получаю не только заметки за эту дату, но и все остальные.

    Подозреваю, что дело в том, как я прописал ЧПУ-замену:

    Код (Text):
    1. RewriteRule ^date/([0-9]+)/? view_date.php?date=$1 [QSA,L]
    т.е. [0-9], скорее всего, не тот формат для отображения даты вида 2013-08 (могу ошибаться).

    В самом файле view_date.php для вывода заметок по датам используется сдедующий код:

    Код (Text):
    1. <?php
    2. $result2 = mysql_query("SELECT id,title,description,author,date FROM blogdata WHERE date>'$date_begin' AND date<'$date_end'",$db);
    3.     if (mysql_num_rows($result2) > 0)
    4.    
    5. {
    6.     $myrow2 = mysql_fetch_array($result2);
    7.    
    8.     do
    9.     {
    10.     printf ("<table align='center' class='post'>
    11.                 <tr>
    12.                 <td class='post_title'>
    13.                 <h2><a href='/post/%s' class='post_name'>%s</a></h2>
    14.                 <p class='post_adds'>Дата публикации: %s</p>
    15.                 <p class='post_adds'>Автор статьи: %s</p>
    16.                 </td>
    17.                 </tr>              
    18.                 <tr>
    19.                 <td>
    20.                 <p>%s</p>
    21.                 <p><a href='/post/%s'>Читать дальше</a></p>
    22.                 </td>
    23.                 </tr>
    24.     </table><br>", $myrow2["id"], $myrow2["title"], $myrow2["date"],$myrow2["author"],$myrow2["description"],$myrow2["id"]);
    25.    
    26.     }
    27.     while ($myrow2 = mysql_fetch_array($result2));
    28.        
    29. }
    30. ?>
    Помогите, ПОЖАЛУЙСТА, разобраться, что я делаю не так. Возможно ли исправить через mod_rewrite? Или если нет, то какая есть альтернатива?

    СПАСИБО!!!
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Носом чую уроки Попова ... Символ "тире" в регулярку чего не добавили? Попробуйте так:
    Код (Text):
    1. RewriteRule ^date/([0-9-]+)/? view_date.php?date=$1 [QSA,L]
     
  3. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Повторяю вопрос:
    Какое отношение имеет к этому раздел JavaScript?
     
  4. newstarter

    newstarter Активный пользователь

    С нами с:
    3 сен 2012
    Сообщения:
    51
    Симпатии:
    0
    СПАСИБО, Deonis!!! Вы спасли меня в буквальном смысле!!!

    Добавлено спустя 1 минуту 4 секунды:
    Your, этот форум называется Javascript И APACHE. mod_rewrite - из этой оперы
     
  5. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    У вас не порядок с головой.
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.748
    Симпатии:
    1.321
    Адрес:
    Лень
    вреш негодник =)
     
  7. newstarter

    newstarter Активный пользователь

    С нами с:
    3 сен 2012
    Сообщения:
    51
    Симпатии:
    0
    Ну видите, значит тем более по адресу)))))))))))))))))))))