Ссылки на предыдущую / следующую страницу с использованием PHP
Мне было интересно, сможет ли кто-нибудь удивительный помочь мне?:D
У меня 80 страниц php (в основном это просто статический html, я использую команду php include для верхнего и нижнего колонтитула) - я хочу, чтобы на каждой странице были кнопки "Далее" / "Назад", автоматически ссылающиеся на предыдущие / следующие страницы ( page1.php, page2.php, page3 и т. д.).
Я бы хотел более простой подход, чем вручную связывать каждую кнопку на странице профиля каждого студента, чтобы перейти на следующую / предыдущую страницу студента.
У кого-нибудь есть идеи, как это сделать?:)
* Я начинающий программист, и у меня нет достаточно времени, чтобы узнать, как настроить базу данных /cms для этого школьного проекта.
3 ответа
Это относительно надежное решение (с учетом требований):
$pinfo = pathinfo($_SERVER["SCRIPT_FILENAME"]);
$reqpath = dirname($_SERVER["REQUEST_URI"]);
if(preg_match("/(.*?)(\d+)\.php/", $pinfo["basename"], $matches)) {
$fnbase = $matches[1];
$fndir = $pinfo["dirname"];
$current = intval($matches[2]);
$next = $current + 1;
$prior = $current - 1;
$next_file = $fndir . DIRECTORY_SEPARATOR . $fnbase . $next . ".php";
$prior_file = $fndir . DIRECTORY_SEPARATOR . $fnbase . $prior . ".php";
if(!file_exists($next_file)) $next_file = false;
if(!file_exists($prior_file)) $prior_file = false;
if($prior_file) {
$link = $reqpath . DIRECTORY_SEPARATOR . basename($prior_file);
echo "<a href=\"$link\">Prior</a>";
}
if($prior_file && $next_file) {
echo " / ";
}
if($next_file) {
$link = $reqpath . DIRECTORY_SEPARATOR . basename($next_file);
echo "<a href=\"$link\">Next</a>";
}
}
- Он проверяет, существует ли файл next/prior
- Он поддерживает несколько перечислений, таких как
{bla1, bla2, bla3}
а также{foo1, foo2, foo3}
Вы можете сделать что-то ужасное, как это:
// Get the current file name
$currentFile = $_SERVER["SCRIPT_NAME"];
$currentNumber = preg_replace('/\D/', '', $currentFile);
$next = $currentNumber + 1;
echo "<a href='page$next.php'>next page</a>";
Нечто подобное можно использовать, чтобы найти предыдущую страницу.
Возможно, это не очень хорошая идея по следующим причинам:
- Имена страниц все еще жестко закодированы как
page$next.php
- Если у идентификаторов страниц есть пробелы, вы будете перенаправлять пользователей на 404
- Если страницы переименованы, это ужасно сломается
Я думаю, что вы можете проверить ниже код. Это просто.
<div>
<?php
$maxpage = 80;
if(!isset($_SESSION["currentPage"]))
$_SESSION["currentPage"] = 0;
if($_SESSION["currentPage"] > 1)
{
?>
<a href="page<?php echo ($_SESSION["currentPage"] -1); ?>.php">Previous </a>
<?php
}
if ($_SESSION["currentPage"] < $maxpage )
{
?>
<a href="page<?php echo ($_SESSION["currentPage"] +1); ?>.php">Next </a>
<?php
}
?>
</div>
Надеюсь, что это поможет вам.
Прасад.