Форумы портала PHP.SU » Разное » Обсуждение статей » постраничная навигация на php

Страниц (1): [1]
 

1. Shoorman - 21 Апреля, 2010 - 02:04:10 - перейти к сообщению
Воспользовался советами из статьи: http://www.php.su/articles/?cat=...les&page=062

Просто скопировал оттуда скрипты, подставил свои данные...
Пришлось исправить некоторые ошибки, которые там были - нашёл на этом же форуме.

Но всё равно не работает. Информацию из базы выводит и даже меню внизу создаёт, но когда нажимаю на вторую, третью... страницы, то вылезает ошибка 404.

Помогите разобраться, плз.

PHP:
скопировать код в буфер обмена
  1. // Переменная хранит число сообщений выводимых на станице
  2. $num = 25;
  3. // Извлекаем из URL текущую страницу
  4. $page = $_GET['page'];
  5. // Определяем общее число сообщений в базе данных
  6. $result = mysql_query("SELECT * FROM table WHERE confirm = ''");
  7. $posts = mysql_num_rows($result);
  8. // Находим общее число страниц
  9. $total = intval(($posts - 1) / $num) + 1;
  10. // Определяем начало сообщений для текущей страницы
  11. $page = intval($page);
  12. // Если значение $page меньше единицы или отрицательно
  13. // переходим на первую страницу
  14. // А если слишком большое, то переходим на последнюю
  15. if(empty($page) or $page < 0) $page = 1;
  16.   if($page > $total) $page = $total;
  17. // Вычисляем начиная к какого номера
  18. // следует выводить сообщения
  19. $start = $page * $num - $num;
  20. // Выбираем $num сообщений начиная с номера $start
  21. $result = mysql_query("SELECT * FROM table WHERE confirm = '' LIMIT $start, $num");
  22. // В цикле переносим результаты запроса в массив $postrow
  23. while ( $postrow[] = mysql_fetch_array($result))
  24. ?>
  25.  
  26. <?PHP
  27.  
  28. for($i = 0; $i < $num; $i++)
  29. {
  30.  echo "<tr>
  31.         <td>".$postrow[$i]['name']."</td>
  32.         <td>".$postrow[$i]['time']."</td></tr>
  33.       <tr>".$postrow[$i]['name']."</td></tr>";  
  34. }
  35. ?>
  36.  
  37. <?PHP
  38. // Проверяем нужны ли стрелки назад
  39. if ($page != 1) $pervpage = '<a href= ./page?page=1><<</a>
  40.                               <a href= ./page?page='. ($page - 1) .'><</a> ';
  41. // Проверяем нужны ли стрелки вперед
  42. if ($page != $total) $nextpage = ' <a href= ./page?page='. ($page + 1) .'>></a>
  43.                                   <a href= ./page?page=' .$total. '>>></a>';
  44.  
  45. // Находим две ближайшие станицы с обоих краев, если они есть
  46. if($page - 2 > 0) $page2left = ' <a href= ./page?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
  47. if($page - 1 > 0) $page1left = '<a href= ./page?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
  48. if($page + 2 <= $total) $page2right = ' | <a href= ./page?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
  49. if($page + 1 <= $total) $page1right = ' | <a href= ./page?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
  50.  
  51. // Вывод меню
  52. echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
  53.       ?>


Заранее спасибо за ответы и помощь.
2. ALEN - 21 Апреля, 2010 - 10:23:10 - перейти к сообщению
В бщем вопрос такой, Вы умеете например методом GET получить номер текущей страницы? Потом сколько сообщений должно быть на странице определить? А следом посчитать количество страниц в базе?

Если все это можете то проблем не возникнет. Если не знаете, то конкретно разбирайте поставленые вопросы выше.

Не хочу давать вам готовый свой класс, вам стоит самому научится.

Сама картинка такая:
Когда у нас есть количество страниц в базе и мы хотим например выводить 10 сообщений на страницу, то мы просто количество сообщений делим на 10 и округляем в большую сторону. Получаем так число страниц в навигации.

И далее просто пользуемся оператором for и выводим необходимые ссылки.

