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.SU

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


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

> Без описания
Facecontrol
Отправлено: 21 Февраля, 2011 - 09:25:34
Post Id


Новичок


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


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




Вот есть такой скрипт
PHP:
скопировать код в буфер обмена
  1. <?
  2. $arr = range(0,500);
  3. $c = count($arr);
  4. $onpage = 10;
  5. function navigation($p,$onpage,$count){
  6. $pages = (int) ceil($count / $onpage);
  7. $start = (int) ($p-1) * $onpage;
  8. $end = (int) ($p * $onpage);
  9. $end = ($end<=0) ? $end=1 : $end;
  10. return array('start'=>$start,'end'=>$end,'pages'=>$pages);
  11. }
  12. $page = (isset($_GET['page'])) ? abs(intval($_GET['page'])) : 1;
  13. $nav = navigation($page,$onpage,$c);
  14. for($i=$nav['start'];$i<=$nav['end'];$i++){
  15. if(array_key_exists($page,$arr)){
  16. echo $arr[$page].'<br/>';
  17. } else {echo 'error';}
  18. }
  19. if($nav['pages']>1){
  20. if($p>1) {echo '<a href="?page='.($p-1).'">Назад</a> ';}
  21. if($p!=$nav['pages']) {echo ' <a href="?page='.($p+1).'">Далее</a>';}
  22. }?>

Объясните пожалуйста,откуда взялась $p и $count ведь им изначально ничего присвоено небыло?


Отредактировано модератором: JustUserR, 21 Февраля, 2011 - 17:33:29
Обрамил PHP-код в соответствующий BB-тег
 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Февраля, 2011 - 09:51:53
Post Id



Активный участник


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


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




PHP:
скопировать код в буфер обмена
  1. function test($a,$b,$c) { echo $a.$b.$c; }
  2. $var1 = 'ыть ыть ыть';
  3. $var2 = ' - '.345550.' о как..... ';
  4. test($var1,$var2,'бывает...');

Так понятнее откуда беруться переменные??? Радость
 
 Top
Facecontrol
Отправлено: 21 Февраля, 2011 - 11:27:14
Post Id


Новичок


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


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




что то не совсем понятно,как им передаются параметры

(Отредактировано автором: 21 Февраля, 2011 - 11:54:44)

 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Февраля, 2011 - 12:06:49
Post Id



Активный участник


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


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




Очень просто - параметры передаются по ссылкам.
Все "имена переменных" внутри скобок после имени ф-ции, это её аргументы.
Т.е. если смотреть ВНЕ ф-ции, то это даже и не переменные вовсе.
Однако в теле ф-ции это уже полноправные переменные.
Так вот если очень хочется работать с реальной переменной, есть 2 варианта:
1. Прописать внутри ф-ции: global $variable;
2. Передавать в ф-цию саму переменную, а не ссылку на нее: test(&$variable);
 
 Top
JustUserR
Отправлено: 21 Февраля, 2011 - 17:46:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




Facecontrol пишет:
Объясните пожалуйста,откуда взялась $p и $count ведь им изначально ничего присвоено небыло?
В общем случае для используемых программных переменных осуществляется возможность их расположения в различных областях видимости и пространствах имен - выбор которых обеспечивается в зависимости от точки определения объекта и уровня трактования инициализирующего элементного потока кода - для реализации возможности использование переменного объекта из дифферентой области хранения осуществляется применения механизма ссылок - в частности определение global $myvar в действительности является эквивалентной формой записи для выражения $myvar=&$_GLOBALS['myvar']


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Facecontrol
Отправлено: 22 Февраля, 2011 - 23:20:49
Post Id


Новичок


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


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




Помогите.Пытался написать навигацию,но ничего не вышло.Не получается
<?
$arr=file('file.php');
$carr=count($arr);
$collpage=1;
$page = (isset($_GET['page'])) : 1;
$i=0;
$ot=$i*$collpage;
$do=$ot*$coolpage;
if(count($arr[]) =>$do)
{
echo $do;
}
if($page['pages']>1)
{
if($page>1)
{
echo '<a href="?page='.($page-1).">назад</a>';
}
if($page<=1['pages'])
{ //дальше где то ошибка в '=' я уже всё перепробовал:
echo '<a href="?page='.($page+1).">далее</a>';
}
}
?>


Отредактировано модератором: Uchkuma, 23 Февраля, 2011 - 00:17:32
Когда сами начнете код обрамлять?
 
 Top
LEONeso
Отправлено: 23 Февраля, 2011 - 00:39:33
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


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




Facecontrol, хватит пытаться и пора бы уже начать использовать поиск.

Постраничный вывод на PHP - рабочий код... но стоит учитывать один нюанс , если код не работает, возможно дело в строке
PHP:
скопировать код в буфер обмена
  1. // Находим общее число страниц
  2. $total = intval(($posts - 1) / $num) + 1;

исправляется так:
PHP:
скопировать код в буфер обмена
  1.         $total = intval(($posts[0]-1) / $num)+1;// Находим общее число страниц


и в место этого

можно применять, что угодно, пример:


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Facecontrol
Отправлено: 24 Февраля, 2011 - 19:41:37
Post Id


Новичок


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


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




Так зачем мне мускул?У меня же на файлах навигация...
 
 Top
Okula
Отправлено: 24 Февраля, 2011 - 19:53:06
Post Id



Участник


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


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




Facecontrol, причём тут навигация? У тебя база данных на файлах или на MySQL?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB