如何在while循环中使用switch case语句

时间:2017-05-01 19:16:57

标签: php

我有一个功能,您可以按下随机按钮,然后从MySQL数据库中获取三个随机行,列名为id, weekday, description。目前我只是在没有任何条件的情况下得到随机行。因此,当工作日等于星期三时,我选择了一个表格,我可以选择只获取打印记录。

我试图制作一个switch case语句,但我真的不确定如何在while循环中设置它?

Shuffle

的index.php

<select name="weekday" class="form-control selectpicker" >
        <option value=" ">Select Weekday</option>
        <option value="alldays">All Days</option>
        <option value="wednesday">Wednesday</option>
        <option value="saturday">Saturday</option>
</select>
<div>
    <form method="post">
        <button class="btn btn-warning">Shuffle</button>
    </form>
</div>
<div>
    <h4>Shuffle Result</h4><hr>
    <?php include 'shuffle.php' ?>
</div>

shuffle.php

<?php
    $sql = "SELECT id, description FROM articles ORDER BY RAND ( ) LIMIT 3";
    $res = $mysqli->query($sql);

    //print($res);
    if ($res->num_rows > 0) {
    // output data of each row
        while($row = $res->fetch_assoc()) {
            echo "Number: " . $row["id"]. "<br>" .
                 "Description: " . $row["description"]. "<br><br>".
                 '<div class="btn btn-warning btn-open-modal" data-id="'.$row["id"].'">See Details '.'</div><br><br>';              
        }
    } else {
    echo "0 results";
    }

我尝试为while循环创建一个switch case代码:

switch($_POST['weekday']){
          case 'alldays':
              echo "Alldays";
          break;
          case 'wednesday':
              echo "Wednesday";
          break;
          case 'saturday':
              echo "Saturday";
          break;
          default:
              echo "Something went wrong";
    }

2 个答案:

答案 0 :(得分:1)

如果我正确理解你想要的结果,开关就不会进入while循环。您可以使用它来更改查询。尝试这样的事情:

$sql = "SELECT id, description FROM articles";
switch($_POST['weekday']){
      case 'alldays':
          //you can remove this case because it does change the query
      break;
      case 'wednesday':
          $sql .= " WHERE day LIKE 'wednesday'";
      break;
      case 'saturday':
          $sql .= " WHERE day LIKE 'saturday'";
      break;
}
$sql .= " ORDER BY RAND ( ) LIMIT 3";
$res = $mysqli->query($sql);

请注意我不知道您的数据库结构,因此可能必须更改我在WHERE语句中使用的列名。

回复您的评论:您获得该未定义索引的原因是因为您的select元素位于表单之外。将其更改为:

<form method='post'>
    <select name="weekday" class="form-control selectpicker" >
        <option value=" ">Select Weekday</option>
        <option value="alldays">All Days</option>
        <option value="wednesday">Wednesday</option>
        <option value="saturday">Saturday</option>
    </select>
    <div>
        <button class="btn btn-warning">Shuffle</button>
    </div>
</form>
<div>
    <h4>Shuffle Result</h4><hr>
    <?php include 'shuffle.php' ?>
</div>

为了将来参考,测试这样一个页面的快速方法是添加:

print_r($_POST);

这将显示实际将其发布到页面的帖子值。如果你这样做了,你会发现你的POST变量没有你想要的信息

答案 1 :(得分:0)

你好,但我认为不可能在index.php

中使用post echo