Из базы MySQL выведем страницы с помощью команды SELECT , но чтоб нам вывести необходимые собщения для определенной страницы, то нам необходимо использовать LIMIT , а в его параметрах указывать первое число, как: (текущая страница умноженная на количество выводимых страниц и отнимаем количество выводимых страниц (например: текущая страница 2 а выводим по 10 новостей, то получается - ((2*10)-10))=10) - т.е. мы указываем что выводить нужно с 10 позиции, а второй параметр LIMIT - указываем сколько строк выводить т.е. в данном случае 10 .
3. Shoorman - 22 Апреля, 2010 - 02:11:34 - перейти к сообщению
ALEN пишет:
В бщем вопрос такой, Вы умеете например методом GET получить номер текущей страницы? Потом сколько сообщений должно быть на странице определить? А следом посчитать количество страниц в базе?

Если все это можете то проблем не возникнет. Если не знаете, то конкретно разбирайте поставленые вопросы выше.

Не хочу давать вам готовый свой класс, вам стоит самому научится.

Сама картинка такая:
Когда у нас есть количество страниц в базе и мы хотим например выводить 10 сообщений на страницу, то мы просто количество сообщений делим на 10 и округляем в большую сторону. Получаем так число страниц в навигации.

И далее просто пользуемся оператором for и выводим необходимые ссылки.

Из базы MySQL выведем страницы с помощью команды SELECT , но чтоб нам вывести необходимые собщения для определенной страницы, то нам необходимо использовать LIMIT , а в его параметрах указывать первое число, как: (текущая страница умноженная на количество выводимых страниц и отнимаем количество выводимых страниц (например: текущая страница 2 а выводим по 10 новостей, то получается - ((2*10)-10))=10) - т.е. мы указываем что выводить нужно с 10 позиции, а второй параметр LIMIT - указываем сколько строк выводить т.е. в данном случае 10 .


Так я и использую все те приёмы, о которых вы пишете: get, for, select, limit. И формула для limit такая же. Проблема, видимо, где-то в использовании именно get. Попробовал покрутить так и эдак, перечитал её использование, но никак не получается...

