Почему не выводятся строки из базы данных (простой поиск строк в бд на странице сайта)?

133
24 мая 2019, 20:40

Есть форма поиска:

Есть база данных:

Есть код поиска по базе и вывод найденных строк.

Но при поиске страница просто перезагружается и результаты не выводятся. Скажите, пожалуйста, в чем может быть проблема?

мне кажется, что в цикле while, но я не могу его понять.

Код index.php

<?php
// Хостинг
$sql_ipmysql = "localhost";
// Логин
$sql_login = "root";
// Пароль
$sql_password = "";
// База Данных
$sql_database = "base";
// Подключаемся к БД
$conn = new mysqli($sql_ipmysql, $sql_login, $sql_password, $sql_database);
if ($conn->connect_errno) {
    echo "Извините, возникла проблема на сайте";
    exit;
}
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
<!-- Форма поиска по базе -->    
<form action="" method="post">
    <input type="text" name="phone" placeholder="Телефон"/><br />
    <input type="text" name="dateadd" placeholder="Дата"/><br />
    <input type="text" name="name" placeholder="Имя"/><br />
    <input type="text" name="place" placeholder="Площадка"/><br />
    <input type="submit" value="Поиск" />
</form>

<?php
if (isset($_POST['phone'])){
$zapros1 = " and 'phone' IN ('".$_POST['phone']."')";
} else {$zapros1="";}
if (isset($_POST['dateadd'])){
$zapros2 = " and 'dateadd' IN ('".$_POST['dateadd']."')";
} else {$zapros2="";}
if (isset($_POST['name'])){
$zapros3 = " and 'name' IN ('".$_POST['name']."')";
} else {$zapros3="";}
if (isset($_POST['place'])){
$zapros4 = " and 'place' IN ('".$_POST['place']."')";
} else {$zapros4="";}
$foolzapros="WHERE ".$zapros1.$zapros2.$zapros3.$zapros4;
//делаем запрос в базу данных
$sql = "SELECT * FROM `items` 
$foolzapros
ORDER BY RAND() LIMIT 10
";
if (!$result = $conn->query($sql)) {
    echo "Извините, возникла проблема в работе сайта.";
    exit;
}
while ($data = $result->fetch_assoc()) {
$text=strtolower($data['name']);  
$text = preg_replace('%[^a-zа-я\d]%i', ' ', $text);
$text=str_replace ('   ',' ',$text);
$text=str_replace ('  ',' ',$text);
$text=str_replace (' ','_',$text);
} echo "
<p>
".$data['phone'].".".$data['dateadd'].".".$data['name'].".".$data['place']."
</p>
"
?>
</body>
</html>
Answer 1

В вашем запросе после WHERE сразу идет AND [SELECT * FROM items WHERE and phone IN ...]. Пофиксите это и тогда должно будет работать.

READ ALSO
Ошибки 403 404 502 при выполнении phpinfo()

Ошибки 403 404 502 при выполнении phpinfo()

Поставил nginx, mysql-server, php, а вот когда дело дошло до запуска скрипта infophp

121
Преобразовать строку в букву на PHP

Преобразовать строку в букву на PHP

Есть некая строка $string

123
foreach выводит последнею запись

foreach выводит последнею запись

Всем привет, есть такой код:

112