Помощь с PHP Pagination Script для базы данных плоских файлов - PullRequest
0 голосов
/ 11 мая 2011

У меня есть несколько вопросов, касающихся PHP Pagination Script For Flat File Database, который я нашел.Я разместил скрипт ниже.

<?php 
echo '<html><body>';

// Data, normally from a flat file or some other source  
$data = "Item1|Item2|Item3|Item4|Item5|Item6|Item7|Item8|Item9|Item10";  
// Put our data into an array  
$dataArray = explode('|', $data);  
// Get the current page  
$currentPage = trim($_REQUEST[page]);  
// Pagination settings  
$perPage = 3;  
$numPages = ceil(count($dataArray) / $perPage);  
if(!$currentPage || $currentPage > $numPages)  
    $currentPage = 0;  
$start = $currentPage * $perPage;  
$end = ($currentPage * $perPage) + $perPage;  
// Extract ones we need  
foreach($dataArray AS $key => $val)  
{  
    if($key >= $start && $key < $end)  
        $pagedData[] = $dataArray[$key];  
}

foreach($pagedData AS $item)  
    echo '<a href="/'. $item .'/index.php">'. $item .'</a><br>';

if($currentPage > 0 && $currentPage < $numPages)  
    echo '<a href="?page=' . ($currentPage - 1) . '">« Previous page</a><br>';  
if($numPages > $currentPage && ($currentPage + 1) < $numPages)  
    echo '<a href="?page=' . ($currentPage + 1) . '" class="right">Next page »</a><br>';

echo '</body></html>';
?>

Моя первая проблема, кажется, в строке 9. Я мог бы изменить строку на:

$currentPage = trim(@$_REQUEST[page]);

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

Во-вторых, я хотел бы получить данные в строке 5 другим способом.Я хотел бы получить данные из текстового файла, назовем его «items.txt», в котором есть записи, как показано ниже, по одной на строку.

Fun
Games
Toys
Sports
Fishing
Pools
Boats

Пожалуйста, порекомендуйте альтернативный код, чтобы получить нужные данные.

Наконец, я хотел бы включить ссылки на «Первую страницу» и «Последняя страница», а также «Предыдущая страница» и «Следующая страница», как и текущий код.

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

1 Ответ

1 голос
/ 11 мая 2011

Проблема со строкой 9

$_REQUEST[page] имеет две отдельные проблемы.

1) page читается как имя константы, потому что она не в кавычках. Затем PHP замечает, что константы с именем page нет, поэтому нужно предположить, что вы имели в виду строку page - что было бы, если бы был page в кавычках - и выдает ошибку, чтобы уведомить вас. Поэтому вместо этого используйте $_REQUEST['page'].

2) 'page' не обязательно является ключом $_REQUEST, поскольку данные не гарантируются для передачи. Следовательно, вы не можете ссылаться на $_REQUEST['page'], пока не убедитесь, что он существует. Это может быть сделано isset($_REQUEST['page']).

Ваш окончательный код должен выглядеть примерно так.

if (isset($_REQUEST['page'])) {
    $currentPage = $_REQUEST['page'];
} else {
    $currentPage = 'some default value';
}

Проблема с источником данных

Функция file() считывает строки файла в массив - например, четвертое значение массива также является четвертой строкой в ​​файле. Поэтому вы можете установить $dataArray просто как $dataArray = file('text.dat');.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...