很抱歉,我问了一个愚蠢的问题,这对PHP来说还很新。我想在同一页面和同一id
中选择下一个数组值,因为它们全部来自同一id
。介意我是否需要有关此代码的帮助?谢谢!
<?php
//get the id from the view page / search page e.g. url?id=1
$_SESSION['id'] = $_GET['id'];
$id = $_SESSION['id'];
include "backend/connect.php";
$sqlquestion = "Select * from game_question where game_id_fk = $id";
$result = mysqli_query($conn,$sqlquestion);
if(mysqli_num_rows($result)<=0){
echo "<script>alert('No questions found!');</script>";
}
while($row = mysqli_fetch_array($result)){
$question[] = $row['game_question'];
$qid[] = $row['game_question_id'];
}
?>
<?php
$current_index = array_search($qid, $question);
$next = $current_index + 1;
$prev = $current_index - 1;
?>
<?php if ($prev > 0): ?>
<a href="<?= $id[$prev] ?>">Previous</a>
<?php endif; ?>
<?php if ($next < count($question)): ?>
<a href="<?= $id[$next] ?>">Next</a>
<?php endif; ?>
答案 0 :(得分:0)
警告 将查询参数串联到查询字符串中可能会导致SQL注入,请看here
一种简单的方法是实现某种分页,其中每个页面正好是1个项目长,然后将当前页面作为GET
参数传递。
您可以在查询中将其实现为LIMIT
子句,如下所示:
$pos = (isset($_GET['pos']) && $_GET['pos']) ? $_GET['pos'] : 0;
$sqlquestion = "
Select *
from game_question
where game_id_fk = $id
LIMIT 1 OFFSET $pos
";
然后,您必须根据$ pos变量计算上一个和下一个位置,并将它们作为查询参数添加到链接中,例如url.php?id=1&pos=3
;
请注意,这种方式的位置从0开始
答案 1 :(得分:0)
我将只查询一次数据库,因此我假设属于一个id
的问题数量不是太大。
这样,您可以检索所有结果,然后使用一些前端魔术工具通过next / prev功能显示这些结果。我写了一个示例,其中jQuery提出了您的问题,因此取决于您如何显示它们。
您还可以查看Bootstrap(https://getbootstrap.com/),它具有一些很酷的功能,因此您可以让PHP循环您的问题并编写HTML元素,然后Bootstrap会神奇地显示它
我还向您的查询添加了参数绑定,这将防止某些SQL注入,因此应始终使用
<?php
//get the id from the view page / search page e.g. url?id=1
$id = $_SESSION['id'] = $_GET['id'];
include "backend/connect.php";
$stmt = mysqli_prepare($con, "SELECT * FROM game_question WHERE game_id_fk = ?");
mysqli_stmt_bind_param($stmt, "s", $id);
$result = mysqli_stmt_execute($stmt);
$questions = array();
if(mysqli_num_rows($result)<=0){
echo "<script>alert('No questions found!');</script>";
die;
}
while($row = mysqli_fetch_array($result)){
$questions[$row['game_question_id']] = $row['game_question'];
}
?>
<!-- HTML -->
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
var questions = <?php echo json_encode($questions) ?>;
$.each(questions, function (i, elem) {
// do your stuff
});
</script>
</head>
<body>
</body>
以下是带有上一个/下一个按钮的引导程序标签的示例:https://codepen.io/techiegang/pen/QjdgJJ