Intereting Posts
PHP Максимальное количество вставок в одном SQL-запросе Неустранимая ошибка: класс «Монго» не найден в C: \\ Apache Software Foundation \ Apache2.2 \ htdocs \ sample \ testdb.php Что можно использовать для DateTime :: diff () для PHP 5.2? Doctrine listener – запуск действия только при изменении поля Как узнать, пришел ли запрос от flash swf? получить (динамическую страницу загрузки) с помощью PHP / CURL? Может ли PHP OpenSSL генерировать пары частных / открытых ключей / сертификатов? Использование метода статического класса для * Быстро * Сортировка массива по ключевым значениям в PHP Сравнение PHP __get () с __get __ () и __getattr __ () в Python Вставка даты в mongodb Удалить дублируемую строку в массиве Каковы реальные преимущества шаблонов для двигателей только с использованием PHP? Вызов неопределенной функции curl_init () – с помощью WAMP Получение данных SQL в JavaScript после вызова jQuery ajax Как создать запрос на просмотр календаря Outlook в PHP?

Как поместить значение в несколько категорий

После того, как я решил проблему, чтобы просмотреть более 1 категории game_category поле game_category в моей базе данных, я столкнулся с другой проблемой. Мой сайт решает, какая игра идет в какой категории по переменной $game_category , но теперь я вставил игру с 4 категориями, поэтому вместо «действия» в записи game_category меня есть «действие, пространство, стратегия, стрельба», поэтому игра сидит нигде …

Это часть моего кода, который показывает логику просмотра результатов по game_category:

 if(isset($_GET['genre'])){ $game_category = $_GET['genre']; $select_games = "SELECT * FROM games WHERE game_category='$game_category' ORDER BY game_name ASC"; 

Как я могу заставить систему читать запись с более чем одной категорией?

Есть идеи? 🙁

EDIT: Поскольку в моем вопросе недостаточно информации, я опубликую здесь 2 файла php, которые связаны с проблемой: 1. «insert_games.php» – используется для загрузки новых игр через панель администратора (отлично работает). 2. "categories.php" – Используется для просмотра игр в правильной категории, к которой они принадлежат.

Это insert_games.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> в <?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> 

Я знаю его слишком долго, потому что существует много категорий, использующих HTML-форму и оператор «if» …

Это category.php:

 <!DOCTYPE HTML> <html> <head> </head> <body> <div class='container'> <!--Start of the container--> <div><?php include("includes/header.php"); ?></div> <div><?php include("includes/navbar.php"); ?></div> <div><?php include("includes/right_col.php"); ?></div> <div class='main_col'> <!--Start of the Main Column--> <div><?php echo '<img id="category_title" src="images/genres/' . $_GET[genre] . '.png"'; ?></div> <div class='main_content'> <?php include("includes/connect.php"); if(isset($_GET['genre'])){ $game_category = $_GET['genre']; $select_games = "SELECT * FROM games WHERE game_category IN ($game_category) ORDER BY game_name ASC"; $run_games = mysql_query($select_games); echo '<table>'; $games = 0; while($row = mysql_fetch_array($run_games)){ // make a new row after 9 games if($games%9 == 0) { if($games > 0) { // and close the previous row only if it's not the first echo '</tr>'; } echo '<tr>'; } // make a new column after 3 games if($games%3 == 0) { if($games > 0) { // and only close it if it's not the first game echo '</td>'; } echo '<td>'; } $game_id = $row['game_id']; $game_name = $row['game_name']; $game_category = $row['game_name']; $game_keywords = $row['game_name']; $game_image = $row['game_image']; ?> <div class="game_grid"> <div id="game_name"><a href="game_page.php?id=<?php echo $game_id; ?>"><?php echo $game_name; ?></a><br /></div> <div id="game_image"><a href="game_page.php?id=<?php echo $game_id; ?>"><img src="images/games_images/<?php echo $game_image; ?>" width="120" height="120" /></a></div> </div> <?php $games++; } } ?> </table> </div> </div> <!--End of the Main Column--> </div> <!--End of the container--> <div><?php include("includes/footer.php"); ?></div> </body> </html> в <!DOCTYPE HTML> <html> <head> </head> <body> <div class='container'> <!--Start of the container--> <div><?php include("includes/header.php"); ?></div> <div><?php include("includes/navbar.php"); ?></div> <div><?php include("includes/right_col.php"); ?></div> <div class='main_col'> <!--Start of the Main Column--> <div><?php echo '<img id="category_title" src="images/genres/' . $_GET[genre] . '.png"'; ?></div> <div class='main_content'> <?php include("includes/connect.php"); if(isset($_GET['genre'])){ $game_category = $_GET['genre']; $select_games = "SELECT * FROM games WHERE game_category IN ($game_category) ORDER BY game_name ASC"; $run_games = mysql_query($select_games); echo '<table>'; $games = 0; while($row = mysql_fetch_array($run_games)){ // make a new row after 9 games if($games%9 == 0) { if($games > 0) { // and close the previous row only if it's not the first echo '</tr>'; } echo '<tr>'; } // make a new column after 3 games if($games%3 == 0) { if($games > 0) { // and only close it if it's not the first game echo '</td>'; } echo '<td>'; } $game_id = $row['game_id']; $game_name = $row['game_name']; $game_category = $row['game_name']; $game_keywords = $row['game_name']; $game_image = $row['game_image']; ?> <div class="game_grid"> <div id="game_name"><a href="game_page.php?id=<?php echo $game_id; ?>"><?php echo $game_name; ?></a><br /></div> <div id="game_image"><a href="game_page.php?id=<?php echo $game_id; ?>"><img src="images/games_images/<?php echo $game_image; ?>" width="120" height="120" /></a></div> </div> <?php $games++; } } ?> </table> </div> </div> <!--End of the Main Column--> </div> <!--End of the container--> <div><?php include("includes/footer.php"); ?></div> </body> </html> 

Примечание. Я удалил все из тегов, потому что его личное и не относящееся к вопросу:) …

    Скорее всего, вам понадобится таблица поиска. Таблица game_categories, состоящая из id (unique), game_id (внешний ключ) и category_id (или category_name). Таким образом, вы можете иметь одну и ту же игру, хранящуюся в нескольких категориях. Затем ваши запросы могут быть объединены во время выполнения в зависимости от того, что вы пытаетесь выполнить. Надеюсь, это поможет!

    Вы можете переключить строку выбора, чтобы использовать «IN».

     $cat = "'" . str_replace(",", "','", $game_category) . "'"; $select_games = "SELECT * FROM games WHERE game_category IN ($cat) ORDER BY game_name ASC"; 

    Я снова решил проблему снова xD, я подумал о своей поисковой системе, использовал ключевые слова для генерации результатов, поэтому я сделал то же самое с game_category, так как ее структура в некоторых играх одинакова, например: Игра с 1 категорией под запись game_category в таблице «игры»: действие

    Игра с несколькими категориями под игрой 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"; 

    Итак, теперь, если я попаду под категорию «Действие» на своем веб-сайте, эта игра покажет, если я попаду под категорию «Аркада», эта игра также будет показана, в основном игра будет показана в любой категории, которую она назначила путем «чтения» ключевых слов категории …

    Надежда, которая помогла кому-то;)