数据库中随机显示大量句子后的PHP SQL重定向表单
我有一个表单,从数据库中检索10个随机句子数据库中随机显示大量句子后的PHP SQL重定向表单,php,sql,Php,Sql,我有一个表单,从数据库中检索10个随机句子 // --- retrieve a new sentence $sql = "SELECT sentence FROM Sentence ORDER BY RAND() LIMIT 10"; $res = mysqli_query($conn, $sql); $row = mysqli_fetch_array($res); $sentence = $row["sentence"]; // --- display sentence echo "&
// --- retrieve a new sentence
$sql = "SELECT sentence FROM Sentence
ORDER BY RAND()
LIMIT 10";
$res = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($res);
$sentence = $row["sentence"];
// --- display sentence
echo "<p>\n";
print $sentence;
echo "</p>\n";
echo "</div>\n";
表单一次显示一个句子。用户选中一个单选按钮,单击“下一步”按钮,就会出现一个新句子
然而,一旦这10个句子被显示出来,它就会不断循环,我希望在这10个句子被显示出来之后,它能重定向到一个新的页面
我目前正在尝试这种方法:
if (isset($_SESSION["count"]) {
if ($_SESSION["count"] < 10) {
$sql = "SELECT sentence FROM Sentence
ORDER BY RAND()
LIMIT 10";
$res = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($res);
$sentence = $row["sentence"];
echo "<p>\n";
print $sentence;
echo "</p>\n";
//increment counter
$_SESSION["count"] = $_SESSION["count"] + 1;
} else {
header("Location: newurl");
}
} else {
$_SESSION["count"] = 0;
}
但是,我收到了错误警告:无法修改标题信息-标题已发送尝试注释打印代码以进行测试:
if (isset($_SESSION["count"]) {
if ($_SESSION["count"] < 10) {
$sql = "SELECT sentence FROM Sentence
ORDER BY RAND()
LIMIT 10";
$res = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($res);
$sentence = $row["sentence"];
//echo "<p>\n";
//print $sentence;
//echo "</p>\n";
//increment counter
$_SESSION["count"] = $_SESSION["count"] + 1;
} else {
header("Location: newurl");
}
} else {
$_SESSION["count"] = 0;
}
重定向有效吗?您有两个问题:
您没有正确地遍历结果数组。由于您将结果限制为10行,因此必须假设您正在接收10行。
使用while循环遍历所有行:
while ($row = mysqli_fetch_array($res)) {
$sentence = $row["sentence"];
// --- display sentence
echo "<p>\n";
print $sentence . '<br>';
echo "</p>\n";
}
与
希望这有帮助
if (isset($_SESSION["count"]) {
if ($_SESSION["count"] < 10) {
$sql = "SELECT sentence FROM Sentence
ORDER BY RAND()
LIMIT 10";
$res = mysqli_query($conn, $sql);
while($row = mysqli_fetch_array($res)) {
$sentence = $row["sentence"];
echo "<p>\n";
echo $sentence;
echo "</p>\n";
}
//increment counter
$_SESSION["count"] = $_SESSION["count"] + 1;
} else {
header("Location: newurl");
}
} else {
$_SESSION["count"] = 0;
}
应该可以了。您没有收到那个错误吗?因为如果你是的话,在这个网站上有成千上万的问题和回答都有这个错误。否则会话从哪里开始?如果没有这些,你的会话代码是无用的。为什么你只显示1个句子却选择了10个句子?我想也许你没有给我们看一些代码。这里是否有javascript或其他东西可以让您将10个句子放入DOM中,然后一次显示一个句子?@MarcB会话开始就在我的php顶部file@MikeBrant我在这个文件中有javascript,但是它不会影响句子的选择。这应该是一个10个会话,每次显示1个。现在我在一个长段落中有所有10个句子。你必须在每行末尾添加。看看我修改过的答案。这解决了你的问题吗?请标记正确答案,这样我们都会变得更聪明。不,仍然收到警告:无法修改标题信息错误。我的会话开始也是第一行。您的第一个if语句缺少结束括号。如果isset$\u会话[count],则应为。可能是造成问题的原因。这同样是显示所有10个句子组合成一个大段落,然后你必须放在while循环的末尾。
if ( isset($_SESSION["count"]) )
if (isset($_SESSION["count"]) {
if ($_SESSION["count"] < 10) {
$sql = "SELECT sentence FROM Sentence
ORDER BY RAND()
LIMIT 10";
$res = mysqli_query($conn, $sql);
while($row = mysqli_fetch_array($res)) {
$sentence = $row["sentence"];
echo "<p>\n";
echo $sentence;
echo "</p>\n";
}
//increment counter
$_SESSION["count"] = $_SESSION["count"] + 1;
} else {
header("Location: newurl");
}
} else {
$_SESSION["count"] = 0;
}