невозможно отфильтровать данные из базы данных с помощью формы поиска в php oop с помощью PDO

Привет я пытаюсь сделать форму поиска, которая будет искать таблицу базы данных и отображать на столе. Есть 3 раздела.
1. index.php
2. process_studennt.php
3. Database.php

из формы он перейдет в process_studennt.php, затем перейдет в Database.php и после этого вернется и выдаст результат в таблице.

Но у меня проблемы с этим. Пожалуйста помоги.

Предупреждение:

Примечание: неопределенный индекс: значение для поиска в
H: \ install \ xampp \ htdocs \ crud \ index.php в строке 46

Предупреждение: в foreach () указан неверный аргумент в
H: \ install \ xampp \ htdocs \ crud \ lib \ Database.php в строке 274

Неустранимая ошибка: необработанное исключение PDO: SQLSTATE [42000]: синтаксическая ошибка или
нарушение прав доступа: 1064 У вас есть ошибка в вашем синтаксисе SQL; проверить
руководство, которое соответствует вашей версии сервера MariaDB для права
синтаксис для использования рядом с «ОТ tbl_student» в строке 1 в
H: \ install \ xampp \ htdocs \ crud \ lib \ Database.php: 280 Трассировка стека: # 0
Н: \ установить \ XAMPP \ HTDOCS \ падла \ Lib \ database.php (280):
PDOStatement-> execute () # 1 H: \ install \ xampp \ htdocs \ crud \ index.php (88):
База данных-> search (‘tbl_student’, Array) # 2 {main} добавлено

Моя форма на странице index.php:

              <form class="form form-control" action="lib/process_student.php" method="POST" >
<fieldset class="form-group">
<input type="text" class="form-control-sm"  name="valuetosearch" placeholder="Search..">
<input type="hidden" name="action" value="search">
<input type="submit" class="btn btn-primary" id="submit" name="search" Value="Search">
</fieldset>

и таблица для отображения результата:

> /*
>                           search section
>
>                            */
>
>
>                           $searchdata = $db-> search($tablename,$selectcon);
>                           if (!empty($searchdata)) {
>                               ?>
>                               <tr>
>                                       <td><?php echo $searchdata["id"];; ?></td>
>                                       <td><?php echo $searchdata["name"]; ?></td>
>                                       <td><?php echo $searchdata["email"]; ?></td>
>                                       <td><?php echo $searchdata["phone"]; ?></td>
>                                       <td>
>                                           <a href="editstudent.php?id=<?php echo $searchdata["id"]; ?>" class="btn btn-secondary">Edit</a>
>                                           <a href="lib/process_student.php?action=delete&id=<?php echo $searchdata["id"]; ?>" class="btn btn-danger">Delete</a>
>                                       </td>
>                                   </tr>
>                               <?php
>                           } else {
>                               # code...
>                           }
>
>
>                            ?>

раздел файла process_student.php:

// search section

elseif ($_REQUEST["action"] == "search" && !empty($_REQUEST["action"])) {
$searchvalue = $_POST["valuetosearch"];
if (!empty($searchvalue)) {

$tablename = "tbl_student";
$condition = ["name" => $searchvalue];
$searchdata = $db->search($tablename,$condition);

if ($searchdata) {
$msg = "Data founded";

} else {
$msg = "Error! No data founded";

}

/*
redirecting to the index page

*/
Session::set("msg",$msg);
$home_url = "../index.php";

header("Location: ".$home_url);
} else {
# code...
}

И раздел Database.php:

public function search($tablename,$data)
{

$sql = "SELECT ";
$sql .= array_key_exists("select", $data)?$data["select"]:"*";
$sql .= " FROM ".$tablename;
if (array_key_exists("where", $data)) {
$sql .= " WHERE ";
$i = 0;
foreach ($data["where"] as $key => $value) {
$add = ($i > 0)?" OR " : "";
$sql .= "$add"."$key=:$key";
$i++;
}
}
// now prepare and execute
$query = $this->pdo->prepare($sql);

// bind value
if (array_key_exists("select", $data)) {
foreach ($data["select"] as $key => $value) {
$query->bindValue(":$key","$value");
}
}

// now execute
$query->execute();

// now for the return type

if (array_key_exists("return_type", $data)) {
switch ($data["return_type"]) {
case 'count':
$value = $query->rowCount();
break;
case 'single':
$value = $query->fetch(PDO::FETCH_ASSOC);
break;

default:
$value = "";
break;
}
}
elseif ($query->rowCount() > 0) {
$value = $query->fetchAll();
}

// finaly return
return !empty($value)?$value:false;}

В чем проблема, пожалуйста, помогите мне.
Спасибо.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector