当前位置: 首页 > 知识库问答 >
问题:

codeigniter积垢操作,搜索和用户定义每页

邹昊
2023-03-14

我正在设计一个页面,它将有一个工具,搜索和显示结果到一个带有分页的表中,用户可以自由选择每页要显示的行数。

控制器包含以下功能:

设置和管理。php

    function view_company(){
        $this->check_logged_in();
        $this->load->library('table');
        $this->load->library('pagination');
        $fields = $this->db->list_fields('company');
        $this->table->set_heading($fields);

        $field_to_search = 'all';
        if(isset($_POST['company_cols'])){
            $field_to_search = $_POST['company_cols'];
        }

        if(isset($_POST['search_text'])){
            $first=true;
            $search_text = $_POST['search_text'];
            if($field_to_search == 'all' && $search_text!=''){
                foreach ($fields as $field){
                    if($first){
                        $this->db->like($field,$search_text);
                        $first=false;
                    }else{
                        $this->db->or_like($field,$search_text);
                    }
                }
            }else if($search_text!=''){
                $this->db->like($field_to_search,$search_text);
            }
        }

        if(isset($_POST['num_of_rows'])){
            $config['per_page'] = $_POST['num_of_rows'];
            $this->session->set_userdata('rows_per_page', $_POST['num_of_rows']);
        }else if($this->session->userdata('rows_per_page')!=null){
            $config['per_page'] = $this->session->userdata('rows_per_page');
        }else{
            $config['per_page'] = 10;
        }
        $result = $this->db->get('company',$config['per_page'], $this->uri->segment(3));

        $config['total_rows'] = $this->db->get('company')->num_rows();
        //$config['total_rows'] = $result->num_rows();

        $config['base_url'] = site_url('/settings_admin/company');
        $config['num_links'] = 5;
        $config['full_tag_open'] = '<div id="pagination">';
        $config['full_tag_close'] = '</div>';
        $config['records'] = $result;
        $this->pagination->initialize($config);
        //var_dump($config);
        //var_dump($_POST);
        $config['num_of_rows'] = $config['per_page'];
        $this->load->view('admin/view/company',$config);
    }

意见如下:

公司php

<?php
    $data = array(
        'title' => 'Company',
        'form_action' => 'settings_admin/company'
    );
?>

<?php $this->load->view('includes/header',$data); ?>
<?php $this->load->view('sidebar_admin_controls'); ?>

<div class="content">
    <h3>Companies</h3>
    <div align='right'>
        Search:
        <input style="width:15em;" type="text" name="search_text"
        value="<?php echo set_value('search_text'); ?>" placeholder="search company details"/>
        in
        <select name="company_cols">
            <option value='all'>all</option>
            <?php
                $fields = $this->db->list_fields('company');
                foreach ($fields as $field){
                    echo "<option value='$field'>$field</option>";
                }
            ?>
        </select>
        <input type="submit" name="search" value="Search"/>
    </div>
    <div align='left'>
        <?php
            if(!isset($num_of_rows)){
                $num_of_rows = 10;
            }
        ?>
        Rows per page: <input style="width:4em;" type="text" name="num_of_rows" value=<?php echo $num_of_rows;?> placeholder="rows"/>
        <input type="submit" name="search" value="Go"/>
    </div>
    <div class="view_table" id="view_table">
        <?php
            echo $this->table->generate($records);
        ?>
    </div>
    <?php
        echo "<br/>";
        echo $this->pagination->create_links(); // can run and show me the ok..
        // when i press on page link, it goes back to default #of rows per page (10)
    ?>
    <br/>
    <div align="center" id="option_buttons">
        <input type="submit" name="add" value="Add New"/>
        <input type="submit" name="update" value="Update"/>
        <input type="submit" name="delete" value="Delete"/>
        <input type="submit" name="print" value="Print"/>
    </div>

</div><!-- end .content -->
<?php $this->load->view('includes/footer'); ?>

当我输入行数并按下GO按钮时,它返回所需的分页,但页面链接数不等于所需的。e、 g.如果搜索只返回一行,它应该显示在表中,没有任何页面链接。但在我的例子中,它显示的是单行(搜索结果)和所有页面链接(等于总行数/每页)。

这可能是因为总计行被设置为$config['total\u rows']=$This-

但是如果我需要添加代码中给出的查询参数(例如“在哪里”子句),我该如何设置呢?


共有3个答案

刘昌翰
2023-03-14

试着给一个机会GroceryCRUD:http://www.grocerycrud.com/

华锦
2023-03-14

为此,您需要两个共同模型中的函数-

// return total row result.
function count_list($table)
{
    $sql = "SELECT COUNT(*) AS result_count FROM $table";
    $result = $this->db->query($sql)->row_array();
    return $result['result_count'];
}



//Search Total  Result Using Pagination
function get_all_list($table_name, $startLimit = NULL, $per_page = NULL)
{
    if (isset($startLimit))
        $this->db->limit($per_page, $startLimit);

    $result = $this->db->get($table_name)->result_array();
    return $result;
}
奚飞星
2023-03-14

在这种情况下,您可以使用此代码。首先在控制器中添加要构造的库。

请看演示-

类欢迎扩展CI_控制器{

function __construct()
{
    parent::__construct();
    $this->load->model('common_model', 'Common_model', true);
    $this->load->library('pagination');
}

然后在你创建任何函数时,我在这里创建一个函数名“bill\u list”

public function bill_list()
{
    /******** pagination ********/
      $pageNo = $this->uri->segment(2, 0);
      $data['page_no'] = $pageNo;
      $config['uri_segment'] = 2;
      $config['base_url'] = BASEURL . 'bill_list';

      //get the total count list
      $config['total_rows'] = $this->Common_model->count_list('lading_bill');
      $config['per_page'] = 20; //per page limit
      $this->pagination->initialize($config);
      $data['pagination'] = $this->pagination->create_links();
      $startLimit = ($pageNo) ? $pageNo : 0;
      $per_page = $config['per_page'];
    /******** pagination ********/

      //get the  list with start limit and per page.

      // here 'lading_bill' is table name
     $data['bill_list'] = $this->Common_model>get_all_list('lading_bill',$startLimit, $per_page);


     $data['mainContent'] = $this->load->view('bill_list', $data, true);
     $this->load->view('template', $data);
}

然后只需将$pagination变量添加到账单列表视图页面。

你可以复制粘贴这个代码。请检查分页库是否在库文件夹中可用。就这样。

 类似资料:
  • 呃……这个项目如果没有什么特别之处就不叫 elasticsearch 了!现在一起来聊聊客户端的搜索操作。 在命名方案规范的前提下,客户端拥有一切的查询权限,也拥有获取 REST API 公开的一切参数的权限。现在来看看一些示例,方便你熟悉这些语法规则。 Match查询 以下是 Match 查询的标准 curl 格式: curl -XGET 'localhost:9200/my_index/my_

  • 搜索过程是Lucene提供的核心功能之一。 下图说明了该过程及其用途。 IndexSearcher是搜索过程的核心组件之一。 我们首先创建包含indexes ,然后将其传递给IndexSearcher ,后者使用IndexReader打开Directory 。 然后我们使用Term创建一个Query ,并通过将Query传递给搜索器来使用IndexSearcher进行搜索。 IndexSearch

  • 我正在尝试使用SearchContext、IndexSearcherHelperUtil和所有其他东西,为Liferay 7.3.5 GA6开发一个定制的web内容搜索portlet。 我有一些不同字段的DDM结构,从我在elasticsearch索引上看到的,这些字段在嵌套文档中被索引,如下所示: 这与我以前知道的旧方法不同,在旧方法中,自定义字段被索引为 现在我明白了 以下是代码: 这仍然是一

  • 我到处找了又找,但还是找不到解决问题的办法。我还不熟悉php和codeigniter,所以可能我已经错过了答案,但不管怎样,下面是我要做的。 这是我的控制器(c_index.php)-调用搜索函数并对结果数组执行分页。 这是我的视图(index.php)-基本上只是显示分页结果 我的模型(m_search.php)-基本上搜索数据库并返回结果数组。 类M_搜索扩展了CI_模型{ 现在我的问题是保留

  • 问题内容: 我想搜索一个XML值列,看是否包含一个字符串。我不知道架构,我想知道字符串是否包含在任何地方。我不知道XPATH是否可以在这种情况下工作。 相当于 错误:参数数据类型xml对于同类函数的参数1无效。 相关表格列 我要搜索的项目应该是一个属性。因此,如果上述方法不可能实现,那么包含该属性的任何内容都将是一个不错的选择。 问题答案: 最简单(但绝对不是最快执行)的方法是在将列传递给之前将其

  • 我正在开发一个航空公司管理系统,通过JPA Crudepository方法访问mysql数据库。每当我试图使用存储库将飞行对象保存到数据库中时。保存(flightObject),它会引发以下错误- 我的航班创建功能如下- 我的航班存储库类- 我的飞行实体类如下- 我的可嵌入平面类如下- 这是我的数据库架构图像- 如果你能发现任何错误,请告诉我。我已经试了一段时间了,但没有成功。我们可以打印JPA查