我有一个功能,您可以按下随机按钮,然后从MySQL数据库中获取三个随机行,列名为id, weekday, description
。目前我只是在没有任何条件的情况下得到随机行。因此,当工作日等于星期三时,我选择了一个表格,我可以选择只获取打印记录。
我试图制作一个switch case语句,但我真的不确定如何在while循环中设置它?
的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";
}
答案 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