Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: постраничная навигация на php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Shoorman
Отправлено: 21 Апреля, 2010 - 02:04:10
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Апр. 2010  


Помог: 0 раз(а)




Воспользовался советами из статьи: 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.       ?>


Заранее спасибо за ответы и помощь.
 
 Top
ALEN
Отправлено: 21 Апреля, 2010 - 10:23:10
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




В бщем вопрос такой, Вы умеете например методом GET получить номер текущей страницы? Потом сколько сообщений должно быть на странице определить? А следом посчитать количество страниц в базе?

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

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

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

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

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


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Апр. 2010  


Помог: 0 раз(а)




ALEN пишет:
В бщем вопрос такой, Вы умеете например методом GET получить номер текущей страницы? Потом сколько сообщений должно быть на странице определить? А следом посчитать количество страниц в базе?

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

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

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

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

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


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

Попробовал даже другие скрипты из инета использовать - большинство основано на таком же принципе. Но ничего не получается. Одинаковая ошибка...
 
 Top
Vivasvat
Отправлено: 08 Октября, 2010 - 09:21:29
Post Id



Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Раз у тебя вылезает ошибка 404, то как я думаю ты вообще не попадаешь на страницу со скриптом, может ты не отредактировал в отображении постраничной навигации на какие страницы у тебя должен быть переход? Напиши нам, что у тебя в строке браузера, и название страницы со скриптом.
 
 Top
SergAntDnepr
Отправлено: 12 Октября, 2010 - 22:26:17
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Подскажите пожалуйста, а что в этом скрипте надо подправить чтобы заметки из базы данных выводились не с первой по последнюю, а с последней по первую??? Наверное где то здесь следует что-то изменить:
// Вычисляем начиная к какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT * FROM table WHERE confirm = '' LIMIT $start, $num");
 
 Top
Uchkuma
Отправлено: 12 Октября, 2010 - 22:42:00
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT * FROM table WHERE confirm = '' ORDER BY id DESC LIMIT $start, $num");
Вместо id может быть другое поле, по которому надо сортировать.
(Добавление)
Заметки будут отсортированы наоборот, а нумерация страниц останется с первой по последнюю.
 
 Top
SergAntDnepr
Отправлено: 12 Октября, 2010 - 23:07:54
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Uchkuma, ОГРОМНОЕ Спасибо! Заработало!!!
 
 Top
ByLex
Отправлено: 27 Сентября, 2011 - 19:40:57
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




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

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. ?>
 
 Top
fullzero
Отправлено: 28 Декабря, 2011 - 12:38:59
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Сделал вывод как бы в таблицу но выводит с лишними пустыми строками Не понял
 
 Top
fullzero
Отправлено: 29 Декабря, 2011 - 08:37:49
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




В базе всего 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. ?>

(Добавление)
Не могу разобраться, кто нить взгляните...
 
 Top
PATCH
Отправлено: 01 Января, 2012 - 18:31:56
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




PHP:
скопировать код в буфер обмена
  1. while ( $postrow[] = mysql_fetch_array($result))
  2.  $end = $num - $start;
  3. for($i = 0; $i <  $end; $i++)


вот так попробуй
 
 Top
fullzero
Отправлено: 19 Января, 2012 - 14:46:05
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




PATCH спасибо, попробую

(Отредактировано автором: 19 Января, 2012 - 14:50:01)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Обсуждение статей »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB