将mysql数据排序为大小有限的页面,并在屏幕上选择更改页面?怎么做到的?

pobjuy32  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(277)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

两年前关门了。
改进这个问题
我对html和css还比较陌生,但是我对c#和java(使用libgdx、unity等框架)编程游戏有一些基本知识。
我在mysql中构建了一个数据库和相应的php代码,为表中的每个条目显示一篇html文章。
一切都很好,但整个数据库加载到一个大网页。
我已经阅读了很多,但似乎找不到从哪里开始把它构建成网页。我现在唯一能想到的是,我需要在我的站点的某个地方有一个字段来保存用户选择的当前页码,然后在我的sql select语句中,使用这个数字以某种方式只提取从“currentpage*20”开始的20页。
我已经找到了一小部分我需要的信息,就像我看到可能有一个限制条款,我可以使用。但是怎么可能呢

SELECT * FROM table ORDER BY id DESC LIMIT (currentPage*20);

知道index.php中的currentpage是什么吗(如果这是我甚至都不知道的正确的语法/写作方法!)。
以下是我已经拥有的php代码部分:

// 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();

我如何使用下面的代码,但也包括一个分页系统,一次只显示n行?

3ks5zfa0

3ks5zfa01#

可以使用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);

然后要构建分页,可以查询games表中的记录计数,以确定需要多少链接。
例子:

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

相关问题