Xwab
Форумыnavigate_nextНебольшие вопросы по PHP/MySQL

Помогите настроить нумерацию с пагинацией!
Сообщения
Plain

Привет.Ребят, чёто вот никак не могу настроить нумерацию файлов в з-ц с постраничной навигацией..к примеру сейчас выводится номерация от 1 до 10 как положенно, но при переходе на вторую страницу опять пишет от 1 до 10 на третьей так же и т.д. а должно же быть неа первой странице от 1 до 10 на второй от 11 до 20 и т.д.
[php:1:ee1650b70d]
<?php if(!empty($files)): ?>
<?php $position=1;?>
<?php foreach($files as $file): ?>
<div class="menu">

<?php if($file['type'] == 'directory'): ?>
вывод новых если есть<br />
<?php else: ?>
<?php echo '<b>'.$position .'.</b>'; ?> вывод ссылок ?>
<?php $position++; ?>
<?php endif; ?>
</div></div>
<?php endforeach; ?>
<?php else: ?>
<div class="block">
<p>Файлов не найдено!</p>
</div>
<?php endif; ?>


<?php if($pagination)

echo '<div class="block">'. $pagination .'</div>';
$position++;
?>
[/php:1:ee1650b70d]

27 Дек 2012, 10:24
Akdmeh

Не обижайся, но набыдлокодил знатно, я сейчас переформатирую, код нечитаем.
Тогда отвечу)
добавлено спустя 5 минут:
Код ужасающее неполный.
Начнем с того, что ты каждый раз устанавливаешь $position=1; - то есть, открывать первый файл.
Кроме того, $files - откуда берется этот массив?

Без этой информации по этому коду ничем не помочь

27 Дек 2012, 10:35
Plain

Из файла контроллера модуля
[php:1:3acbc2c3cb]
if(empty($files)) {
$result = $this->db->query($sql);
$total = $this->db->get_one("SELECT FOUND_ROWS()");

$files = array();
while($file = $this->db->fetch_array($result)) {
# Получаем счетчики файлов в папках
if($file['type'] == 'directory') {
$counts = $this->db->get_row("SELECT
COUNT(CASE WHEN status = 'active' THEN 1 END) AS count_files,
COUNT(CASE WHEN time > UNIX_TIMESTAMP( ) - 86400 THEN 1 END) AS new_day
FROM #__downloads_files
WHERE path_to_file LIKE '%/". $file['file_id'] ."/%'
");

$file['count_files'] = $counts['count_files'];
$file['new_day'] = $counts['new_day'];
}

$files[] = $file;
}

$files['total'] = $total;

if($using_cache) $this->cache->set($cache_key, $files);
}
[/php:1:3acbc2c3cb]

27 Дек 2012, 10:39
Akdmeh

Начни с того, что тебе нужно знать, с какой записи начинать.
Например, если в нас находится страница в переменной $page, где первая страница по умолчанию - первая.
Тогда: $start_from=($page-1)*10; //10 - количество записей на страницу
$files_total=count($files);
for($i=$start_from; $i<$page*10 && $i<$files_total; $i++): ?>
Выводим информацию о файле так: $files[$i]['name'] //ну или какие там тебе поля нужны

Короче, тебе нужен не foreach. И убери к чертям собачьим с переменной files значение total, это будет сбивать счетчики.

Вообще печально, что люди сейчас знают, что такое контроллеры, но не умеют использовать постраничную навигацию...

27 Дек 2012, 10:48
Plain

Пожалуйста помогите переделать

27 Дек 2012, 12:38
Ответить на тему