проблема с поиском на сайте

84
06 февраля 2022, 14:40

Я сделал форму поиска и он благополучно работает если ввести одно слово, но если написать 2 слово через пробел то нечего не работает

<div class="search-form">
    <form action="search-result.php" type="get">
        <input type="text" name="search-value" class="search-pole" placeholder="что будем искать?">
        <div href="search-result.php" class="search-btn">
            <i name="src-btn" class="fas fa-search"></i>
        </div>
    </form>
</div> 
if($_GET['search-value']!=null){
        $name = $_GET['search-value'];
        $sresult = mysqli_query($connect, "SELECT * FROM `products` WHERE name='$name'");
        while ($sr = mysqli_fetch_assoc($sresult)) {
            echo '<div class="product">';
            echo "<img src='".$sr['image']."'>";
            echo "<h2>";
            echo $sr['name'];
            echo "</h2>";
            echo "<p>";
            echo $sr['price'];
            echo "</p>";
            echo '<a target="_blank" href="';
            echo $sr['from'];
            echo '">на сайт</a>';
            echo "<a href='product.php?id=".$sr['id']."'>больше</a>";
            echo "</div>";      
        }
    } else {
        echo "Нечего не введено";
    }

как теперь сделать так чтобы результаты введённого через пробел слово тоже выводились?

Answer 1

Когда слов несколько их надо разбивать на отдельные слова

$arr = explode(' ', $_GET['search-value']);

далее для каждого элемента массива

$where = '';
$where_arr = [];
foreach($arr as $a) {
    $a = mysqli_real_escape_string($connect, $a);
    $where_arr = "name = '$a'";
}
$where = join(' OR ', $where_arr);

И уже $where подставляем в запрос.

Кстати, напрямую подставлять данные пользователя ($_GET['search-value']) не стоит. Вы открыты для sql инъекции. Используйте подготовленные запросы или mysqli::real_escape_string.

READ ALSO
Как из ФИО сделать урезанную версию?

Как из ФИО сделать урезанную версию?

Помогите решить задачкуНе силен в регулярных выражениях

150
Как сделать поиск по условию

Как сделать поиск по условию

Мне нужно что бы выводились только те пользователи которые попадают в условияНапример если да две даты с(01

100
Спарсить картинки с яндекса ( PHP + simple html dom parser)

Спарсить картинки с яндекса ( PHP + simple html dom parser)

Нужно: Спарсить первую картинку с сервиса https://yandexkz/images при помощи PHP и библиотеки simple html dom parser

152