2017-05-02 9 views
0

私は曜日と真と偽の間で選択できるフォーム選択を持っています。私はswitch case文を作っていました。私の質問では、水曜を返すことができ、フットボールが正しく0の場合。しかし、平日が水曜日で、サッカーが1の場合、私はまだ0から結果を得ます。2つのSQL要件を持つスイッチケース

私はswitch文を間違って使用していますか?

平日は水曜日または土曜日

サッカーは0または1(0 =偽、1 =真)

HTML

<select name="weekday" class="form-control selectpicker" > 
     <option value=" ">Select Weekday</option> 
     <option value="wednesday">Wednesday</option> 
     <option value="saturday">Saturday</option> 
</select> 
<select name="football" class="form-control selectpicker" > 
     <option value=" " >Practice</option> 
     <option value="1">Yes</option> 
     <option value="0">No</option> 
</select> 

PHPすることができ、私たちすることができ

$sql = "SELECT id, weekday, football FROM footballTable"; 

     if(isset($_POST['weekday'], $_POST['football'])) { 
     switch($_POST['weekday'], $_POST['football']){ 
      case 'wednesday': 
       $sql .= " WHERE weekday LIKE 'Wednesday' AND football = '0' OR football = '1'"; 
      break; 


      case 'saturday': 
       $sql .= " WHERE weekday LIKE 'Saturday'"; 
      break; 

     } 
     } 
     $sql .= " ORDER BY RAND () LIMIT 3"; 
+1

あなたは 'case 'wednesday':'を2回持っています。最初のものだけが実行されます。 – Barmar

+0

あなたは '$ _POST ['football']'で何もしません。 – Barmar

+0

コメントありがとうございます。私はちょうどコードを更新しました。 0と1の間のORを使用する可能性はありますか? – Mimi

答えて

1

2つの変数に対して別々のswitch/caseステートメントが必要です。

$sql = "SELECT id, weekday, football FROM footballTable WHERE 1=1"; 
switch (@$_POST['weekday']) { 
    case 'wednesday': 
     $sql .= " AND weekday = 'Wednesday'"; 
     break; 
    case 'saturday': 
     $sql .= " AND weekday = 'Saturday'"; 
     break; 
} 
switch (@$_POST['football']) { 
    case '0': 
    case '1': 
     $sql .= " AND football = '{$_POST['football']}'"; 
     break; 
} 
$sql .= " ORDER BY RAND() LIMIT 3"; 
+0

Barmarさん、ありがとうございました。私はちょうどあなたのコードで遊んだりしようとしましたが、0の結果が表示されています。私はこのコードをもう少し試してみようと思います。私は 'if(isset($ _ POST ['weekday']、$ _POST ['football'])){}'は必要ありませんか? – Mimi

+0

'@'は、未設定の変数を使用しようとすると警告を表示しません。変数が設定されていない場合は、いずれのケースとも一致しないので、 'if(isset())'を全体に置くのと同じです。それは単なる単純化です。 – Barmar

+0

パーフェクト。私は今あなたからたくさんのことを学びました。私はそれを働かせました。私はコーヒーを作り、座ってコードを読んでいますので、次回まで100%理解しています。大いに感謝する。 – Mimi

関連する問題