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
Форумы портала PHP.SU :: Версия для печати :: Помогите разобраться с постраничной навигацией
Форумы портала PHP.SU » PHP » Программирование на PHP » Помогите разобраться с постраничной навигацией

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

1. Facecontrol - 21 Февраля, 2011 - 09:25:34 - перейти к сообщению
Вот есть такой скрипт
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 ведь им изначально ничего присвоено небыло?
2. DeepVarvar - 21 Февраля, 2011 - 09:51:53 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. function test($a,$b,$c) { echo $a.$b.$c; }
  2. $var1 = 'ыть ыть ыть';
  3. $var2 = ' - '.345550.' о как..... ';
  4. test($var1,$var2,'бывает...');

Так понятнее откуда беруться переменные??? Радость
3. Facecontrol - 21 Февраля, 2011 - 11:27:14 - перейти к сообщению
что то не совсем понятно,как им передаются параметры
4. DeepVarvar - 21 Февраля, 2011 - 12:06:49 - перейти к сообщению
Очень просто - параметры передаются по ссылкам.
Все "имена переменных" внутри скобок после имени ф-ции, это её аргументы.
Т.е. если смотреть ВНЕ ф-ции, то это даже и не переменные вовсе.
Однако в теле ф-ции это уже полноправные переменные.
Так вот если очень хочется работать с реальной переменной, есть 2 варианта:
1. Прописать внутри ф-ции: global $variable;
2. Передавать в ф-цию саму переменную, а не ссылку на нее: test(&$variable);
5. JustUserR - 21 Февраля, 2011 - 17:46:42 - перейти к сообщению
Facecontrol пишет:
Объясните пожалуйста,откуда взялась $p и $count ведь им изначально ничего присвоено небыло?
В общем случае для используемых программных переменных осуществляется возможность их расположения в различных областях видимости и пространствах имен - выбор которых обеспечивается в зависимости от точки определения объекта и уровня трактования инициализирующего элементного потока кода - для реализации возможности использование переменного объекта из дифферентой области хранения осуществляется применения механизма ссылок - в частности определение global $myvar в действительности является эквивалентной формой записи для выражения $myvar=&$_GLOBALS['myvar']
6. Facecontrol - 22 Февраля, 2011 - 23:20:49 - перейти к сообщению
Помогите.Пытался написать навигацию,но ничего не вышло.Не получается
<?
$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>';
}
}
?>
7. LEONeso - 23 Февраля, 2011 - 00:39:33 - перейти к сообщению
Facecontrol, хватит пытаться и пора бы уже начать использовать поиск.

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

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


и в место этого
PHP:
скопировать код в буфер обмена
  1. while ( $postrow[] = mysql_fetch_array($result))

можно применять, что угодно, пример:
PHP:
скопировать код в буфер обмена
  1. while (($myrow=mysql_fetch_array($result)) !== FALSE) {}
8. Facecontrol - 24 Февраля, 2011 - 19:41:37 - перейти к сообщению
Так зачем мне мускул?У меня же на файлах навигация...
9. Okula - 24 Февраля, 2011 - 19:53:06 - перейти к сообщению
Facecontrol, причём тут навигация? У тебя база данных на файлах или на MySQL?

 

Powered by ExBB FM 1.0 RC1