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"> Страницы: '; // Проверяем нужна ли стрелка "В начало" 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"; }
Только у вас листинг неверно работает, а искать ошибку лень :)
ссылки замените на что-то другое 🤪
page_id = это номер страницы, по которой вы выводите. Вы же список страниц выводите? Вот туда и вставляйте data-id с тем номером страницы, которую надо выводить.
<div class='container'><? include("./blocks/catalog.php");?></div>
И нумерацию страниц вне container надо.
Капча достала :)
Да, а в 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."'>>></a>"; } else { $next =""; } if ($this->page > 1) { $prev = "<a href='".$_SERVER['SCRIPT_NAME']."?page=".($this->page-1).$this->query."'><<</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(); /* листинг */ }
А нафига, простите? 🍿
Что-то я вашу идею недопонял :)
У меня, после того, как поставил в ротацию с яшей (11 апреля), яша вначале тоже в 2 раза больше дал. Через дней 10 все нормализовалось, и стало также/чуть хуже чем у гугла.
Рано радуетесь 🍿
Fair_General, за мат получить можете, тут с этим строго :)
standartvv, я свои баннеры поставил в заглушки, на страницы своего же сайта. Просмотры на сайте увеличились, а доход не упал. Меня это вполне устраивает 🍿