ziliboba0213

Рейтинг
830
Регистрация
03.09.2009
Интересы
Поделываю сайты
1981


DEFINE('ITEMS_PER_PAGE', 1);

// Выбираем из БД общее количество записей
$query = "SELECT COUNT(*) FROM page WHERE 1";
$res = mysql_query( $query );
$total = mysql_result( $res, 0, 0 );

// Проверяем передан ли номер текущей страницы (постраничная навигация)
if ( isset($_GET['page']) ) {
$page = (int)$_GET['page'];
if ( $page < 1 ) $page = 1;
} else {
$page = 1;
}

$uri = $_SERVER['PHP_SELF'].'?';
if ( $_SERVER['QUERY_STRING'] != '' ) {
foreach( $_GET as $key => $value ) {
if ( $key != 'page' ) $uri = $uri.$key.'='.urlencode($value).'&';
}
}
// Сколько всего получится страниц
$cnt_pages = ceil( $total / ITEMS_PER_PAGE );
if ( $page > $cnt_pages ) $page = $cnt_pages;
// Начальная позиция
$start = ( $page - 1 ) * ITEMS_PER_PAGE;

// По умолчанию сортировка по наименованию, по возрастанию
$orderby = 'id';


$query = 'SELECT name
FROM page
ORDER BY '.$orderby.' ASC
LIMIT '.$start.' ,'.ITEMS_PER_PAGE;
$res = mysql_query( $query );

echo '<h1>Каталог продукции</h1>'."\n";

while( $prd = mysql_fetch_array($res) ) {


echo '<div class="grid_4">';
echo $prd['name'];
echo '</div>'."\n";
}
// Строим постраничную навигацию
if ( $cnt_pages > 1 )
{
echo '<div style="margin:1em 0">&nbsp;Страницы: ';
// Проверяем нужна ли стрелка "В начало"
if ( $page > 3 )
$startpage = '<a class="page" data-id="1"><<</a> ... ';
else
$startpage = '';
// Проверяем нужна ли стрелка "В конец"
if ( $page < ($cnt_pages - 2) )
$endpage = ' ... <a class="page" data-id='.$cnt_pages.'>>></a>';
else
$endpage = '';

// Находим две ближайшие станицы с обоих краев, если они есть
if ( $page - 2 > 0 )
$page2left = ' <a class="page" data-id='.($page - 2).'>'.($page - 2).'</a> | ';
else
$page2left = '';
if ( $page - 1 > 0 )
$page1left = ' <a class="page" data-id='.($page - 1).'>'.($page - 1).'</a> | ';
else
$page1left = '';
if ( $page + 2 <= $cnt_pages )
$page2right = ' | <a class="page" data-id='.($page + 2).'>'.($page + 2).'</a>';
else
$page2right = '';
if ( $page + 1 <= $cnt_pages )
$page1right = ' | <a class="page" data-id='.($page - 1).'>'.($page + 1).'</a>';
else
$page1right = '';

// Выводим меню
echo $startpage.$page2left.$page1left.'<strong>'.$page.'</strong>'.$page1right.$page2right.$endpage;

echo '</div>';
}
echo "<script>
$('.page').click(function(){
$.ajax({
url: '/ajax.php',
type: 'GET',
data: {'page': $(this).attr('data-id')},
success: function(html){
$('.grid_4').html(html);
}
});
});
</script>";

А в ajax.php все тоже самое, кроме листинга:


DEFINE('ITEMS_PER_PAGE', 1);

// Выбираем из БД общее количество записей
$query = "SELECT COUNT(*) FROM page WHERE 1";
$res = mysql_query( $query );
$total = mysql_result( $res, 0, 0 );

// Проверяем передан ли номер текущей страницы (постраничная навигация)
if ( isset($_GET['page']) ) {
$page = (int)$_GET['page'];
if ( $page < 1 ) $page = 1;
} else {
$page = 1;
}

$uri = $_SERVER['PHP_SELF'].'?';
if ( $_SERVER['QUERY_STRING'] != '' ) {
foreach( $_GET as $key => $value ) {
if ( $key != 'page' ) $uri = $uri.$key.'='.urlencode($value).'&';
}
}
// Сколько всего получится страниц
$cnt_pages = ceil( $total / ITEMS_PER_PAGE );
if ( $page > $cnt_pages ) $page = $cnt_pages;
// Начальная позиция
$start = ( $page - 1 ) * ITEMS_PER_PAGE;

// По умолчанию сортировка по наименованию, по возрастанию
$orderby = 'id';


$query = 'SELECT name
FROM page
ORDER BY '.$orderby.' ASC
LIMIT '.$start.' ,'.ITEMS_PER_PAGE;
$res = mysql_query( $query );


