Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据库中随机显示大量句子后的PHP SQL重定向表单_Php_Sql - Fatal编程技术网

数据库中随机显示大量句子后的PHP SQL重定向表单

数据库中随机显示大量句子后的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 "&

我有一个表单,从数据库中检索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 "<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;
    }