Попробовал даже другие скрипты из инета использовать - большинство основано на таком же принципе. Но ничего не получается. Одинаковая ошибка...
4. Vivasvat - 08 Октября, 2010 - 09:21:29 - перейти к сообщению
Раз у тебя вылезает ошибка 404, то как я думаю ты вообще не попадаешь на страницу со скриптом, может ты не отредактировал в отображении постраничной навигации на какие страницы у тебя должен быть переход? Напиши нам, что у тебя в строке браузера, и название страницы со скриптом.
5. SergAntDnepr - 12 Октября, 2010 - 22:26:17 - перейти к сообщению
Подскажите пожалуйста, а что в этом скрипте надо подправить чтобы заметки из базы данных выводились не с первой по последнюю, а с последней по первую??? Наверное где то здесь следует что-то изменить:
// Вычисляем начиная к какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT * FROM table WHERE confirm = '' LIMIT $start, $num");
6. Uchkuma - 12 Октября, 2010 - 22:42:00 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT * FROM table WHERE confirm = '' ORDER BY id DESC LIMIT $start, $num");
Вместо id может быть другое поле, по которому надо сортировать.
(Добавление)
Заметки будут отсортированы наоборот, а нумерация страниц останется с первой по последнюю.
7. SergAntDnepr - 12 Октября, 2010 - 23:07:54 - перейти к сообщению
Uchkuma, ОГРОМНОЕ Спасибо! Заработало!!!
8. ByLex - 27 Сентября, 2011 - 19:40:57 - перейти к сообщению
так же воспользовался статьей.....но почему то когда по ссылкам начинаешь переходить, то товары не меняются....т.е. если на первый был товар шланг, то перейдя на вторую страницу так и остается этот шланг и все остальные какие были на первой странице....помогите разобраться? Что я не так делаю

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. if (!isset($priv) || !isset($HTTP_SESSION_VARS['privilege']) || $priv == '' || $priv < 1 || $priv > 5 || !isset($user_login) || !isset($HTTP_SESSION_VARS['user_login']) || $userlogin == '' || !isset($userid) || !isset($HTTP_SESSION_VARS['user_id']) || $userid == '')
  4.         {
  5.         Header("Location: start.php?exit");
  6.         exit;
  7.         }
  8. // Построение дерева
  9. include("functions.php");
  10. function build_tree($idp)
  11. {
  12.         global $id_sec;
  13.         $result = mysql_query("select id, name from grandi_catalog where idp = $idp and isprod=0 order by sort");
  14.         while (list($id, $name)=mysql_fetch_array($result))
  15.         {
  16.                 if ($id == $id_sec)
  17.                         {
  18. ?>
  19. node_<?=$id?> = node_<?=$idp?>.addItem(new TreeNode('<b><?=$name?></b>', 'folder.gif', null, false, true, '', '', 'folderopen.gif'));
  20. <?PHP
  21.                         }
  22.                         else
  23.                         {
  24. ?>
  25. node_<?=$id?> = node_<?=$idp?>.addItem(new TreeNode('<a href="index.php?catalog_view+&id=<?=$id?>"><?=$name?></a>', 'folder.gif', null, false, true, '', '', 'folderopen.gif'));
  26. <?PHP
  27.                         }
  28.                         build_tree($id);
  29.         }
  30. }
  31.  
  32. // рекурсивное удаление всех разделов и товаров заданного раздела
  33. function delete_cat($id_ed) {
  34.         $result = mysql_query("select id from grandi_catalog where idp = $id_ed order by id");
  35.         while ( list($id) = mysql_fetch_array($result) )
  36.                 delete_cat($id);
  37.         $result = mysql_query("DELETE from grandi_catalog WHERE id = $id_ed");
  38. }
  39.  
  40. function print_section() {
  41. global $id_sec;
  42.  
  43.  
  44. $resultat = mysql_query("SELECT id,name,idheaders,type1,type2,type3,string1,string2,hide,number1,number2,number3,number4,new FROM grandi_catalog WHERE idp = $id_sec and isprod=1 ORDER BY sort");
  45.  
  46.        
  47.        
  48.        
  49.         if(mysql_num_rows($resultat)){
  50.                 ?><p class="head" align=left>Список разделов:
  51.                 <table width=100% border="1" bordercolor="#e1e7ec" style="border-collapse: collapse;">
  52.                 <tr>
  53.                 <td colspan=6 align=center class="Header01"><strong>Действия</strong></td>
  54.                 <td class="Header01" width=100%>&nbsp;<b>Раздел</b>&nbsp;</td>
  55.                 </tr><?
  56.                 while($pr = mysql_fetch_array($res))
  57.                 {
  58.                 ?><tr>
  59.                                 <td align=center><input name="prod_<?=$pr[id]?>" type="checkbox" class=checkbox></td>
  60.                                 <td align=center><img src="Images/edit.gif"  alt="Редактировать" border="0"></td>
  61.                                 <td align=center><a href="javascript:enter('delete',0,<?=$pr[id]?>);"><img src="Images/delete.gif"  alt="Удалить" border="0"></a></td>
  62.                                 <td align=center><? if($pr[hide]) { ?><a href="javascript:enter('activate',0,<?=$pr[id]?>);"><img src="Images/off.gif"  alt="Активировать" border="0"></a><?}else{?><a href="javascript:enter('deactivate',0,<?=$pr[id]?>);"><img src="Images/on.gif"  alt="Деактивировать" border="0"></a><?}?></td>
  63.                                 <td align=center><a href="javascript:enter('up',0,<?=$pr[id]?>);"><img src="Images/up.gif" alt="Поднять" border="0"></a></td>
  64.                                 <td align=center><a href="javascript:enter('down',0,<?=$pr[id]?>);"><img src="Images/down.gif"  alt="Опустить" border="0"></a></td>
  65.                                 <td align=left>&nbsp;<a href="index.php?catalog_view+&id=<?=$pr[id]?>" title="Редактировать"><b><?=$pr[name]?></b></a>&nbsp;</td>
  66.                         </tr>
  67.                         <?     
  68.                 }
  69.                 ?>
  70.                 <tr>
  71.                 <td colspan=7 align=left>
  72.                 С отмеченными: <a href="javascript:enter('activate',0,0);"><img src="Images/on.gif"  alt="Активировать" border="0"></a> <a href="javascript:enter('deactivate',0,0);"><img src="Images/off.gif"  alt="Деактивировать" border="0"></a> <a href="javascript:enter('delete',0,0);"><img src="Images/delete.gif"  alt="Удалить" border="0"></a>
  73.                 </td>
  74.                 </table><?
  75.         }
  76. }
  77. // вывод продукции
  78. function print_production()
  79. {
  80.  
  81. $num = 550;  
  82. // Извлекаем из URL текущую страницу  
  83. $page = $_GET['page'];  
  84. // Определяем общее число сообщений в базе данных  
  85. $res = mysql_query("SELECT COUNT(*) FROM grandi_catalog");  
  86. $posts = mysql_result($res, 0);  
  87. // Находим общее число страниц  
  88. $total = intval(($posts - 1) / $num) + 1;  
  89. // Определяем начало сообщений для текущей страницы  
  90. $page = intval($page);  
  91. // Если значение $page меньше единицы или отрицательно  
  92. // переходим на первую страницу  
  93. // А если слишком большое, то переходим на последнюю  
  94. if(empty($page) or $page < 0) $page = 1;  
  95.   if($page > $total) $page = $total;  
  96. // Вычисляем начиная к какого номера  
  97. // следует выводить сообщения  
  98. $start = $page * $num - $num;  
  99. // Выбираем $num сообщений начиная с номера $start
  100.  
  101.         // :KLUDGE: tmh 040928: Сложный запрос
  102.         // Возможно будет замедлять работу системы
  103.         // Проверить на объеме данных от 10000 до 100000 строк
  104.         // При необходимости оптимизировать таблицу и наложить соответсвующие индексы.
  105.         global $id_sec;
  106.         $res = mysql_query("SELECT id,name,idheaders,type1,type2,type3,string1,string2,hide,number1,number2,number3,number4,new FROM grandi_catalog WHERE idp = $id_sec and isprod=1 ORDER BY sort LIMIT $start, $num");
  107.                 $i = 0;
  108.        
  109.         while($pr = mysql_fetch_array($res))
  110.        
  111.        
  112.  
  113.         {
  114.                 $i++;
  115.                 // :TODO: tmh 040928: Надо решить, будут ли типы изменяемые
  116.                 // Если типы не будут изменяться, убрать блок проверки
  117.                 if($idheaders != $pr[idheaders]){
  118.                         list($head) = mysql_fetch_array(mysql_query("select headers from grandi_catalog_headers where id = ".$pr[idheaders].""));
  119.                         $head = explode(";",$head);
  120.                         if($naim == $head[0] && $tp1 == $head[1] && $tp2 == $head[2] && $tp3 == $head[3]) {}
  121.                         else{
  122.                                 if($idheaders) {?></table><?}
  123.                                 $idheaders = $pr[idheaders];
  124.                                 $naim = $head[0];
  125.                                 $tp1 = $head[1];
  126.                                 $tp2 = $head[2];
  127.                                 $tp3 = $head[3];
  128.                                 $s1 = $head[4];
  129.                                 $s2 = $head[5];
  130.                                 $p1 = $head[14];
  131.                                 $p2 = $head[15];
  132.                                 $p3 = $head[16];
  133.                                 $p4 = $head[17];
  134.                                 $p5 = $head[18];
  135.                                
  136.                                 ?>
  137.                                 <p class="head" align=left>Список продукции:
  138.                                 <table width=100% border="1" bordercolor="#e1e7ec" style="border-collapse: collapse;"><tr>
  139.                                 <td colspan=6 align=center class="Header01">&nbsp;<strong>Действия</strong>&nbsp;</td>
  140.                                 <td class="Header01">&nbsp;<b><?=$naim?></b>&nbsp;</td>
  141.                                 <?if($tp1){?><td align=center class="Header01" nowrap>&nbsp;<b><?=$tp1?></b>&nbsp;</td><?}?>
  142.                                 <?if($p1){?><td align=center class="Header01" nowrap>&nbsp;<b><?=$p1?></b>&nbsp;</td><?}?>
  143.                                 <?if($p2){?><td align=center class="Header01" nowrap>&nbsp;<b><?=$p2?></b>&nbsp;</td><?}?>
  144.                                 <?if($p3){?><td align=center class="Header01" nowrap>&nbsp;<b><?=$p3?></b>&nbsp;</td><?}?>
  145.                                 <?if($p4){?><td align=center class="Header01" nowrap>&nbsp;<b><?=$p4?></b>&nbsp;</td><?}?>
  146.                                 </tr><?
  147.                        
  148.                        
  149.                         }
  150.                         if ($page != 1) $pervpage = '<a href= /grandi/index.php?catalog_view+&id=4555><<</a>  
  151.                               <a href= /grandi/index.php?catalog_view+&id=4555&str='. ($page - 1) .'><</a> ';  
  152. // Проверяем нужны ли стрелки вперед  
  153. if ($page != $total) $nextpage = ' <a href= /grandi/index.php?catalog_view+&id=4555&str='. ($page + 1) .'>></a>  
  154.                                   <a href= /grandi/index.php?catalog_view+&id=4555&str=' .$total. '>>></a>';  
  155.  
  156. // Находим две ближайшие станицы с обоих краев, если они есть  
  157. if($page - 2 > 0) $page2left = ' <a href= /grandi/index.php?catalog_view+&id=4555&str='. ($page - 2) .'>'. ($page - 2) .'</a> | ';  
  158. if($page - 1 > 0) $page1left = '<a href= /grandi/index.php?catalog_view+&id=4555&str='. ($page - 1) .'>'. ($page - 1) .'</a> | ';  
  159. if($page + 2 <= $total) $page2right = ' | <a href= /grandi/index.php?catalog_view+&id=4555&str='. ($page + 2) .'>'. ($page + 2) .'</a>';  
  160. if($page + 1 <= $total) $page1right = ' | <a href= /grandi/index.php?catalog_view+&id=4555&str='. ($page + 1) .'>'. ($page + 1) .'</a>';
  161.  
  162. // Вывод меню  
  163. echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;  
  164.                        
  165.                        
  166.                        
  167.                        
  168.                        
  169.                        
  170.                        
  171.                        
  172.                        
  173.                 }
  174.                        
  175.                 ?>
  176.                                
  177.                         <tr>
  178.                         <td align=center><input id="checkbox_prod_<?= $pr[id] ?>" name="prod_<?=$pr[id]?>" type="checkbox" class=checkbox></td>
  179.                         <td align=center><a href="index.php?catalog_edit+&id=<?=$pr[id]?>" title="Редактировать"><img src="Images/edit.gif"  alt="Редактировать" border="0"></a></td>
  180.                         <td align=center><a href="javascript:enter('delete',1,<?=$pr[id]?>);"><img src="Images/delete.gif"  alt="Удалить" border="0"></a></td>
  181.                         <td align=center><? if($pr[hide]) { ?><a href="javascript:enter('activate',1,<?=$pr[id]?>);"><img src="Images/off.gif"  alt="Активировать" border="0"></a><?}else{?><a href="javascript:enter('deactivate',1,<?=$pr[id]?>);"><img src="Images/on.gif"  alt="Деактивировать" border="0"></a><?}?></td>
  182.                        
  183.                         <td align=center><a href="javascript:enter('up',1,<?=$pr[id]?>);"><img src="Images/up.gif" alt="Поднять" border="0"></a></td>
  184.                         <td align=center><a href="javascript:enter('down',1,<?=$pr[id]?>);"><img src="Images/down.gif"  alt="Опустить" border="0"></a></td>
  185.                
  186.                        
  187.                         <td width=100%>&nbsp;<a href="index.php?catalog_edit+&id=<?=$pr[id]?>" title="Редактировать"><?=$pr[name]?></a>&nbsp;</td>
  188.                         <?if($tp1){?><td align=center>&nbsp;<?=$pr[type1]?>&nbsp;</td><?}?>
  189.                         <?if($p1){?><td align=center>&nbsp;<?=$pr[number1]?>&nbsp;</td><?}?>
  190.                         <?if($p2){?><td align=center>&nbsp;<?=$pr[number2]?>&nbsp;</td><?}?>
  191.                         <?if($p3){?><td align=center>&nbsp;<?=$pr[number3]?>&nbsp;</td><?}?>
  192.                         <?if($p4){?><td align=center>&nbsp;<?=$pr[number4]?>&nbsp;</td><?}?>
  193.                 </tr>
  194.                 <?
  195.         }
  196.         if($i)
  197.         {?>
  198.                 <tr>
  199.                 <td colspan=7 align=left>
  200.                
  201.                 С отмеченными: <a href="javascript:enter('activate',1,0);"><img src="Images/on.gif"  alt="Активировать" border="0"></a> <a href="javascript:enter('deactivate',1,0);"><img src="Images/off.gif"  alt="Деактивировать" border="0"></a> <a href="javascript:enter('delete',1,0);"><img src="Images/delete.gif"  alt="Удалить" border="0"></a>
  202.                 </td>
  203.                 <?if($p1 || $p2 || $p3 || $p4 || $p5){?>
  204.                         <td colspan=5 align=right><input type=submit class=button value="Применить"></td>
  205.                 <?}?>
  206.                 </tr>
  207.                 </table>
  208.         <?}?>
  209.        
  210. <?
  211. }
  212. // Удалить одно наименование продукции
  213. function delete_prod($id) {
  214.         //list($idp,$name,$isprod) = mysql_fetch_array(mysql_query("select idp,name,isprod from grandi_catalog where id = $id"));
  215.         if ($isprod) {
  216.                 //$del = "delete from grandi_catalog where idp = $idp and name = '".$name."' and isprod = 1";
  217.                 $del = "delete from grandi_catalog where id = $id and isprod = 1 limit 1";
  218.                 mysql_query($del);
  219.         }
  220.         else{
  221.                 $sel = mysql_query("select id from grandi_catalog where idp = $id");
  222.                 while( list($idx) = mysql_fetch_array($sel) ) delete_prod($idx);
  223.                 $del = "delete from grandi_catalog where id = $id limit 1";
  224.                 mysql_query($del);
  225.         }
  226. }
  227. // Функция активации/деактивации продукции
  228. function activate_prod($id,$hide) {
  229.         //list($idp,$name) = mysql_fetch_array(mysql_query("select idp,name from grandi_catalog where id = $id"));
  230.         //$upd = "update grandi_catalog set hide = '".$hide."' where idp = $idp and name = '".$name."'  ";
  231.         $upd = "update grandi_catalog set hide = '".$hide."' where id = $id limit 1";
  232.         mysql_query($upd);
  233. }
  234. // функция подъема/опускания продукции
  235. function lift_prod($id,$lift)
  236. {
  237.         list($idp,$name,$sort) = mysql_fetch_array(mysql_query("select idp,name,sort from grandi_catalog where id = $id"));
  238.         if($lift == "up")
  239.         {
  240.                 $sel = "select max(sort) from grandi_catalog where idp = $idp and sort < $sort  ";
  241.                 list($sort2) = mysql_fetch_array(mysql_query($sel));
  242.         }else if($lift == "down")
  243.         {
  244.                 $sel = "select min(sort) from grandi_catalog where idp = $idp and sort > $sort  ";
  245.                 list($sort2) = mysql_fetch_array(mysql_query($sel));
  246.         }else{
  247.                 print "Bad arguments";
  248.                 return;
  249.         }
  250.         if($sort2)
  251.         {
  252.                 $upd1 = "update grandi_catalog set sort = '-1' where idp = $idp and sort = $sort";
  253.                 $upd2 = "update grandi_catalog set sort = $sort where idp = $idp and sort = $sort2";
  254.                 $upd3 = "update grandi_catalog set sort = $sort2 where idp = $idp and sort = '-1'";
  255.                 mysql_query($upd1);
  256.                 mysql_query($upd2);
  257.                 mysql_query($upd3);
  258.         }
  259.  
  260. }
  261. function update_cat($id) {
  262.         //NAF
  263.        
  264.         //NAF
  265.         $arr = array();
  266.         $hasmore = 'n';
  267.        
  268.         foreach ($_POST as $key => $value) {
  269.         if ($hasmore == 'n' && $value && $key != 'cat_number1' && $key != 'cat_name' && $key != 'cat_isprod') $hasmore = 'y';
  270.                 if (substr($key, 0, 4) == "cat_") {
  271.                         if (is_array($value)) {
  272.                                 $value = implode(";", $value);
  273.                         }
  274.                         if (substr($key, 4, 4) == "text") {
  275.                                 $value = grandi_string_del_html($value, substr($key, 4));
  276.                         }
  277.                         $arr[] = substr($key, 4)." = '".$value."'";
  278.                 }
  279.         }
  280.  
  281.         mysql_query("update grandi_catalog set ".implode(", ", $arr).", hasmore = '$hasmore' where id = '{$id}' limit 1");
  282.                 $row = mysql_fetch_assoc(mysql_query("SELECT id, path FROM grandi_catalog WHERE isprod != '1' AND id = '{$id}' LIMIT 1"));
  283.        
  284.         if (!$row || $row[path] == "") {
  285.                 return;
  286.         }
  287.        
  288. }
  289.  
  290. function add_cat($id) {
  291.  
  292.         //NAF
  293.         $uploaddir = $_SERVER['DOCUMENT_ROOT'].'/images/products/';
  294.         $upfiled = time().basename($_FILES['cat_photo']['name']);
  295.         $uploadfile=$uploaddir.$upfiled;
  296.         move_uploaded_file($_FILES['cat_photo']['tmp_name'], $uploadfile);
  297.         $small_name=$uploaddir.'thumb_list/'.$upfiled;
  298.         $medium_name=$uploaddir.'thumb_prev/'.$upfiled;
  299.         img_resize($uploadfile, $medium_name, 320, 240);
  300.         img_resize($uploadfile, $small_name, 100, 100);
  301.         chmod($small_name, 0755);
  302.         chmod($uploadfile, 0755);
  303.         chmod($medium_name, 0755);
  304.         $_POST[cat_photo]=$upfiled;
  305.         //NAF
  306.         if ($id == 0) {
  307.                 return;
  308.         }
  309.        
  310.         $arr = array();
  311.         $hasmore = 'n';
  312.         foreach ($_POST as $key => $value) {
  313.         if ($hasmore == 'n' && $value && $key != 'cat_number1' && $key != 'cat_name' && $key != 'cat_isprod') $hasmore = 'y';
  314.                 if (substr($key, 0, 4) == "cat_") {
  315.                         if (is_array($value)) {
  316.                                 $value = implode(";", $value);
  317.                         }
  318.                         $value = grandi_string_del_html($value, substr($key, 4));
  319.                         $arr[] = substr($key, 4)." = '".$value."'";
  320.                 }
  321.         }
  322.        
  323.         list($sort) = mysql_fetch_array(mysql_query("select max(sort) from grandi_catalog"));
  324.        
  325.         if ($_POST[cat_isprod]) {
  326.                 mysql_query("insert into grandi_catalog set ".implode(", ", $arr).", idp = '{$id}', idheaders = 1, sort = '".($sort + 1)."', hasmore = '$hasmore'");
  327.         }
  328.         else {
  329.         mysql_query("insert into grandi_catalog set ".implode(", ", $arr).", idp = '{$id}', idheaders = 0, sort = '".($sort + 1)."', links = 'Полезные ссылки'");
  330.         }
  331.        
  332. }
  333.  
  334. function select_print_files($dir, $root = "", $selected = array()) {
  335.        
  336.         $files = array();
  337.        
  338.         if ($dh = @opendir($dir)) {
  339.                 while (($file = readdir($dh)) !== false) {
  340.                         $root_file = $root == "" ? $file : $root."/".$file;
  341.                         if ($file == "." || $file == ".." || $file == "thumb_list" || $file == "thumb_prev") {
  342.                                 ;
  343.                         }
  344.                         else if (is_dir($dir."/".$file)) {
  345.                                 select_print_files($dir."/".$file, $root_file, $selected);
  346.                         }
  347.                         else if (is_file($dir."/".$file)) {
  348.                                 if (in_array($root_file, $selected)) {
  349.                                         echo "<option value=\"{$root_file}\" selected=\"selected\">{$root_file}</option>";
  350.                                 }
  351.                                 else {
  352.                                         echo "<option value=\"{$root_file}\">{$root_file}</option>";
  353.                                 }
  354.                         }
  355.                 }
  356.                 closedir($dh);
  357.         }
  358.        
  359.         return $files;
  360.        
  361. }
  362.  
  363. ?>
