Задать вопрос
Mesuti
@Mesuti

В чем ошибка вывода данных из бд на страницу?

Привет!
Есть форма поиска
5c0580d8f1b6f224312496.png
и такая таблица в базе данных
5c058094505e0301624903.pngПочему после нажатия на кнопку Поиск, страница перезагружается и ничего не выводит?
В каком направлении копать?
Может не так формируется вывод?
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 "Извините, возникла проблема на сайте";
    echo "Ошибка: Не удалсь создать соединение с базой MySQL и вот почему: \n";
    echo "Номер_ошибки: " . $conn->connect_errno . "\n";
    echo "Ошибка: " . $conn->connect_error . "\n";
    // Вы можете захотеть показать что-то еще, но мы просто выйдем
    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 ($phone){
    $zapros1 = " and `phone` IN ($phone)";
} else {$zapros1="";}

if ($pdateadd){
    $zapros2 = " and `dateadd` IN ($dateadd)";
} else {$zapros2="";}
        
if ($name){
    $zapros3 = " and `name` IN ($name)";
} else {$zapros3="";}
        
if ($place){
    $zapros4 = " and `place` IN ($place)";
} else {$zapros4="";}

$foolzapros="WHERE ".$zapros.$zapros2.$zapros3;

//делаем запрос в базу данных
        
$sql = "SELECT * FROM `items` 
$foolzapros
ORDER BY RAND() LIMIT 1
";
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>

  • Вопрос задан
  • 118 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@Cat-in-code
<?php

if (isset($_POST['phone'])){
  $zapros1 = " and 'phone' IN ('".$_POST['phone']."')";
} else {$zapros1="";}

if (isset($_POST['dateadd'])){
  $zapros1 = " and 'dateadd' IN ('".$_POST['dateadd']."')";
} else {$zapros2="";}
        
if (isset($_POST['name'])){
  $zapros1 = " and 'name' IN ('".$_POST['name']."')";
} else {$zapros3="";}

if (isset($_POST['place'])){
  $zapros1 = " and 'place' IN ('".$_POST['place']."')";
} else {$zapros4="";}

$foolzapros="WHERE ".$zapros1.$zapros2.$zapros3;


и т.д. по тексту.
Но вообще, так же посмотрите на то, что вы не добавляете $zapros4 к $foolzapros, не используете переменную $text и обязательно:
https://habr.com/post/148151/
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Decadal
@Decadal
if ($phone){
    $zapros1 = " and `phone` IN ($phone)";


интересно откуда здесь могло бы взяться phone? Где вы используете эти свои параметры, которые указали в форме? где $phone = $_POST['phone'] ?? null;
где это вот всё? пхп так не работает как вы написали.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы