如何使用分页搜索PHP / MySQL

时间:2017-08-11 07:04:22

标签: php mysql

我写了这段代码:

    <div class="container mx-auto">
    <!--Add class table-responsive for responsive table -->
    <div class="row">
        <div class="col-md-6">
            <form method="post">
            <div class="input-group">
                <input size='14' type="text" class="form-control" placeholder="Search for..." name="searchValue">
                <span class="input-group-btn">
                    <button class="btn btn-secondary" name='search' type="submit"><i class="fa fa-search"></i></button>
                </span>
            </div>
            </form>
        </div>
    </div>

    <table class="table mx-auto" id="'table">
        <thead>
        <tr>
            <th>Name</th>
            <th>Surname</th>
            <th>Email</th>
            <th>Phone</th>
            <th>Company</th>
            <th>More</th>

        </tr>
        </thead>
        <tbody>
        <?php
        $pagination = new Pagination(7);

        $page_max = $pagination->getPageMax();



        $start = $pagination->getStart();

        if(!isset($_POST['search'])) {
            $numberOfPages = $pagination->numberOfPages($database->getData("SELECT count(id) FROM customers"));
            $customers = $database->getDataAsArray("SELECT * FROM customers LIMIT $start, $page_max");
        }
        else{
            $searchValue = '%'. $_POST['searchValue'] . '%'; 
            $numberOfPages = $pagination->numberOfPages($database->getData("SELECT count(id) FROM customers WHERE name LIKE '$searchValue' "));
            $customers = $database->getDataAsArray("SELECT * FROM customers WHERE name LIKE '$searchValue' LIMIT $start, $page_max");
        }


        foreach($customers as $customer){
            $name = $customer ['name'];
            $surname = $customer['surname'];
            $email = $customer['email'];
            $phone = $customer['phone'];
            $company = $customer['company'];
            $id = $customer['id'];
            echo "<tr>
                    <td>$name</td>
                    <td>$surname</td>
                    <td>$email</td>
                    <td>$phone</td>
                    <td>$company</td>
                    <td><a href='customerInfo.php?id=$id' class='btn btn-sm btn-info'><i class='fa fa-info'></i></a></td>



                  </tr>";
        }
        ?>
</tbody>
</table>
    <ul class="pagination">
        <?php

        echo $pagination->previous($numberOfPages);


        for($i = 0; $i < $numberOfPages; $i++){
            echo '<li class="page-item"><a class="page-link" href="?page='. $i . '">'. $i. '</a></li>';
        }

        echo $pagination->next($numberOfPages);
        ?>

    </ul>
</div>

getDataAsArray函数是这样的:

public function getDataAsArray($myQuery){
        $this->connection = mysqli_connect($this->host, $this->dbUsername, $this->dbPassword, 'portal');
        $query = mysqli_query($this->connection, $myQuery);
        $results = array();
        while($line = mysqli_fetch_array($query)){
            $results[] = $line;
        }
        return $results;
    }

我知道我应该使用:[name]或者在我的查询中设置参数的东西,问题不是关于那个和当然我应该使用准备好的语句。稍后会这样做。

问题:

我写了代码来搜索db记录。我的工作正常但是当我搜索它时会创建一个包含所有新记录的新分页,当我点击第二页时。该页面使用数据库中的所有记录构建分页,因此我将不再使用它的searchValue。

我认为这个问题将通过$ _GET参数解决,例如在URL或Ajax中搜索,但我不知道如何。

有人可以帮帮我吗?

0 个答案:

没有答案