Я новичок в HTML и CSS, однако у меня есть некоторые базовые знания программирования игр на С# и Java (с использованием таких фреймворков, как LibGDX, Unity и т.д.).
Я создал базу данных в MySQL и соответствующий php-код, который отображает html-статью для каждой записи в таблице.
Все работает отлично, но вся база данных загружается на одну большую веб-страницу.
Я много читал, но не могу найти, с чего начать, создавая его на страницах. Единственная идея, которую я могу себе представить сейчас, это то, что мне понадобится поле где-то на моем сайте, чтобы удерживать текущий номер страницы, которую выбрал пользователь, а затем в моей инструкции SQL SELECT используйте эту цифру, чтобы как-то вытащить только 20 страниц, начиная с 'currentPage * 20 'например.
Я нашел небольшие части необходимой мне информации, так как вижу, что может быть предложение LIMIT, которое я могу использовать. Но как можно
SELECT * FROM table ORDER BY id DESC LIMIT (currentPage*20);
знаете, какая текущая страница находится в index.php? (Если это даже правильный синтаксис/способ записи, о котором я даже не знаю!).
Вот часть моего кода PHP, который я уже должен помочь вам понять, что я имею в виду.
TL; DR: вопрос. Как использовать этот код ниже, но также включить систему подкачки, чтобы отображать только n строк за один раз?
// create connection
$conn = new mysqli($servername, $username, $password, $dbname);
$currentPage = 0;
$rowsPerPage = 20;
$startRow = $currentPage * $rowsPerPage;
// check connection
if ($conn->connect_error) {
die("connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM games ORDER BY id DESC LIMIT $startRow, $rowsPerPage";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{
// output data of each row
while($row = $result->fetch_assoc())
{
echo '<section class="wrapper style1">';
echo '<div class="inner">';
echo '<header class="align-center">';
echo '<h2>'. $row["title"] . '</h2>';
echo '<div class="image fit">';
echo '<img src='. $row["imglink"] .'>';
echo '</div> <p> RELEASE TITLE: ' . $row["title"] . '<br /> DATE POSTED: ' . $row["timestamp"] . '<br /> DESCRIPTION: ' . $row["description"] . '</p>';
echo '<a href="'.$row["downloadlink"].'" target="_blank">Download Link </a> <br /> <a href="downloadhelp.php">click here to learn more</a> <br /> <a href="fileshelp.php">click here for help running the files</a> <br /> <br /> <br />';
$VidLink = $row["vidlink"];
if ($VidLink != 'not found' && $VidLink != '')
{
echo '<div class="video-wrapper">'.$row["vidlink"].'</div>';
}
echo '</header>';
echo '</div>';
echo '</section>';
}
}
else
{
echo "0 results";
}
$conn->close();
Вы можете использовать параметр URL для передачи номера страницы в ваш запрос SQL. Например, каждая ссылка в вашей нумерации страниц может содержать? Page = 1,? Page = 2 и т.д.
Затем посмотрите, установлен ли параметр "page", и используйте его, чтобы получить результаты для данного номера страницы.
Пример:
$rowsPerPage = 20;
if (isset($_GET["page"])) {
$currentPage = (int) $_GET["page"];
}
else {
$currentPage = 0;
}
// We need to be careful about SQL injection here
$startRow = $currentPage * $rowsPerPage;
$sql = "SELECT * FROM games ORDER BY id DESC LIMIT $startRow, $rowsPerPage";
$result = $conn->query($sql);
Затем, чтобы построить свою нумерацию страниц, вы можете запросить в таблице игр количество записей, чтобы определить, сколько ссылок вам нужно.
Пример:
$sql = "SELECT COUNT(id) FROM games";
$results = mysql_query($sql);
$row = mysql_fetch_row($results);
$recordCount = $row[0];
$totalPages = ceil($recordCount / $rowsPerPage);
$pagination = "<div class='pagination'>";
for ($i = 0; $i <= $totalPages; $i++) {
$pagination .= "<a href='index.php?page=" . $i . "'>" . $i . "</a>";
}
$pagination .= "</div>";
echo $pagination;