2017-05-01 47 views
1

我有一个查询,我在switch case中设置。 while循环遍历我的行,并打印出3个randoms行,其中列id, weekday, description中的数据被打印出来。在查询中忽略switch case

while循环正在工作并打印出3个随机行。但似乎开关案件完全被忽视。无论选择星期三还是星期六,我都会在星期三和星期六获得混合打印。

该表格的目的,是我可以排序只能看到星期三和星期六单独。有人知道为什么会这样吗?

HTML

<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> 
    <form method="post"> 
     <button class="btn btn-warning">Shuffle</button> 
    </form> 

PHP

<?php 
    $sql = "SELECT id, weekday, description FROM articles"; 
     switch(isset($_POST['weekday'])){ 
     case 'wednesday': 
      $sql .= " WHERE weekday LIKE 'Wednesday'"; 
     break; 
     case 'saturday': 
      $sql .= " WHERE weekday LIKE 'Saturday'"; 
     break; 
     } 
     $sql .= " ORDER BY RAND () LIMIT 3"; 

     $res = $mysqli->query($sql); 


    if ($res->num_rows > 0) { 
     while($row = $res->fetch_assoc()) { 
      echo "article Number: " . $row["id"]. "<br>" . 
       "Weekday: " . $row["weekday"]. "<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"; 
    } 
?> 
+0

您错过了一个'break;'。投票结束为错字。 – Siguza

+0

像这样的字符串存储周日是有问题的。为什么不是0 ... 6或1 ... 7,你选择一个符合['DAYOFWEEK()'](https://dev.mysql.com/doc/refman/5.7/en/date-和时间functions.html#function_dayofweek)? – tadman

回答

2

,如果它的设置,而不是实际值你接通。检查它是否设置,然后进入开关选项:

if(isset($_POST['weekday'])) { 
    switch($_POST['weekday']){ 
    case 'wednesday': 
     $sql .= " WHERE weekday LIKE 'Wednesday'"; 
    break; 
    case 'saturday': 
     $sql .= " WHERE weekday LIKE 'Saturday'"; 
    break; 
    } 
} 
+0

非常感谢您的回答。我只是试着用你的代码,但我仍然得到一个混合的结果。这听起来像我必须寻找别的东西而不是switch语句呢?我可以理解,如果查询没有被调用。为什么我通过切换案例被忽略,是因为查询被称为正确的,除了开关案例。 – Mimi

+1

在HTML中将选择放在窗体标签中。 –

+1

尝试呼应或倾倒。转储'$ _POST'以确保工作日存在,并尝试在您的switch语句中回显内容,例如在星期三的情况下添加“Checking Wednesday
\ n”。 – aynber