В 4 ветке идет все через foreach. Но там опять же вывод всех файлов без листинга!
# blackvj (28.12.2013 / 14:25)
Ибо финкция while перепереборку ключей в массиве делает.
А for как раз устанавливает лимиты на вывод результата?!
Да не если пое****ся, то можно и while ,но удобнее всего for
Krite, Я про это и говорю.... тогда вопрос след.
как это
while (list($key, $val) = each($fruits))
через
for
Записать???
Я уже молчу за сортировку по алфавиту...тут бля по ключу понять так и не смог...
С этими свойствами OC....ппц
blackvj, старт можно брать с двига, а конец рассчитать можно
blackvj, $page = (isset($_GET['page']) && $_GET['page'] > 0) ? intval($_GET['page']) : 1;
$arr = range(1, 82); /* тест массив */
$n = 5; /* количество элементов на станицу */
$total = sizeof($arr); /* всего элементов , для базы это запрос */
$start = $page==1 ? 0 : ($page - 1) * $n;
$end = $page==ceil($total / $n) ? $total : $page * $n;
for ($i=$start;$i<$end;$i++) {
echo $arr[$i] . '<br/>';
}
Koenig, И так прописал так
$array = array(); // Разрешаем создание массива
$dir = opendir('../pers/' . $id); // Открываем нужную папку
while (false !== ($file = readdir($dir))) {
if (($file != '.') && ($file != "..") && ($file != "name.dat") && ($file != ".svn") && ($file != "index.php") && ($file != "mini")) {
$array[] = $file;
}
}
closedir($dir);
$total2 = count($array);
$page = (isset($_GET['page']) && $_GET['page'] > 0) ? intval($_GET['page']) : 1;
$arr = range(1, $total2); /* тест массив */
$n = 10; /* количество элементов на станицу */
$total = sizeof($arr); /* всего элементов , для базы это запрос */
$start = $page==1 ? 0 : ($page - 1) * $n;
$end = $page==ceil($total / $n) ? $total : $page * $n;
for ($i=$start;$i<$end;$i++) {
echo $arr[$i] . '<br/>';
}
На выходе показывает
1
2
3
4
...
10
И листинг из 4 страниц. Всего 39 файлов в $total2
При нажатии на 2-ю страницу ты всеравно переходишь на первую страницу.
Тоесть листинг при нажатии на страницы не работает!
Понял что проблема в
Десятичной навигации
echo '<div class="menu">' . pagenav('pers.php?act=cat&id=' . $id . '&', $start, $total, $kmess) . '<br/>';
Тоесть там страница через параметр $page
А здесь $start
Тогда нужно сам переход переделать под 4 ветку. У меня просто 3.2.2
Портировал постраничную навигацию из 4 ветки в 3.2.2.
Спасибо большое Koenig. Твой алгоритм работает отлично. Как раз то что нужно!
Вопрос появился еще один.
Как сделать сортировку категорий по алфавиту?
С этим кодом она идет в разброс согласно OC.
$dir = glob($rootpath . 'pers/*', GLOB_ONLYDIR);
$total_dir = count($dir);
$end = $start + $kmess;
if ($end > $total_dir)
$end = $total_dir;
for ($i = $start; $i < $end; $i++) {
echo is_integer($i / 2) ? '<div class="list1">' : '<div class="list2">';
echo '<img src="../pers/' . $dir[$i] . '/mini/1.png" alt="' . htmlentities(file_get_contents($dir[$i] . '/name.dat'), ENT_QUOTES, 'utf-8') . '" /><br/><a href="pers.php?act=cat&id=' . preg_replace('#^' . $rootpath . 'pers/#isU', '', $dir[$i], 1) . '">' . htmlentities(file_get_contents($dir[$i] . '/name.dat'), ENT_QUOTES, 'utf-8') . '</a> ('
. (int)count(glob($dir[$i] . '/*.png')) . ')</div>';
}
if ($total_dir > $kmess) {
echo '<div class="menu">' . pagenav('pers.php?', $start, $total_dir, $kmess) . '</div>';
}
Я так понял в этом случае функция for отпадает...нужен перебор...
Все имена тут в name.dat тоесть как то извечь инфу нужно с них и по ним сортировать!?