while( $prd = mysql_fetch_array($res) ) {


echo '<div class="grid_4">';
echo $prd['name'];
echo '</div>'."\n";
}

Только у вас листинг неверно работает, а искать ошибку лень :)

LipGrad:

Вот так сделал, но вс равно страницу грузит

ссылки замените на что-то другое 🤪

LipGrad:
с этим я понял, спасибо, а с номирацией не понял, я так понял надо id куда то присвоить))

page_id = это номер страницы, по которой вы выводите. Вы же список страниц выводите? Вот туда и вставляйте data-id с тем номером страницы, которую надо выводить.

<div class='container'><? include("./blocks/catalog.php");?></div>

И нумерацию страниц вне container надо.

Капча достала :)

LipGrad:
Правильно я понял, что страница ajax.php - это моя страница в которой висит содержимое моего div?

Да, а в container будет вставлятся то, что покажет ajax.php с пост параметром page_id.

Через jquery можно:


<div class='container'></div>
<div class='page' data-id='1'>1 страница</div>
<div class='page' data-id='2'>1 страница</div>
<div class='page' data-id='n'>n страница</div>
<script>
$('.page').click(function(){
$.ajax({
url: '/ajax.php',
type: 'POST',
data: {'page_id': $(this).attr('data-id')},
success: function(html){
$('.container').html(html);
}
});
});
</script>


class navigator
{
function navigator($all,$pnumber,$query)
{
$this->all=$all;
$this->pnumber=$pnumber;
$this->query=$query;
if(isset($_GET['page']))
{
$this->page = (int)$_GET['page'];
}
else
{
$this->page = 1;
}
}
function start()
{
$this->num_pages=ceil($this->all/$this->pnumber);

if (isset($_GET['last']))
{
$this->page=$this->num_pages;
}
$this->start=$this->page*$this->pnumber-$this->pnumber;
if ($this->page > $this->num_pages || $this->page < 1)
{
$this->page=$this->num_pages;
}
return abs($this->start);
}
function navi()
{
if ($this->page < $this->num_pages)
{
$next = " <a href='".$_SERVER['SCRIPT_NAME']."?page=".($this->page+1).$this->query."'>&gt;&gt;</a>";
}
else
{
$next ="";
}
if ($this->page > 1)
{
$prev = "<a href='".$_SERVER['SCRIPT_NAME']."?page=".($this->page-1).$this->query."'>&lt;&lt;</a> ";
}
else
{
$prev ="";
}
if ($this->num_pages<2)
{
return "";
}
$main = $prev;
for($pr = "", $i =1; $i <= $this->num_pages; $i++)
{
if($i == 1 || $i == $this->num_pages || abs($i-$this->page) < 8)
{
if($i == $this->page)
{
$pr = " [".$i."] ";
}
else
{
$pr = " <a href='".$_SERVER['SCRIPT_NAME']."?page=".$i.$this->query."'>".$i."</a> ";
}
}
else
{
if($pr == " ... " || $pr == "")
{
$pr = "";
}
else
{
$pr = " ... ";
}
}
$main .= $pr;
}
return "<h3>".$startdiv.$main.$next.$enddiv."</h3>";
}
}


$q=mysql_query("SELECT count(*) FROM page");
$all=mysql_result($q,0,0);
if ($all)
{
$pnumber=40;
$n = new Navigator($all, $pnumber, "");
$q=mysql_query("SELECT * FROM page LIMIT ".$n->start().",$pnumber");
echo $n->navi(); /* листинг */
while (false!==($row=mysql_fetch_array($q)))
{
echo "<a href=''>".$row['name']."</a>";
}
echo $n->navi(); /* листинг */
}

А нафига, простите? 🍿

Что-то я вашу идею недопонял :)

standartvv:
Первый день с Яндексом, пока полет нормальный в 3 раза лучше чем с Гуглом, блоки на тех же местах, при чем половина еще гугловских (с адаптацией у Яндекса проблемы, шаблон мне сдвигает, пока решаю с ними), но даже с половиной блоков обгоняет. И это не начало работы с ними, Яндекс уже проанализировал сайт и вывел среднюю.

У меня, после того, как поставил в ротацию с яшей (11 апреля), яша вначале тоже в 2 раза больше дал. Через дней 10 все нормализовалось, и стало также/чуть хуже чем у гугла.

Рано радуетесь 🍿

Fair_General, за мат получить можете, тут с этим строго :)

standartvv, я свои баннеры поставил в заглушки, на страницы своего же сайта. Просмотры на сайте увеличились, а доход не упал. Меня это вполне устраивает 🍿

Всего: 15242