0 / 0 / 0
Регистрация: 25.03.2011
Сообщений: 7
|
|
1 | |
php/mysql - постраничное разбиение25.03.2011, 02:42. Показов 4876. Ответов 31
Метки нет (Все метки)
короче, вот в чём дело
есть код, который берёт записи с мускула, элементарно простой записи выдаются все, все сразу, без растасовки на страницы, а-ля (пред 1 2 3 ... след), что очень плохо никак не получается сделать этот самый 'pagination', сколько не читал, не получается пхп и я - совершенно разные веСЧи =) может поможет кто? нужно по страницам разбить всё выдающееся код здесь - _http://paste.phpfi.com/45990 просьба не говорить, что нужно прочесть, так как я в этом ничего не смыслю в надежде получить скорый ответ =)
0
|
25.03.2011, 02:42 | |
Ответы с готовыми решениями:
31
Постраничное разбиение страницы Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in z:\home\localhost\www\php\mysql.php on line 16 Постраничное разбиение большого объема текста PHP+MYSQL Постраничное разбиение |
4 / 4 / 3
Регистрация: 25.05.2009
Сообщений: 2,576
|
|
25.03.2011, 11:13 | 2 |
в sql запросе нужно использовать limit $start,$length
где $start- с какой записи, $length - количество записей
0
|
0 / 0 / 0
Регистрация: 25.03.2011
Сообщений: 7
|
|
26.03.2011, 00:24 [ТС] | 3 |
я всё понимаю, читал про это очень много, не понимаю
может ктото попробует и покажет что выходит из всего этого, если может, конечно же спасибо
0
|
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 34
|
||||||
27.03.2011, 15:44 | 4 | |||||
допустим переменная $pg_num -номер страницы, а $in_pg - сколько результатов выводить на странице
0
|
0 / 0 / 0
Регистрация: 25.03.2011
Сообщений: 7
|
|
28.03.2011, 05:40 [ТС] | 5 |
уважаемый jado,
не могли бы Вы показать всё на данном скрипте, потому как я не знаю что куда вписывать... безумно благодарен
0
|
4 / 4 / 3
Регистрация: 25.05.2009
Сообщений: 2,576
|
|
28.03.2011, 11:00 | 6 |
мы подождём пока уважаемый jado покажет пример!
если у него что-то не получится, я обызательно покажу как это делаю я.
0
|
freem
|
|
28.03.2011, 13:25 | 7 |
2 sl_play:
Вот всё ты любишь выябнуться...скромнее надо быть =|| |
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 34
|
|
28.03.2011, 13:51 | 8 |
у мя на сайте поисковик и как раз результаты делятся на страныцы.
вот код. $s_name это текст писка [code] $mod_opt['sub_page'] = $_REQUEST['sp']; if($mod_opt['sub_page']==''){ $mod_opt['sub_page'] = 0; } $where_sql = ' deleted = 0 AND ( MATCH(name) AGAINST(''.$s_name.'' IN BOOLEAN MODE) OR MATCH(name_aliases) AGAINST(''.$s_name.'' IN BOOLEAN MODE) ) '; $count_sql = ' SELECT COUNT(id) as cou FROM clubs WHERE '.$where_sql ; $result = mysql_query($count_sql); if($result){ if(mysql_num_rows($result)>0){ $row = mysql_fetch_object($result); $mod_opt['results'] = $row->cou; }else{ $mod_opt['cont'] = false; $errors[count($errors)] = 'Ïðîèçîøëà îøèáêà âûïîëíåíåíèÿ ñöåíàðèÿ...'; send_err('', 'Èìÿ ìîäóëÿ:'.$module_name.' Ôàéë ìîäóëÿ:'.$module_filename.' Íåâåðíûé ðåçóëüòàò âûïîëíåíèÿ SQL: '.$sql); } mysql_free_result($result); }else{ $mod_opt['cont'] = false; $errors[count($errors)] = 'Ïðîèçîøëà îøèáêà îáðàùåíèÿ ê ñåðâåðó... Ïîïðîáóéòå ïîçæå...'; send_err(mysql_error(), 'Èìÿ ìîäóëÿ:'.$module_name.' Ôàéë ìîäóëÿ:'.$module_filename.' Íåâîçìîæíî âûïîëíèòü ñëåäóþùèé SQL: '.$sql); } if($mod_opt['cont']){ if($mod_opt['results']==0){ $mod_opt['pages'] = 0; }else{ $mod_opt['pages'] = ceil($mod_opt['results'] / $mod_opt['res_in_page']); } if($mod_opt['pages']>0){ if($mod_opt['sub_page']<$mod_opt['pages']){ $mod_opt['sql_param_1'] = $mod_opt['sub_page'] * $mod_opt['res_in_page']; $limit_sql = ' LIMIT '.$mod_opt['sql_param_1'].', '.$mod_opt['res_in_page'].' '; }else{ $mod_o
0
|
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 34
|
|
28.03.2011, 13:52 | 9 |
сори, что написано в таком формате, просто нет времени переписывать
0
|
0 / 0 / 0
Регистрация: 25.03.2011
Сообщений: 7
|
|
28.03.2011, 14:24 [ТС] | 10 |
скриптов, которые делят, и у меня не мало, только везде по разному как то.
phpfaq.ru/paginator таких примеров, как показали в инете - пруд пруди... а вот на данном показать всё не всякий сможет
0
|
4 / 4 / 3
Регистрация: 25.05.2009
Сообщений: 2,576
|
|
28.03.2011, 14:52 | 11 |
дайте конкретный скл запрос
0
|
0 / 0 / 0
Регистрация: 28.03.2011
Сообщений: 11
|
|
28.03.2011, 18:58 | 12 |
Ненадолго забежал на форум, времени нету, вот вырезал кое-что со своих страрых сайтов и прилепил к твоему коду. Надеюсь ниче не забыл..
[code] <? include('common.php'); function replace_param($par, $path, $val) { $mas=array(); $hash=strstr($path,'#'); $path=str_replace($hash,'',$path); $mas=explode($par.'=',$path); $start=$mas[0]; $end=$mas[1]; $end=strstr($end,'&'); $end=substr($end,1); $str=$start.$end; $t=strstr($str,'?'); $ch='?'; if(strlen($t)>1) $ch='&'; if(!strcmp(substr($start,-1,1),'&')) $ch=''; if(strlen($t)==1) $ch=''; return $str.$ch.$par.'='.$val.$hash; } function draw_pagelist($par, $pn, $path, $sinl_num=4) { $retstr='<table width='100%'><tr><td align='center'>' $page=$_GET[$par]; $st='<a class='link' href=''.replace_param($par,$path, 0).''>[1]</a> ' $fn='<a class='link' href=''.replace_param($par,$path, $pn).''>['.($pn+1).']</a> ' $low=$page-$sinl_num; if($low<=0) { $low=0; $st=''; } $hi=$page+$sinl_num; if($hi>=$pn) { $fn=''; $hi=$pn; } if($low>1) $st=$st.'... '; $retstr.=$st; if($hi<($pn-1)) $fn='... '.$fn; for($i=$low;$i<=$hi;$i++) { if($i!=$page) $retstr.='<a class='link' href=''.replace_param($par,$path, $i).''>['.($i+1).']</a> ' else $retstr.='<font class='txt'><b>['.($i+1).']</b></font> ' } $retstr.= $fn.'</td></tr></table>' echo $retstr; } //////////////////////////// $res = mysql_query('SELECT * FROM cats WHERE id=$id'); $_NUM_AT_PAGE=10; //// $_NUM_AT_PAGE - количество элементов на странице $num=mysql_num_rows($res); $pn=$num/$_NUM_AT_PAGE; settype($pn,'integer'); if(($pn*$_NUM_AT_PAGE)==$num) $pn--; $page=$_GET['page']; if($page>$pn) $page=0; $lim=' limit '.($page*$_NUM_AT_PAGE).','.$_NUM_AT_PAGE; $q.=$lim; $res=mysql_query($q); draw_pagelist('page', $pn, $_SERVER['REQUEST_URI']); $cat = mysql_fetch_object($qr1); ?> <? $qr1 = mysql_query('SELECT * FROM games WHERE cat=$id AND status=1'); while( $row = mysql_fetch_object($qr1) ){ ?> <table width=100%> <tr> <td align=left width=25%> <a href='<?=$siteurl?>/games.php?id=<?=$row->id?>' class='nav'><img src='<?=$siteurl?>/uploads/thumb/<?=$row->thumb?>' border=0 width='70' height='59'></a> </td> <td align=left><div align=left> <strong><a href='<?=$siteurl?>/games.php?id=<?=$row->id?>' class='nav'><?=stripslashes($row->name)?></a></strong> <
0
|
0 / 0 / 0
Регистрация: 25.03.2011
Сообщений: 7
|
|
29.03.2011, 09:39 [ТС] | 13 |
опробовал
страница открылась полностью, без 'лимита' и рассортировки на страницы, код не сработал спасибо в любом случае
0
|
0 / 0 / 0
Регистрация: 28.03.2011
Сообщений: 11
|
|
29.03.2011, 12:16 | 14 |
Упс, я завтыкал=)
Код
//////////////////////////// $res = mysql_query('SELECT * FROM cats WHERE id=$id'); $_NUM_AT_PAGE=10; //// $_NUM_AT_PAGE - количество элементов на странице $num=mysql_num_rows($res); $pn=$num/$_NUM_AT_PAGE; settype($pn,'integer'); if(($pn*$_NUM_AT_PAGE)==$num) $pn--; $page=$_GET['page']; if($page>$pn) $page=0; $lim=' limit '.($page*$_NUM_AT_PAGE).','.$_NUM_AT_PAGE; $q.=$lim; $res=mysql_query($q); draw_pagelist('page', $pn, $_SERVER['REQUEST_URI']); $cat = mysql_fetch_object($qr1); ?> <? $qr1 = mysql_query('SELECT * FROM games WHERE cat=$id AND status=1'); Надо поменть на //////////////////////////// $qr1 = mysql_query('SELECT * FROM cats WHERE id=$id'); $cat = mysql_fetch_object($qr1); $res = mysql_query('SELECT * FROM games WHERE cat=$id AND status=1'); $_NUM_AT_PAGE=10; //// $_NUM_AT_PAGE - количество элементов на странице $num=mysql_num_rows($res); $pn=$num/$_NUM_AT_PAGE; settype($pn,'integer'); if(($pn*$_NUM_AT_PAGE)==$num) $pn--; $page=$_GET['page']; if($page>$pn) $page=0; $lim=' limit '.($page*$_NUM_AT_PAGE).','.$_NUM_AT_PAGE; $q.=$lim; $res=mysql_query($q); draw_pagelist('page', $pn, $_SERVER['REQUEST_URI']); $cat = mysql_fetch_object($qr1); ?> <?
0
|
0 / 0 / 0
Регистрация: 25.03.2011
Сообщений: 7
|
|
29.03.2011, 14:57 [ТС] | 15 |
уважаемый,
у меня чтото вот такое вылезло: Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /path/cats2.php on line 1 p.s. и ещё, бооооольшая просьба, коды вписывать вот сюда: http://paste.phpfi.com/ невероятно огромное спасибо за оказанную помощь
0
|
0 / 0 / 0
Регистрация: 28.03.2011
Сообщений: 11
|
|
29.03.2011, 15:08 | 16 |
ХМ, а ты сам че исходник вообще не смотришь, просто в тупую переписываешь??
while( $row = mysql_fetch_object($qr1) ){ замени на while( $row = mysql_fetch_object($res) ){
0
|
3 / 3 / 3
Регистрация: 13.02.2009
Сообщений: 465
|
|
29.03.2011, 15:15 | 17 |
Кстати, насчет получения количества записей и самих записей - лучше делать в 2 запроса типа
SELECT COUNT(*) WHERE ... ^^ Количество записей SELECT * WHERE ... LIMIT A, B ^^ Сами записи Тогда обработка количества записей будет на сервере, это немного дольше (немного!), но зато сами записи не будут передаваться полностью, а передастся лишь нужная часть (обработка на сервере).
0
|
0 / 0 / 0
Регистрация: 28.03.2011
Сообщений: 11
|
|
29.03.2011, 15:40 | 18 |
ИМХО лучше
SELECT * WHERE.. И получить количество записей с помощью mysql_num_rows()... Как и сделано у меня.
0
|
3 / 3 / 3
Регистрация: 13.02.2009
Сообщений: 465
|
|
29.03.2011, 15:46 | 19 |
Одним запросом - ты переправляешь все записи в массив. Когда их 100 или 200 это действительно ерунда. 1000 или 2000 уже требуют на загрузку некоторого времени.
А реально отображаешь ты допустим только 50. Зачем тогда грузить все 2000 записей? Так как я сказал - сервер выбирает эти 50 записей и их выдает.
0
|
0 / 0 / 0
Регистрация: 28.03.2011
Сообщений: 11
|
|
29.03.2011, 15:59 | 20 |
не могу понять о чем ты.
select ... limit 10,10 и select ... limit 10, 10000 выполняются практически одинаковое время, если не делать fetch.. А вот как раз count() довольно другоемкий запрос, он займет много времени, хотя такой будет всего 1 н страницу, так что это неважно. Так как я предложил я будет работать быстрее, но этого никто не увидит=)
0
|
29.03.2011, 15:59 | |
29.03.2011, 15:59 | |
Помогаю со студенческими работами здесь
20
Расширить постраничное разбиение для модуля DNN Как на JavaScript реализовать постраничное разбиение товаров в интернет-магазине? Как изучать mysql и php? Сначала php, а потом mysql или наоборот, или сразу? Подключение к БД MySQL. Xamarin Studio: C#-PHP-MySQL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |