2017-05-01 19 views
1

私はスイッチケースで設定するクエリを持っています。 whileループは私の行を通り、3列のランダムな行を出力します。ここで列のデータが出力されます。クエリでスイッチケースが無視されます

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-us/) and-time-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では、フォームタグの中にselectを持ってきてください。 –

+1

途中でエコーやダンプを試してみてください。 '$ _POST'をダンプして平日が存在することを確認し、switch文の中に何かをエコーし​​てみてください。例えば、水曜日のケースの中で" Checking Wednesday
\ n "を追加してください。 – aynber

関連する問題