Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ЧПУ, .htaccess и вывод архива по датам
 
 автор: newstarter   (26.08.2013 в 22:48)   письмо автору
 
 

Уважаемые знатоки форума,

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

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

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

RewriteRule ^date/([0-9]+)/? view_date.php?date=$1 [QSA,L]


т.е. [0-9], скорее всего, не тот формат для отображения даты вида 2013-08 (могу ошибаться).

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

<?php
$result2 
mysql_query("SELECT id,title,description,author,date FROM blogdata WHERE date>'$date_begin' AND date<'$date_end'",$db);
    if (
mysql_num_rows($result2) > 0)
    
{
    
$myrow2 mysql_fetch_array($result2);
    
    do
    {
    
printf ("<table align='center' class='post'>
                <tr>
                <td class='post_title'>
                <h2><a href='/post/%s' class='post_name'>%s</a></h2>
                <p class='post_adds'>Дата публикации: %s</p>
                <p class='post_adds'>Автор статьи: %s</p>
                </td>
                </tr>                
                <tr>
                <td>
                <p>%s</p>
                <p><a href='/post/%s'>Читать дальше</a></p>
                </td>
                </tr>
    </table><br>"
$myrow2["id"], $myrow2["title"], $myrow2["date"],$myrow2["author"],$myrow2["description"],$myrow2["id"]);
    
    }
    while (
$myrow2 mysql_fetch_array($result2));
        
}
?>


Помогите, ПОЖАЛУЙСТА, разобраться, что я делаю не так. Возможно ли исправить через mod_rewrite? Или если нет, то какая есть альтернатива?

СПАСИБО!!!

  Ответить  
 
 автор: confirm   (26.08.2013 в 23:44)   письмо автору
 
   для: newstarter   (26.08.2013 в 22:48)
 

([0-9\-]+)
<?
if (mysql_num_rows($result2)) { 
     while (
$myrow2 mysql_fetch_assoc($result2)) printf ("<table align='center' class='post'> 
                <tr> 
                <td class='post_title'> 
                <h2><a href='/post/%s' class='post_name'>%s</a></h2> 
                <p class='post_adds'>Дата публикации: %s</p> 
                <p class='post_adds'>Автор статьи: %s</p> 
                </td> 
                </tr>                 
                <tr> 
                <td> 
                <p>%s</p> 
                <p><a href='/post/%s'>Читать дальше</a></p> 
                </td> 
                </tr> 
    </table><br>"
$myrow2["id"], $myrow2["title"], $myrow2["date"],$myrow2["author"],$myrow2["description"],$myrow2["id"]); 
}

  Ответить  
 
 автор: newstarter   (27.08.2013 в 19:21)   письмо автору
 
   для: confirm   (26.08.2013 в 23:44)
 

Уважаемый (-ая) Confirm, ВСЕ ПОЛУЧИЛОСЬ уже после добавления тире в регулярное выражение! Огромное СПАСИБО за помощь!!!

  Ответить  
 
 автор: confirm   (27.08.2013 в 19:30)   письмо автору
 
   для: newstarter   (27.08.2013 в 19:21)
 

Я сократил ваш код не потому, что это и есть причина вашей проблемы (ваша проблема в неверном шаблоне была), а потому, что do ... while вообще и близко не нужно в данном случае, ну и получаете вы ряд не сказать чтобы не той функцией, просто используете ее не лучшим образом. По большому счету и printf тут совсем ни к чему.
Вот почему я выбросил из вашего кода лишнее.

  Ответить  
 
 автор: newstarter   (28.08.2013 в 21:36)   письмо автору
 
   для: confirm   (27.08.2013 в 19:30)
 

Огромное вам СПАСИБО за помощь и исправления!!! Очень выручили.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования