Есть вопрос?
Зайди на форум

Поиск на сайте: Advanced

Denix - новый дистрибутив Linux. Русификация Ubuntu и установка кодеков

dkws.org.ua
Форум сайта dkws.org.ua
 
Главная    ТемыТемы    АльбомАльбом    РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Навигация для страницы категорий.

 
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP
 
Автор Сообщение
Светозар

Участник тусовки


Зарегистрирован: 20.02.2010
Сообщения: 354
Откуда: Москва

СообщениеДобавлено: Ср Фев 29, 2012 4:07 pm    Заголовок сообщения: Навигация для страницы категорий.
Ответить с цитатой

В общем, на главной страничке работает, а на странице категории не хочет.

Для index.php :


Код:
  RewriteRule ^pages/(.*)\.page$ index.php?page=$1 [L]

  RewriteRule ^pages/(.*)\.page$ ?page=$1 [L]
 


для категорий получается так:
Код:
  RewriteRule ^pages/(.*)\.page$ index.php?page=$1 [L]
  RewriteRule ^categories/2.cat/pages/(.*)\.page$ index.php?action=categories&cat=$1&page=$1 [L]
  RewriteRule ^pages/(.*)\.page$ ?page=$1 [L]
 



Выводится категория так:
в index.php
Код:
index.php?action=categories&cat=$1

где $1 - номер категории

А вот и сам процесс вывода:

Код:
<?php

include_once $path . '......./bd.conf.php';
$items_per_page = 2; // Количество элементов на странице

$result_count2=mysql_query("SELECT count(id)  FROM `posts` WHERE cat='$cat'");
$aCount = mysql_fetch_array($result_count2);

$iPages = ceil($aCount['count'] / $items_per_page);
$page = (isset($_GET['page']) && $_GET['page'] <= $aCount['count']) ? $_GET['page'] : 1;
$iOffsetLimit = ($page - 1) * $items_per_page;
$iStart = ($page > 5) ? $page - 4 : 1;


$result = mysql_query("SELECT `id`,`title`,`date`,`mini_img`,`short_news`,`author`,`view` FROM `posts`  WHERE cat='$cat' ORDER BY id DESC LIMIT ".$iOffsetLimit.",".$items_per_page."",$db);
if ( $iOffsetLimit < 0) {
   echo "Отрицательных старниц нет! Ваш покорный КЭП!";
} else {
   
if (!$result)
{
echo "<p>Внимание, новостей пока нет! <br> Ошибка<strong> :</strong></p>";
exit(mysql_error());

}

if (mysql_num_rows($result) > 0)

{
$myrow = mysql_fetch_array($result);

do
{


printf ("

<article id='item-20' class='item'>
<header>
<h1 class='title'><a href='/posts/%s.news'>%s</a></h1>
<p class='meta'>
Написал %s, %s | Написано в {категория}</p>
</header>
<div class='content clearfix'>
 <p><div id='news-id-8' style='display:inline;'><p>
 
 <img class='size-auto frame' width='760' height='300' alt='%s' title='%s' src='%s' />
 
 <br /><br />
 
 %s
 
 </p></div></p>
</div>
<p class='links'>Просмотров %s »
<a href='/posts/%s.news'>Читать далее»</a>
</p>
</article>

",$myrow["id"], $myrow["title"], $myrow["author"], $myrow["date"], $myrow["title"], $myrow["title"], $myrow["mini_img"], $myrow["short_news"], $myrow["view"], $myrow["id"],  $r);


}
while ($myrow = mysql_fetch_array($result));


}

else
{
echo "
                        <div id='main' class='grid-block'>
            
               <div id='maininner' class='grid-box'>
               
                                    <section id='innertop' class='grid-block'><div class='grid-box width51 grid-h'><div class='module mod-box mod-box-color color-color deepest'>

      <h3 class='module-title'><span class='color'>Внимание,</span> новостей нет</h3>   Возможно вы попали в раздел, в котором ещё нет новостей. Вернитесь на главную страничку и выберите подходящий раздел.      
</div></div>
";

}
}


if ($iPages > 1) {
    echo '<div class="catPages1">';
    for ($i = $iStart; $i <= $iPages; $i++) {
        if ($page > 4 && $i == $page - 4) {
            echo '<a href="?pages/' . $i . '.page">...</a>' . "\n";
            continue;
        }
        if ($i > $page + 3) {
            echo '<a href="?pages/' . $i . '.page">...</a>' . "\n";
            break;
        }
        if ($i == $page) {
            echo '<span class="current">' . $i . ' </span> ' . "         " . "\n";
        } else {
            echo '<a href="?pages/' . $i . '.page" clss="catPages1 b">' . $i . '</a>' . "          " . "\n";
        }
       }
    echo '</div>' . "\n";
}


?>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13709
Откуда: Кировоград, Украина

СообщениеДобавлено: Ср Фев 29, 2012 4:28 pm    Заголовок сообщения:
Ответить с цитатой

Давай сделаем так. Сначала убей .htaccess, посмотри выводится ли страница категории без него - по URL index.php?action=categories&cat=1&page=1 ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
олег алексеевич

Тысячник


Зарегистрирован: 18.01.2009
Сообщения: 1350
Откуда: ua кировоград

СообщениеДобавлено: Ср Фев 29, 2012 7:12 pm    Заголовок сообщения:
Ответить с цитатой

объясните мне ,это $1 -переменная с l(L) или цифра 1 ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Моб. телефон ICQ Number
Светозар

Участник тусовки


Зарегистрирован: 20.02.2010
Сообщения: 354
Откуда: Москва

СообщениеДобавлено: Чт Мар 01, 2012 10:31 am    Заголовок сообщения:
Ответить с цитатой

.... ?page=$1 [L] .... получается L


Код:
index.php?action=categories&cat=$1&page=$1

Я правильно понял, то есть второй $1 нужно заменить?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
олег алексеевич

Тысячник


Зарегистрирован: 18.01.2009
Сообщения: 1350
Откуда: ua кировоград

СообщениеДобавлено: Чт Мар 01, 2012 11:25 am    Заголовок сообщения:
Ответить с цитатой

А как в массив попадают cat=$1 , page=$1 ?
Я про то ,что переменные не могут начинаться с цифры.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Моб. телефон ICQ Number
Светозар

Участник тусовки


Зарегистрирован: 20.02.2010
Сообщения: 354
Откуда: Москва

СообщениеДобавлено: Чт Мар 01, 2012 11:39 am    Заголовок сообщения:
Ответить с цитатой

Просто эта часть отвечает за вывод...
Код:
<?php
/*
 * ST news. Free Version
 * http://ST-news.RU/
 * Author: Svetozar Kolesnikov. Russian Web-Masters
 * Назначение categories.php: Вывод категорий
*/
?>
<?
include_once $path . 'system/data/bd.conf.php';

if (isset($_GET['cat'])) {$cat = $_GET['cat']; }
if (!isset($cat)) {$cat = 1;}

/* Проверяем, является ли переменная числом */
if (!preg_match("|^[\d]+$|", $cat)) {
exit ("<p>Неверный формат запроса! Проверьте URL!");
}

$result = mysql_query("SELECT * FROM `categories` WHERE id='$cat'",$db);

if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору<br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}

