在我解决了问题以查看我的数据库中game_category
字段下的多个游戏类别后,我面临另一个问题。
我的网站通过$game_category
变量决定哪个游戏属于哪个类别,但是现在,我插入了一个包含4个类别的游戏,所以我没有“{1}}记录下的”动作“,而是”行动,空间,策略,射击“,所以游戏无处可寻......
这是我的代码的一部分,显示了game_category查看结果的逻辑:
game_category
如何让系统读取包含多个类别的记录?
有什么想法吗? :(
编辑:由于我的问题中没有足够的信息,我将在这里发布2个涉及问题的php文件: 1.“insert_games.php” - 用于通过管理面板上传新游戏(完美运行)。 2.“categories.php” - 用于查看他们所属的正确类别的游戏。
这是insert_games.php:
if(isset($_GET['genre'])){
$game_category = $_GET['genre'];
$select_games = "SELECT * FROM games WHERE game_category='$game_category' ORDER BY game_name ASC";
我知道它有点太长了,因为有许多类别使用HTML表单和“if”语句......
这是categories.php:
<?php
session_start();
if(!isset($_SESSION['user_name'])){
header("location:login.php");
}
else {
?>
<?php
include("../includes/connect.php");
if(isset($_POST['submit'])){
$game_name = $_POST['game_name'];
$game_category = implode(",",$_POST['game_category']);
$game_keywords = $_POST['game_keywords'];
$game_image = $_FILES['game_image']['name'];
$image_tmp = $_FILES['game_image']['tmp_name'];
$game_code = $_FILES['game_code']['name'];
$code_tmp = $_FILES['game_code']['tmp_name'];
$game_file = $_FILES['game_file']['name'];
$file_tmp = $_FILES['game_file']['tmp_name'];
$game_desc = $_POST['game_desc'];
if($game_name=='' or $game_category=='' or $game_keywords=='' or $game_image=='' or $game_code=='' or $game_file==''){
echo "<script>alert('Please enter all the fields below!')</script>";
exit();
}
else {
$path = "../games/$game_name";
mkdir("$path", 0777);
move_uploaded_file($image_tmp,"../images/games_images/$game_image");
move_uploaded_file($code_tmp,"$path/$game_code");
move_uploaded_file($file_tmp,"$path/$game_file");
$insert_query = "insert into games (game_name,game_category,game_keywords,game_image,game_code,game_file,game_desc) values ('$game_name','$game_category','$game_keywords','$game_image','$game_code','$game_file','$game_desc')";
if($game_category == '3d'){
$three_d_status = 'checked';
}
if($game_category == 'action'){
$action_status = 'checked';
}
if($game_category == 'adventure'){
$adventure_status = 'checked';
}
if($game_category == 'arcade'){
$arcade_status = 'checked';
}
if($game_category == 'brain'){
$brain_status = 'checked';
}
if($game_category == 'cards'){
$cards_status = 'checked';
}
if($game_category == 'destruction'){
$destruction_status = 'checked';
}
if($game_category == 'education'){
$education_status = 'checked';
}
if($game_category == 'extreme'){
$extreme_status = 'checked';
}
if($game_category == 'fighting'){
$fighting_status = 'checked';
}
if($game_category == 'flying'){
$flying_status = 'checked';
}
if($game_category == 'girls'){
$girls_status = 'checked';
}
if($game_category == 'holidays'){
$holidays_status = 'checked';
}
if($game_category == 'hidden_objects'){
$hidden_objects_status = 'checked';
}
if($game_category == 'motocross'){
$motocross_status = 'checked';
}
if($game_category == 'multiplayer'){
$multiplayer_status = 'checked';
}
if($game_category == 'new'){
$new_status = 'checked';
}
if($game_category == 'puzzle'){
$puzzle_status = 'checked';
}
if($game_category == 'racing'){
$racing_status = 'checked';
}
if($game_category == 'fps'){
$fps_status = 'checked';
}
if($game_category == 'space'){
$space_status = 'checked';
}
if($game_category == 'sports'){
$sports_status = 'checked';
}
if($game_category == 'strategy'){
$strategy_status = 'checked';
}
if($game_category == 'stunt'){
$stunt_status = 'checked';
}
if($game_category == 'top_rated'){
$top_rated_status = 'checked';
}
if($game_category == 'words'){
$words_status = 'checked';
}
if($game_category == 'zombies'){
$zombies_status = 'checked';
}
if(mysql_query($insert_query)){
echo "<script>alert('The Game Uploaded Successfully!')</script>";
echo "<script>window.open('view_games.php','_self')</script>";
}
}
}
?>
<?php } ?>
<!DOCTYPE HTML>
<html>
<head>
<link href="css/insert_game.css" rel="stylesheet" type="text/css">
</head>
<body>
<form method="post" id="insert_form" action="insert_games.php" enctype="multipart/form-data">
<table id="insert_games_table" width="680" border="1" align="center">
<tr>
<td id="insert_games_table_title" colspan="2" align="center">Insert New Game</td>
</tr>
<tr>
<td id="insert_cat_name">Game name:</td>
<td><input type="text" name="game_name" size="80"></td>
</tr>
<tr>
<td id="insert_cat_name">Game category:</td>
<td id="insert_cat_select"><input class="checkbox" type="checkbox" name="game_category[]" value="3d"<?php print $three_d_status; ?>/><span>3D</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="action"<?php print $action_status; ?>/><span>Action</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="adventure"<?php print $adventure_status; ?>/><span>Adventure</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="arcade"<?php print $arcade_status; ?>/><span>Arcade</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="brain"<?php print $brain_status; ?>/><span>Brain</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="cards"<?php print $cards_status; ?>/><span>Cards</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="destruction"<?php print $destruction_status; ?>/><span>Destruction</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="education"<?php print $education_status; ?>/><span>Education</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="extreme"<?php print $extreme_status; ?>/><span>Extreme</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="fighting"<?php print $fighting_status; ?>/><span>Fighting</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="flying"<?php print $flying_status; ?>/><span>Flying</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="girls"<?php print $girls_status; ?>/><span>Girls</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="holidays"<?php print $holidays_status; ?>/><span>Holidays</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="hidden_objects"<?php print $hidden_objects_status; ?>/><span>Hidden Objects</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="motocross"<?php print $motocross_status; ?>/><span>Motocross</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="multiplayer"<?php print $multiplayer_status; ?>/><span>Multiplayer</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="new"<?php print $new_status; ?>/><span>New Games</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="puzzle"<?php print $puzzle_status; ?>/><span>Puzzle</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="racing"<?php print $racing_status; ?>/><span>Racing</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="fps"<?php print $fps_status; ?>/><span>FPS</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="space"<?php print $space_status; ?>/><span>Space</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="sports"<?php print $sports_status; ?>/><span>Sports</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="strategy"<?php print $strategy_status; ?>/><span>Strategy</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="stunt"<?php print $stunt_status; ?>/><span>Stunt</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="top_rated"<?php print $top_rated_status; ?>/><span>Top Rated</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="words"<?php print $words_status; ?>/><span>Words</span><br>
<input class="checkbox" type="checkbox" name="game_category[]" value="zombies"<?php print $zombies_status; ?>/><span>Zombies</span><br></td>
</tr>
<tr>
<td id="insert_cat_name">Game keywords:</td>
<td><textarea id="insert_text_area" name="game_keywords"></textarea></td>
</tr>
<tr>
<td id="insert_cat_name">Game image:</td>
<td><input type="file" name="game_image"></td>
</tr>
<tr>
<td id="insert_cat_name">Game HTML:</td>
<td><input type="file" name="game_code"></td>
</tr>
<tr>
<td id="insert_cat_name">Game Flash File:</td>
<td><input type="file" name="game_file"></td>
</tr>
<tr>
<td id="insert_cat_name">Game description:</td>
<td><textarea id="insert_text_area" name="game_desc"></textarea></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="submit" value="Publish Game Now" id="insert_submit"></td>
</tr>
</form>
</body>
</html>
注意:我从标签中删除了所有内容,因为它是私有的,与问题无关:)...
答案 0 :(得分:2)
您很可能需要一个各种查找表。由id(唯一),game_id(外键)和category_id(或category_name)组成的game_categories表。这样,您可以将相同的游戏存储在多个类别中。然后,您的查询可以在运行时加入,具体取决于您要完成的任务。我希望这有帮助!
答案 1 :(得分:0)
您可以将选择字符串切换为使用“IN”。
$cat = "'" . str_replace(",", "','", $game_category) . "'";
$select_games = "SELECT * FROM games WHERE game_category IN ($cat) ORDER BY game_name ASC";
答案 2 :(得分:0)
我自己再次解决了这个问题xD, 我考虑过我的搜索引擎,它使用关键字来生成结果,所以,我对game_category做了同样的事情,因为它在某些游戏中的结构是相同的,例如: 在“游戏”表格中的game_category记录下有1个类别的游戏:动作
在“游戏”表格中的game_category记录下的多个类别的游戏:动作,街机,射击,fps ......
所以我从这里取代了这一行:
$select_games = "SELECT * FROM games WHERE game_category='$game_category' ORDER BY game_name ASC";
进入这个:
$select_games = "SELECT * FROM games WHERE game_category LIKE '%$game_category%' ORDER BY game_name ASC";
所以现在,如果我在我的网站上的“动作”类别下,这个游戏将显示,如果我在“街机”类别下,这个游戏也将显示,基本上游戏将显示在任何类别通过“阅读”类别关键字来分配它......
希望能帮到某人;)