在codeigniter中打印计数值

问题描述 投票:5回答:5

我想在我的项目中打印一些记录的计数,我尝试使用一些代码,但没有结果给出任何人都可以找出错误。

调节器

function cart_count()
{
    $sess = $this->session->userdata('SESS_USER');
    $query = $this->product_model->c_count($sess);
    $data['count'] = $query->result();
    $query = $this->db->get("cart");
    $data['records'] = $query->result();
    $this->load->view('frontend/menu',$data);
}

模型

public function c_count($sess)
        {
            $query =$this->db->query("SELECT COUNT(`product_id`)  FROM `cart` WHERE `username`='$sess'");
            return $query;

        }

视图

<?php foreach($count as $count){echo $count;}?>

enter image description here

php codeigniter
5个回答
4
投票

我使用countwhere查看您的查询。这意味着您只需选择1行数据即可。

username     COUNT(product_id)
  admin             3

返回数据只有1行,因此您可以像row()一样使用return $query->row()返回数据。

模型:将您的数据默认值返回为row(),用于1行数据。

public function c_count($sess)
{
    $query = $this->db->query("SELECT COUNT(product_id) as count_id
                               FROM cart
                               WHERE username = '$sess'");
    return $query->row();
}

控制器:在此处调用您的数据。

function cart_count()
{
    $sess = $this->session->userdata('SESS_USER');
    $query = $this->product_model->c_count($sess);
    $data['count'] = $query->count_id; // CHANGE FROM $data['count'] = $query->result();
    // If you dont mind, I change your code :
    // $query = $this->db->get("cart");
    // $data['records'] = $query->result();
    $record = $this->db->get("cart");
    $data['records'] = $record->result();
    $this->load->view('frontend/menu',$data);
}

视图以下是如何调用您的数据,使用<span>给出示例。

<span>Admin total product : <?php echo $count; ?> Products</span>

有很多方法可以从数据库中调用返回的数据。 您也可以在视图中使用<?php echo $query->count_id; ?>,而无需在控制器中将其设置为$data['count']。你现在可以试试。 :)希望这个帮助。

注意:如果您想调用多于1个数据,请不要使用where但使用group by。我想给你一个例子,但这与你的问题不同。 :)如果有任何错别字,请告诉我,我会解决它。


1
投票
$query =$this->db->query("SELECT COUNT(`product_id`) AS count  FROM `cart` WHERE 
`username`='$sess'");

0
投票

将查询更改为

$query =$this->db->query("SELECT COUNT(`product_id`) as count  FROM `cart` WHERE `username`='$sess'");

$query->result()将返回对象数组

在视图中,您将获得可以使用的对象

<?php foreach($count as $count){echo $count->count;}?>

要么

<?php echo $count[0]->count?>

0
投票

问题出在您的模型类中,您可以在其中获取行数。实际上,在CodeIgniter中,结果集获取与DB表的列匹配的内容。例如。该声明

$query =$this->db->query("SELECT COUNT(`product_id`)  FROM `cart` WHERE `username`='$sess'");

将返回一个这样的结果集

Array ( [0] => stdClass Object ( [COUNT(`product_id`)] => 60 ) ) 

当您尝试使用此行<?php foreach($count as $count){echo $count;}?>显示结果时,您会收到错误,因为您要求显示$ count数组的$ count数据变量,该变量不存在。在没有太多代码更改的情况下解决此问题的一个简单方法是在查询中使用别名。只需将查询更改为此

$query =$this->db->query("SELECT COUNT(`product_id`) as 'nums' FROM `products` WHERE `service_id`='$sess'");

并在视图中获取结果为<?php foreach($count as $c){echo $c->nums;}?>

但是,在我看来,最好使用CI的内置函数num_rows()


0
投票

获得结果后,只需使用PHP count()函数即可

CONTROLLER

function cart_count()
{
    $sess = $this->session->userdata('SESS_USER');
    $query = $this->product_model->c_count($sess);
    $data['count'] = count($query->result());
    $query = $this->db->get("cart");
    $data['records'] = $query->result();
    $this->load->view('frontend/menu',$data);
}
© www.soinside.com 2019 - 2024. All rights reserved.