if (mysql_num_rows($result) > 0)

{
$myrow = mysql_fetch_array($result);
echo $myrow["name"];


}

else
{
echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}


?>
<?php

include $path . 'template/x2/cat.php';
?>


Как-то так работает функция определения категории Smile)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
Светозар

Участник тусовки


Зарегистрирован: 20.02.2010
Сообщения: 354
Откуда: Москва

СообщениеДобавлено: Сб Мар 03, 2012 4:15 pm    Заголовок сообщения:
Ответить с цитатой

В общем, если писать так:
Код:
/index.php?action=categories&cat=$1&page=$2

Работает, а вот как сделать так, чтобы было хотя бы так

Код:
/categories/1.cat&page=id


а лучше вообще так...

Код:
  /categories/1/pages/1.page


У меня я так понял не передаётся страничка, с которой я перешёл... Короче не сохраняется id категории

делал так:

Код:

  RewriteRule ^cat_page/(.*)\.page$ index.php?action=categories&cat=$1&page=$2 [L]



  RewriteRule ^categories/(.*)\/(.*)\.page$ index.php?action=categories&cat=$1&page=$2 [L]

  RewriteRule ^categories/(.*)\/(.*)\.page$ index.php?action=categories&cat=$1&page=$2 [L]


А вот мой .htaccess:
Код:
# Индексная страница сайта
DirectoryIndex index.php

# Кодировка сайта
AddDefaultCharset UTF-8

# Ещё одна фишка
php_flag display_errors off
php_value register_globals off

# убираем все ошибки с сайта
php_flag display_startup_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
php_value error_reporting "E_ALL & ~E_NOTICE"



# редирект на сайт без www
RewriteEngine On
 RewriteCond %{HTTP_HOST} ^www.personal-blog.net$ [NC]
 RewriteRule ^(.*)$ http://personal-blog.net/$1 [R=301,L]
 RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^.htaccess$ - [F]
 
Options +FollowSymlinks




 RewriteBase /
 RewriteRule ^posts/(.*)\.news$ index.php?action=post&id=$1  [L]

 
  RewriteBase /
  RewriteRule ^categories/(.*)\/(.*)\.page$ index.php?action=categories&cat=$1&page=$2 [L]
 
  RewriteRule ^pages/(.*)\.page$ index.php?page=$1 [L]
 
 
  RewriteRule ^cat_page/(.*)\.page$ index.php?action=categories&cat=$1&page=$2 [L]
  RewriteRule ^pages/(.*)\.page$ ?page=$1 [L]
 

 
 


 
 
   RewriteBase /
 RewriteRule ^target.php$ index.php?action=target  [L]
  RewriteBase /
 RewriteRule ^reklama.php$ index.php?action=avdert  [L]
  RewriteBase /
 RewriteRule ^contact.php$ index.php?action=contact  [L]
 
 
