使用多个复选框名称查询搜索

时间:2017-10-10 10:59:13

标签: php mysql sql search

我有这个音乐网站,我有一个搜索侧边栏,我希望人们能够从我的桌面找到合适的音乐家个人资料。搜索表单使用复选框构建,并使用PHP和MySQL连接到我的表。我希望人们能够找到类别的位置,用户类型,他们播放的音乐类型以及是否有专辑发布等类别。

<form action="udforsk.php"  method="post" enctype="multipart/form-data">
  <h2>User type</h2>
  <input type="checkbox" name="type[]" value="Solo">
  <input type="checkbox" name="type[]" value="Duo">
  <input type="checkbox" name="type[]" value="Band">

  <h2>Location</h2>
  <input type="checkbox" name="location[]" value="area_1">
  <input type="checkbox" name="location[]" value="area_2">
  <input type="checkbox" name="location[]" value="area_3">
  <input type="checkbox" name="location[]" value="area_4">
  <input type="checkbox" name="location[]" value="area_5">

  <h2>Genre</h2>
  <input type="checkbox" name="genre[]" value="genre_1">
  <input type="checkbox" name="genre[]" value="genre_2">
  <input type="checkbox" name="genre[]" value="genre_3">
  <input type="checkbox" name="genre[]" value="genre_4">
  <input type="checkbox" name="genre[]" value="genre_5">

  <h2>Album or demo</h2>
  <input type="checkbox" name="release[]" value="album">
  <input type="checkbox" name="release[]" value="demo">
</form>

我希望这可以连接查询的宽度,但我有问题如何处理某些类别尚未填写的搜索。就像没有选中任何位置复选框一样,所有位置在查询搜索中都是合理的游戏。

现在我正在尝试使用IN来搜索用户后我的查询看起来像这样但是当$ _POST输入为空时它会给我带来麻烦。现在我只是想让它与地点和流派合作。

$sql = "SELECT artist.ArtistID, artist.ArtistName, artist.RegionID, 
artist_genre.ArtistID, artist_genre.GenreID
FROM artist, artist_genre
WHERE artist.RegionID IN ($areaer) AND artist_genre.GenreID IN ($genrer)";

所有帮助如何使用带有复选框的多个搜索变量进行查询搜索通常会有很多帮助。

1 个答案:

答案 0 :(得分:0)

你可以试试这段代码:

$conditions = []; 
$query = 'your query ';
$conditions[] = isset($_POST['location']) ? 'artist.RegionID in ('.implode(',',$_POST['location']).')';
$conditions[] = isset($_POST['genre']) ? 'artist.GenreID in ('.implode(',',$_POST['genre']).')';
if(sizeof($conditions) > 0 ) query.='where '.implode(' and ',conditions);

但如果你使用预备声明,那就更好了。