Привет я пытаюсь сделать форму поиска, которая будет искать таблицу базы данных и отображать на столе. Есть 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;}
В чем проблема, пожалуйста, помогите мне.
Спасибо.
Задача ещё не решена.
Других решений пока нет …