gpt4 book ai didi

php - CodeIgniter:项目分页

转载 作者:行者123 更新时间:2023-11-29 22:11:12 25 4
gpt4 key购买 nike

我目前在使用 Codeigniter 2.2 的分页时遇到问题。我想要的是显示项目列表(如果它包含在另一个表中)。

为了表达我的意思,这就是逻辑。

<?php
$x = 1;
$this->db->group_by("item_id");
$query = $this->db->get('item_inventory_inhouse');
foreach ($query->result() as $row4)
{
$this->db->where('item_id', $row4->item_id);
$query = $this->db->get('items');
foreach ($query->result() as $row)
{
echo '<tr>';
echo '<td>' . $x++ . '</td>';
echo '<td><a href="">' . $row->item_id . '</a></td>';
echo '<td><a href="">' . $row->item_name . '</a></td>';
echo '<td>' . $row->item_category . '</td>';
echo '<td>' . $row->item_costprice . '</td>';
echo '<td>' . $row->item_retailprice . '</td>';
echo '<td>' . $row->item_tax . '%</td>';
echo '</tr>';
}
}
?>

因为我正在做分页。上面的代码我写不出来。

好吧,我尝试编写一些代码。这是我的 Controller :

function pharmacy()
{
if($this->session->userdata('logged_in'))
{
$total_row = $this->pharmpagination_model->record_count();
$config['num_links'] = 2;
$config['base_url'] = base_url().'index.php/inventory/pharmacy/';
$config["total_rows"] = $total_row;
$config['per_page'] = 30;
$config['full_tag_open'] = '<nav><ul class="pagination">';
$config['cur_tag_open'] = '<li class="active"><a href="#">';
$config['cur_tag_close'] = '</a></li>';
$config['num_tag_open'] = '<li>';
$config['num_tag_close'] = '</li>';
$config['full_tag_close'] = '</ul></nav>';
$config['next_tag_open'] = '<li><span aria-hidden="true">';
$config['next_link'] = '&raquo;';
$config['next_tag_close'] = '</span></li>';
$config['last_link'] = 'Last';
$config['last_tag_open'] = '<li>';
$config['last_tag_close'] = '</li>';
$config['first_link'] = 'First';
$config['first_tag_open'] = '<li>';
$config['first_tag_close'] = '</li>';
$config['prev_tag_open'] = '<li><span aria-hidden="true">';
$config['prev_link'] = '&laquo;';
$config['prev_tag_close'] = '</span></li>';

$this->pagination->initialize($config);
if($this->uri->segment(3)){
$page = ($this->uri->segment(3)) ;
}
else{
$page = 1;
}
$data["results"] = $this->pharmpagination_model->fetch_data($config["per_page"], $page);
$str_links = $this->pagination->create_links();
$data["links"] = explode('&nbsp;',$str_links );

$session_data = $this->session->userdata('logged_in');
$data['username'] = $session_data['username'];
$data['title'] = 'Pharmacy Inventory';
$this->load->view('inventory/pharmacy', $data);
}
else
{
$this->session->set_flashdata('message', 'Oops! You have to Login');
//If no session, redirect to login page
redirect('login', 'refresh');
}
}

这是模型

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class PharmPagination_Model extends CI_Model {
function __construct() {
parent::__construct();
}
// Count all record of table "contact_info" in database.
public function record_count() {
return $this->db->count_all("item_inventory_inpharmacy");
}

// Fetch data according to per_page limit.
public function fetch_data($limit, $id) {

$this->db->group_by("item_id");
$mainquery = $this->db->get('item_inventory_inpharmacy');
foreach ($mainquery->result() as $row4)
{

$this->db->limit($limit, $id-1);
$this->db->where('item_id', $row4->item_id);
$query = $this->db->get("items");
}
if ($query->num_rows() > 0) {
foreach ($query->result() as $row) {
$data[] = $row;
}

return $data;
}


return false;
}
}
?>

它确实有效,但只显示 1 行,实际上,它应该显示 5 行,因为数据库中有 5 行。

希望有人能帮忙。谢谢

最佳答案

由于您尚未提供数据快照,因此很难判断为什么它显示一行。我假设你的 items 表中有不同的 item_id ,如果你查看你的模型代码,这就是问题所在(你正在查询 item 表中的每个 item id 但只返回最后一个 item 的 $data 数组。)

您可以使用 join 轻松完成此操作:)

public function fetch_data($limit, $id) {
$this->db->group_by("item_inventory_inpharmacy.item_id");
$this->db->from("item_inventory_inpharmacy");
$this->db->join("items","items.item_id=item_inventory_inpharmacy.item_id");
$this->db->limit($limit, $id-1);
$query = $this->db->get();
return $query->result();
}

关于php - CodeIgniter:项目分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31650141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com