Простой PHP-фильтр с несколькими терминами в нескольких столбцах таблицы - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь реализовать поисковый фильтр, который извлекает данные из mysql и применяет несколько критериев, таких как выбор и сопоставление пользователей из столбцов нескольких таблиц. Я хочу искать в этих столбцах по нескольким ключевым словам, например, пользователям из определенной страны или города и интересующимся музыкой.

Я хочу реализовать это примерно с 10 таблицами со столбцами

Вот пример структуры трех структурированных таблиц

Table User Profile (Main table)

ID | PID | Name | Email | Avatar

1 | 22 |  John | x@x.x | URL
---------------------------------
Table User details

ID | PID | Country | City | Address | HPhone | MPhone

1 |  22 |  Norway |  Bergenv addrews | 2222 |   2222 |
---------------------------------
Table User Interests

ID | PID | Interest | Type | Keyword

1 |  22 |  music | music | pop
---------------------------------
Printed Results format

PID, Name, Avatar

Первый PHP-файл file1.php

    <form class="user_search_form" action="file2.php" method="post"> 
    <select class="Interest_types" name="Interest" id="Interest">
    <option value="Retail">Music</option>      
    <option value="Transportation">Movies</option>      
    </select>   

    <select name="city" class="select_city">
    <option value="">City</option>
    <option value="">London</option>
    <option value="">New York</option>
    <option value="">Paris</option>
    </select>

    <input type="submit" value="search"  class="search_btn" />  
    </form>

Текущий второй php файл files2.php

    //Limit our results within a specified range.
    $results = $mysqli->prepare("SELECT PID, Name, Avatar FROM Profile");
    $results->execute(); //Execute prepared Query
    $results->bind_result($PID, $Name, $Email, $$Avatar); //bind variables to prepared statement

    //Display records fetched from database.
    echo '<ul class="contents">';
    while($results->fetch()){ //fetch values
        echo "<a href=\"/Profile.php?id=$PID\" onClick='Loading()'><li class=\"userlistitem\">";
        echo  "<img src='$Avatar' height='100' width='100' onerror=\"this.src = '/assets/img/noImg.png'\"/>";
        echo  "$Name  $Email $PasswordD";
        echo "</li></a>";
    }
    echo '</ul>';

Какой должен быть лучший формат php в files2.php?

Ваша помощь крайне необходима и ценится.

1 Ответ

0 голосов
/ 14 мая 2018

Вы можете использовать соединения в MySQL, чтобы выбрать все данные, которые вам нужны из этих таблиц.Примером может быть что-то вроде этого:

SELECT up.PID, up.Name, up.Avatar FROM User Profile AS up
LEFT JOIN User Details AS ud ON ud.PID = up.PID
LEFT JOIN User Interests AS ui ON ui.PID = up.PID
WHERE ui.KeyWord = 'pop' AND ud.City = 'Bergenv'
ORDER BY up.Name ASC
LIMIT 10

А затем просто добавьте столько объединений, сколько необходимо для фильтрации ваших таблиц.Но будьте осторожны, не добавляйте многие без надлежащей фильтрации, так как это замедлит вашу страницу, если вам нужно объединить несколько таблиц с сотнями строк в них.Так что тщательно планируйте свои вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...