2015-11-28 4 views
0

Я просмотрел множество вопросов, поэтому простите меня, если есть тот, который может помочь, но я не смог понять это.Оператор SQLite не принимает несколько значений

Итак, у меня есть простая форма HTML, которая вводит пользователей в три категории: многопользовательскую, платформенную и жанровую. Это HTML-код

<form method="post" action="gamebuddy.php"> 

<div class="players"> 
    Please select one (or both) of the following: <br> 

     <input type="checkbox" name="players[]" value="No">Single Player<br> 
     <input type="checkbox" name="players[]" value="Yes">Multiplayers<br> 
</div> 

<div class="platform"> 
    Please select your game system(s): <br> 

     <input type="checkbox" name="platform[]" value="XBOX">Xbox<br> 
     <input type="checkbox" name="platform[]" value="PS3">PS3<br> 
     <input type="checkbox" name="platform[]" value="PC">PC<br> 
     <input type="checkbox" name="platform[]" value="Wii">Wii<br> 
</div> 


<div class="genre"> 
    Please select the genre(s) of game you would like: <br> 
     <input type="checkbox" name="genre[]" value="Action" >Action<br> 
     <input type="checkbox" name="genre[]" value="Casual">Casual<br> 
     <input type="checkbox" name="genre[]" value="Roleplaying">Role-Playing<br> 
     <input type="checkbox" name="genre[]" value="Shooter">Shooter<br> 
     <input type="checkbox" name="genre[]" value="Sports">Sports<br> 
</div> 

<div class="submit"> 

     <input type="submit"> 

</div> 

А то у меня есть PHP-файл, который используется, когда пользователь нажимает кнопку. В идеале он принимает входные данные формы как переменную и использует инструкцию SQLite для поиска игр, которые пользователь может играть на основе своих выборов.

Вот PHP код:

<div class="displaygames"> 
     Based on your choices, these games seem suitable for you: <br> 


<?php 

if(!empty($_POST['players'])) { 
    foreach($_POST['players'] as $players) { 
      echo $players; //echoes the value set in the HTML form for each checked checkbox. 
         //so, if I were to check 1, 3, and 5 it would echo value 1, value 3, value 5. 
         //in your case, it would echo whatever $row['Report ID'] is equivalent to. 
    } 
} 



if(!empty($_POST['platform'])) { 
    foreach($_POST['platform'] as $platform) { 
      echo $platform; //echoes the value set in the HTML form for each checked checkbox. 
         //so, if I were to check 1, 3, and 5 it would echo value 1, value 3, value 5. 
         //in your case, it would echo whatever $row['Report ID'] is equivalent to. 
    } 
} 



if(!empty($_POST['genre'])) { 
    foreach($_POST['genre'] as $genre) { 
      echo $genre; //echoes the value set in the HTML form for each checked checkbox. 

    } 
} 

       //This is to connect to the database 
    $db = new SQLite3('gamebuddy.db'); 
       //Statement that uses variables to create list 
$results = $db->query("SELECT * FROM games where multiplayer = '$players' and platform = '$platform' and genre is '$genre'"); 



       //Displays List 
while ($row = $results->fetchArray()) { 
     echo '<ul>'; 
     echo $row['game']; 

     echo '</ul>'; 
} 





?> 

Так что все отлично работает, если вы положили в один ответ для каждой категории (например, пользователь нажимает кнопку «Нет» в мультиплеере, «PS3» на платформе, и " действие "в жанре). НО, если пользователь выбирает «Действие» и «Ролевая игра», по какой-то причине он принимает только последний, который пользователь выбирает, в данном случае «ролевая игра».

Итак, мой вопрос: как получить утверждение, чтобы показать ВСЕ игры, когда есть несколько входов.

Благодарим вас за помощь, я отвечу на любые вопросы, которые могут возникнуть, и, конечно, отметьте ответ, как только он поможет. Благодаря!

ответ

0

Если у вас массив, например, в $ игроков, вы можете использовать функцию взрывать и «В» заявлении в SQL:

"SELECT * FROM games WHERE multiplayer IN (".implode(",", $players).")" 
+0

Только что попробовал, что сейчас, и это не сработало. :( – Chance

+0

Я думаю, что когда вы это делаете, он меняет его на нечто вроде «действия, случайные»), когда то, что вы пытаетесь сделать (что, вероятно, заставило бы его работать), сделать это («действие», «случайное »). – Chance

+0

U право. – Szymon

Смежные вопросы