php - predefinidas - manejo de archivos informatica
Ayuda con la secuencia de comandos de paginaciĆ³n de PHP para la base de datos de archivos planos (1)
Tengo algunas preguntas sobre una secuencia de comandos de paginación PHP para la base de datos de archivos planos que encontré. He publicado el script a continuación.
<?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>'';
?>
Mi primer problema parece estar en la línea 9. Podría cambiar la línea a:
$currentPage = trim(@$_REQUEST[page]);
Pero este cambio no solucionará el error, simplemente lo ocultará. ¿Qué debe hacerse en la línea 9 para eliminar el error de mi página?
En segundo lugar, me gustaría buscar los datos en la línea 5 de una manera diferente. Me gustaría obtener los datos de un archivo de texto, llamémoslo "items.txt", que tiene entradas como a continuación, una por línea.
Fun
Games
Toys
Sports
Fishing
Pools
Boats
Por favor, recomiende un código alternativo para obtener los datos deseados.
Por último, me gustaría incluir enlaces a la "Primera página" y "Última página", así como a "Página anterior" y "Página siguiente", como es el código actual.
Me disculpo por mi publicación descuidada, pero apreciaría mucho a cualquiera que pueda ayudarme a comprender los cambios necesarios para producir los resultados deseados. Gracias.....
Problema con la línea 9
$_REQUEST[page]
tiene dos problemas separados.
1) la page
se lee como el nombre de una constante porque no está citada. PHP luego nota que no hay una page
llamada constante, por lo que se supone que se refería a la page
cadena, que sería si se citara la page
, y desencadena un error para notificarlo. Por lo tanto, use $_REQUEST[''page'']
lugar.
2) ''page''
no es necesariamente una clave de $_REQUEST
porque no se garantiza que se den los datos. Por lo tanto, no puede consultar $_REQUEST[''page'']
antes de asegurarse de que exista. Esto se puede hacer por isset($_REQUEST[''page''])
.
Tu código final debería verse más o menos así, entonces.
if (isset($_REQUEST[''page''])) {
$currentPage = $_REQUEST[''page''];
} else {
$currentPage = ''some default value'';
}
Problema con el origen de datos
La función file()
lee las líneas de un archivo en una matriz, por ejemplo, el cuarto valor de la matriz es también la cuarta línea del archivo. Por lo tanto, puede configurar $dataArray
simplemente como $dataArray = file(''text.dat'');
.