Анализ таблицы базы данных из запроса GET - PullRequest
0 голосов
/ 16 апреля 2020

Доброе утро
Я изо всех сил пытался работать вокруг этого недавно, так как я довольно плохо знаком с PHP & MySQL в целом. У меня есть база данных с таблицей «видео», в которой я храню полезную информацию о видео, и у меня есть документ с именем search. php, который будет отображать определенные c видео на основе запроса GET. Запрос выглядит так:

http://example.ex/search.php?tag=EXAMPLE1

Лог c будет хранить значение тега следующим образом:

if(!empty($_GET["tag"])){
     // Get videos from tag only
     $curTag = strval($_GET["tag"]);
     displayByTag($curTag); //the function that parse the database
}

У меня готово соединение:

$server = "localhost";
$username = "root";
$password = "";
$db = "mydatabase";
$conn = mysqli_connect($server, $username, $password, $db);

$query = "SELECT * FROM videos";
$response = array();
$result = mysqli_query($conn, $query);
while($row = mysqli_fetch_array($result)) {
     $response[] = $row;
}

Технически на данный момент моя таблица хранится внутри $response[].
Что мне нужно сделать, это проанализировать базу данных и найти столбец «теги», разделить его строковое значение («EXAMPLE1, EXAMPLE2, ПРИМЕР 3 "в таблице), а затем посмотреть, соответствует ли значение GET одному из них.

Вот когда мне понадобится ваша помощь. Я понимаю логику c, шаги, но не могу "перевести" ее в PHP. Вот что я бы сделал (на человеческом языке):

function displayByTag($tag) {
     for each $video-item inside $array {
          $tagsArray = explodes(",", $video-item[tags-column]); //That's how I split the tags stored inside the table
          for i as integer = 0 to $tagsArray.length {
               if $tagsArray(i) == $tag {
                    //THATS A MATCH
               }
          }
     }
}

Это правильный способ сделать это? И как я могу перевести этот "человеческий" язык в PHP код?
Спасибо за помощь.

1 Ответ

0 голосов
/ 17 апреля 2020

После небольшого тестирования и отладки моя функция работала довольно легко. Если кому-то интересно:

function searchVideos($search) {
    $currentSearchQueries = explode(" ", strtoupper($search)); //Split the searched tags in a array and make them to uppercase for easier comparaison.

    //Establish a connection the MySql Database
    $server = "localhost";
    $username = "root";
    $password = "";
    $db = "mydatabase";
    $conn = mysqli_connect($server, $username, $password, $db);

    //Select all the entries from my 'videos' table
    $query = "SELECT * FROM videos";
    $response = array();
    $result = mysqli_query($conn, $query);
    while($row = mysqli_fetch_array($result)){
        $response[] = $row; //Place them into a array
    }

    //Parse the array for matching entries
    foreach ($response as &$video){ //Each entries goes through the process
        foreach ($currentSearchQueries as $t) {
            //We compare if one the tags searched matches for this particular entry
            if((strtoupper($video[tags]) == $t) {
                //THAT'S A MATCH
            }
        }
    }
}

Было очень весело писать код, ожидая новых впечатлений!

...