MySQL поиск с использованием PHP - PullRequest
0 голосов
/ 06 июля 2019

Я пишу код для поиска MySQL, но он не работает

Я использую класс PHP, и это код:

data_model.php

<?php
$data = new Data();
if(isset($_GET['q'])) {
    $data->$_GET['q']();
}
class Data {

    function __construct(){
        if(!isset($_SESSION['id'])){
            header('location:../../');   
        }
    }


    function getSubject($search){
        global $con;
        $q = "select * from subject where code like '%$search%' or title like '%$search%' order by code asc";
        $r = mysqli_query($con, $q);
        return $r;
    }]

subject.php

<?php
include "data/data_model.php";

$search = isset($_POST["search"]); 
$subject = $data->getSubject($search);
?>

<form action="subject.php" method="post">
   <label>
       <input type="text" class="form-control" name="search" placeholder="Search Subject..." >
   </label>
   <button type="submit" name="search" class="btn btn-success" value="search"><i class="fa fa-search"></i> Search</button>
</form>

что-то не так в моем коде?Я также использую getSubject при получении данных из таблицы БД в мою HTML-таблицу, и у нее нет проблем, но при поиске она не работает?

Кто-нибудь может мне помочь?Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 06 июля 2019

Я думаю, что есть проблема в вашем объекте соединения, поэтому он не работает должным образом, если вы хотите выполнять операции с использованием класса, вот мой рекомендуемый код для вас.

Сначала создайте свой класс соединения

class DBConnection {

        private $dbConnection = false;

        function __construct() {

        }

        public function connect() {
            $this->dbConnection = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
            if (mysqli_connect_error()) {
                die(error_db_not_conntected);
            }
            return $this->dbConnection;
        }

        public function disconnect() {
            $this->connect()->close();
        }
    }

Расширяет этот класс в классе данных, как это

Вы должны включить сюда файл DBConnection

include 'DBConnection.php';

 class Data extends DBConnection{
       function __construct(){
            if(!isset($_SESSION['id'])){
                header('location:../../');   
            }
        }

        function getSubject($search){
            $q = "select * from subject where code like '%$search%' or title like '%$search%' order by code asc";
            $results = $this->connect()->query($q);
            $this->disconnect();
            return $results;
        }     
    }

Используйте этот класс следующим образом, если вы используете метод POST в вашей теме. Php

$search = array();  
     if(isset($_POST['search'])){
        $search = (new Data())->getSubject($_POST['search']);
    }    
    print_r($search);   
0 голосов
/ 06 июля 2019

Не должно ли быть так?

$data = new Data();
if(isset($_GET['q'])) {
    $data->getSubject($_GET['q']);
}

Также это:

<?php
include "data/data_model.php";

$search = isset($_POST["search"]); 
$subject = $data->getSubject($search);
?>

Не будет работать должным образом, потому что isset () возвращает TRUE / FALSE в зависимости от того, есть ли «поиск» в $ _POST. Вот что работает:

    <?php
        include "data/data_model.php";


        $search = isset($_POST["search"]) ? $_POST["search"]:  '';
        $subject = $data->getSubject($search);
        ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...