Я просмотрел множество вопросов, поэтому простите меня, если есть тот, который может помочь, но я не смог понять это.Оператор 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» на платформе, и " действие "в жанре). НО, если пользователь выбирает «Действие» и «Ролевая игра», по какой-то причине он принимает только последний, который пользователь выбирает, в данном случае «ролевая игра».
Итак, мой вопрос: как получить утверждение, чтобы показать ВСЕ игры, когда есть несколько входов.
Благодарим вас за помощь, я отвечу на любые вопросы, которые могут возникнуть, и, конечно, отметьте ответ, как только он поможет. Благодаря!
Только что попробовал, что сейчас, и это не сработало. :( – Chance
Я думаю, что когда вы это делаете, он меняет его на нечто вроде «действия, случайные»), когда то, что вы пытаетесь сделать (что, вероятно, заставило бы его работать), сделать это («действие», «случайное »). – Chance
U право. – Szymon