Ссылки на предыдущую / следующую страницу с использованием PHP

#php #html #navigation #pagination #next

#php #HTML #навигация #разбивка на страницы #Далее

Вопрос:

Мне было интересно, сможет ли кто-нибудь потрясающий мне помочь? : D

У меня есть 80 страниц php (в основном только статический html, я использую команду php include для верхнего и нижнего колонтитулов) — я хочу, чтобы на каждой странице были кнопки next / back, автоматически ссылающиеся на предыдущие / следующие страницы ( page1.php , page2.php , страница 3 и т.д.).

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

У кого-нибудь есть идеи, как это сделать? 🙂

* Я начинающий программист, и у меня недостаточно времени, чтобы научиться настраивать базу данных / cms для этого школьного проекта.

Комментарии:

1. Есть ли у вас знания о подкачке ..? если да, сделайте это .. 🙂

2. У меня была игра с подкачкой jquery / ajax? Разве это не больше подходит для простых данных? Извините, если я вас неправильно понял ^^; Есть ли пример ссылки на веб-сайт, которую вы могли бы мне показать? Я был бы очень признателен 🙂

3. привет, вы можете сослаться на эту ссылку, если needed…http://www.script-tutorials.com/demos/35/index.html .

4. Спасибо, что разместили ссылку! 🙂 но да, я не думаю, что это то, что мне нужно, к сожалению

Ответ №1:

Это относительно надежное решение (с учетом требований):

 $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 amp;amp; $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}

Комментарии:

1. Определенно намного лучше, чем мое решение 😉

2. @BrendanLong: большое вам спасибо! Но это просто в тысячу раз сложнее:-. И ваши баллы остаются в силе: он также чувствителен к изменениям имени файла.

3. Большое вам спасибо за публикацию решения! 🙂 Но я немного не уверен, как заставить это работать, lol ^^;; Я попытался вставить код в тело, где я хочу, чтобы ссылки были, но когда я тестирую его с помощью локального сервера, ссылки не отображаются. Я уверен, что делаю это совершенно неправильно > <;

4. Ну, имена файлов других страниц должны быть похожи page1.php, page2.php, ... pageN.php , и все они должны находиться в одном каталоге. Тогда это должно сработать. Кроме того: этот код также может быть размещен в вашем нижнем колонтитуле, в противном случае вам придется либо скопировать его в каждый файл, либо поместить в файл с именем «navigation.php » и включить это navigation.php в каждом файле.

5. Хм, нет, каталог определяется автоматически, он должен работать без изменений.

Ответ №2:

Вы могли бы сделать что-то ужасное, подобное этому:

 // 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
  • Если страницы будут переименованы, это ужасно сломается

Комментарии:

1. О, это не очень хорошая идея использовать php для этого? Что бы вы предложили, если не возражаете? 🙂

2. @Jess — я бы предложил жестко запрограммировать следующее значение, поскольку сами страницы жестко запрограммированы. Если бы страницы были в базе данных, я бы сказал, используйте их идентификаторы базы данных, чтобы определить следующую страницу. Решение, которое я опубликовал, вероятно, будет работать, но оно сломается, если (1) файлы будут переименованы или (2) идентификаторы будут иметь какие-либо пробелы.

Ответ №3:

Я думаю, вы можете проверить приведенный ниже код. Это просто.

 <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>
  

Надеюсь, это вам поможет.

Прасад.

Комментарии:

1. Использование сеанса для этого кажется плохой идеей. Это не будет работать правильно, если у них открыты две страницы.