ErrorDocument 404 /404.html

# Ограничение доступа по user-agent
# Блокируем всех пользователей, которые могут причинить вред серверу.
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]

<Limit GET POST HEAD>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</Limit>

Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
Anderson

Завсегдатай


Зарегистрирован: 08.07.2006
Сообщения: 642
Откуда: localhost

СообщениеДобавлено: Сб Мар 03, 2012 5:28 pm    Заголовок сообщения:
Ответить с цитатой

Советую вместо (.*) использовать ([0-9]+) для цифр или ([a-zA-Z_]+) для букв и знаков подчеркивания ("_") и т.п. (см. Регулярные выражения, на википедии, например), т.к. .* подразумевает ЛЮБОЙ знак (включая '/').
Попробуй так:

Код:
RewriteRule ^categories/([a-zA-Z0-9_\-]+)/pages/([a-zA-Z0-9_\-]+).html$ index.php?action=categories&cat=$1&page=$2 [L]


Кстати, в качестве $1, $2, ..., $n - считается ТОЛЬКО то, что находиться в скобках "(" и ")"
_________________
ArchLinux + Enlightenment 17 (E17)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение anderson.dunai@gmail.com Моб. телефон ICQ Number
Светозар

Участник тусовки


Зарегистрирован: 20.02.2010
Сообщения: 354
Откуда: Москва

СообщениеДобавлено: Пн Мар 12, 2012 4:56 pm    Заголовок сообщения:
Ответить с цитатой

Код:
<?


include_once $path . 'system/data/bd.conf.php';

$result = mysql_query("SELECT `id`,`title`,`date`,`mini_img`,`short_news`,`author`,`view` FROM `posts`  ORDER BY id  ",$db);
$myrow = mysql_fetch_array($result);

$res_cat = mysql_query("SELECT * FROM `categories` ",$db);
$myrow_cat = mysql_fetch_array($res_cat);
 

$title = $myrow['title']; // Заголовк
$short_news = $myrow['short_news']; // краткая новость
$date = $myrow['date']; // дата
$author = $myrow['author']; // Автор

// Определяем категорию
$cat = $myrow['cat']; // категория id

if ($cat =  $myrow_cat['cat']) {

$link_title= $myrow_cat['title'];
$link_category = "<a href='$cat'>$link_title</a>";

}






// изображение в новости
$img = $myrow['mini_img'];
$images = "<img class='size-auto frame' width='760' height='300'  src='$img' />";


// ссылки на полную новость
$url_id = $myrow['id'];
$full_link_on = "<a href='posts/$url_id.news'>";
$full_link_off = "</a>";





   


if (mysql_num_rows($result) > 0)

{



   do
{

$html = str_replace(
array('{title}','{short_news}','{date}','{author}','{images}','{link-category}','[full-link]','[/full-link]'),
array($title,$short_news,$date,$author,$images,$link_category,$full_link_on, $full_link_off),


file_get_contents("./x2/short_news.tpl"));




echo $html;
}
while ($myrow = mysql_fetch_array($result));




}

else
{
echo "
                        <div id='main' class='grid-block'>
            
               <div id='maininner' class='grid-box'>
               
                                    <section id='innertop' class='grid-block'><div class='grid-box width51 grid-h'><div class='module mod-box mod-box-color color-color deepest'>

      <h3 class='module-title'><span class='color'>Внимание,</span> новостей нет</h3>   Возможно вы попали в раздел, в котором ещё нет новостей. Вернитесь на главную страничку и выберите подходящий раздел.      
</div></div>
";

}
?>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
олег алексеевич

Тысячник


Зарегистрирован: 18.01.2009
Сообщения: 1350
Откуда: ua кировоград

СообщениеДобавлено: Вт Мар 13, 2012 4:31 am    Заголовок сообщения:
Ответить с цитатой

Код:
$result = mysql_query("SELECT `id`,`title`,`date`,`mini_img`,`short_news`,`author`,`view` FROM `posts` WHERE page='page'",$db);
$res_cat = mysql_query("SELECT * FROM `categories` WHERE cat='cat' ",$db);

Нужно указать выборку по какому то полю,обычно сравнивая значение полученное из запроса урл.
Тогда и будет выводится одна строка,а не вся таблица.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Моб. телефон ICQ Number
Показать сообщения:   
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP Часовой пояс: GMT
Страница 1 из 1
 Главная страница сайта
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
© Колисниченко Денис