9. fullzero - 28 Декабря, 2011 - 12:38:59 - перейти к сообщению
Сделал вывод как бы в таблицу но выводит с лишними пустыми строками Не понял
10. fullzero - 29 Декабря, 2011 - 08:37:49 - перейти к сообщению
В базе всего 13 записей а в таблицу он выводит лишние строки

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. include $_SERVER['DOCUMENT_ROOT'].'/config.php';
  4.  
  5. // Переменная хранит число сообщений выводимых на станице
  6. $num = 5;
  7. // Извлекаем из URL текущую страницу
  8. $page = $_GET['page'];
  9. // Определяем общее число сообщений в базе данных
  10. $result = mysql_query("SELECT * FROM news");
  11. $posts = mysql_num_rows($result); //13
  12. // Находим общее число страниц
  13. $total = intval(($posts - 1) / $num) + 1; //3
  14. // Определяем начало сообщений для текущей страницы
  15. $page = intval($page);
  16. // Если значение $page меньше единицы или отрицательно
  17. // переходим на первую страницу
  18. // А если слишком большое, то переходим на последнюю
  19. if(empty($page) or $page < 0) $page = 1;
  20. if($page > $total) $page = $total;
  21. // Вычисляем начиная к какого номера
  22. // следует выводить сообщения
  23. $start = $page * $num - $num;
  24. // Выбираем $num сообщений начиная с номера $start
  25. $result = mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT $start, $num");
  26. echo '<table width="100%" border="1" cellspacing="2" cellpadding="2">
  27. <tr>
  28. <th>id</th>
  29. <th>title</th>
  30. <th>news</th>
  31. </tr>';
  32. // В цикле переносим результаты запроса в массив $postrow
  33. while ( $postrow[] = mysql_fetch_array($result))
  34.  
  35. for($i = 0; $i < $num; $i++)
  36. {
  37. echo '
  38. <tr>
  39. <td>'.$postrow[$i]['id'].'</td><td>'.$postrow[$i]['title'].'</td><td>'.$postrow[$i]['message'].'</td>
  40. </tr>
  41. ';
  42. }
  43. echo '</table>';
  44. // Проверяем нужны ли стрелки назад
  45. if ($page != 1) $pervpage = '<a href= ?page=1><<</a>
  46. <a href= ?page='. ($page - 1) .'><</a> ';
  47. // Проверяем нужны ли стрелки вперед
  48. if ($page != $total) $nextpage = ' <a href= ?page='. ($page + 1) .'>></a>
  49. <a href= ?page=' .$total. '>>></a>';
  50. // Находим две ближайшие станицы с обоих краев, если они есть
  51. if($page - 2 > 0) $page2left = ' <a href= ?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
  52. if($page - 1 > 0) $page1left = '<a href= ?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
  53. if($page + 2 <= $total) $page2right = ' | <a href= ?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
  54. if($page + 1 <= $total) $page1right = ' | <a href= ?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
  55. // Вывод меню
  56. echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
  57.  
  58.  
  59. ?>

(Добавление)
Не могу разобраться, кто нить взгляните...
11. PATCH - 01 Января, 2012 - 18:31:56 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. while ( $postrow[] = mysql_fetch_array($result))
  2.  $end = $num - $start;
  3. for($i = 0; $i <  $end; $i++)


вот так попробуй
12. fullzero - 19 Января, 2012 - 14:46:05 - перейти к сообщению
PATCH спасибо, попробую

 

Powered by ExBB FM 1.0 RC1