У меня есть несколько вопросов относительно скрипта Pagination PHP для базы данных с плоским файлом, который я нашел. Я разместил сценарий ниже.
<?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
Пожалуйста, порекомендуйте альтернативный код для получения требуемых данных.
Наконец, я хотел бы включить ссылки на «Первая страница» и «Последняя страница», а также «Предыдущая страница» и «Следующая страница», как и текущий код.
Я прошу прощения за мои неряшливые сообщения, но буду очень благодарен всем, кто мог бы помочь мне понять изменения, необходимые для получения желаемых результатов. Благодаря…..
Проблема с линией 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');
,