为什么我无法在 Codeigniter 中使用 Chart.js 创建月度销售报告

2024-01-24

我有一个用 Chart.js 创建的图表

我每天从数据库中获取总计,有时没有这样的收入:

id | seller | date             | quantity | price | total

1    3636    2019-10-09 10:00   4           1,2      4,8
2    3045    2019-10-09 15:51   2           0,6      1,2
3    3636    2019-10-06 11:05   8           1,0      8,0
4    3636    2019-10-04 14:03   5           0,9      4,5
5    3636    2019-10-01 14:57   3           0,4      1,2

如您所见,10 月 9 日有 2 次销售,10 月 6 日有 1 次销售,10 月 4 日有 5 次销售,10 月 1 日有 1 次销售。

我为此创建了一个代码,但效果不佳:

//$kazanc_v is sales dates array which is come from the controller
            for($i=1;$i<31;$i++)
            { 
                $arr2[]=date('Y').'-'.date('m').'-'.$i;
            }
            for($k=0;$k<30;$k++){
                  if(in_array($arr2[$k],$kazanc_v[0])){
                         echo $kazanc_v->sub_total;
                      } else {
                          echo '0,';
                }
             }

当我将数据放入数据集中时,图表如下所示:

对于看不到img:错误的图表 https://eksiup.com/p/bq258762xap8

我无法在图表数据中写入“0”,因为表中没有数据。 当日期没有销售时我想写 0 并且图表应该像我想要的那样

October sales report for can't see img : [october reports] https://eksiup.com/p/w82588177qph3 https://eksiup.com/p/w82588177qph

如何创建真实的报告?


首先,让我们澄清一下,我明白了$kazanc_v[0] and $kazanc_v->sub_totalthis 是对象还是数组?这个变量的输出是什么?

使用这样的输出也会迫使你犯错误。如果您想显示每个日期的销售总数或总价,您应该从数据库中获取按日期分组的数据。

您模型中的查询应该是这样的;

//in your model
$this->db->select("count(quantity) as qty, DATE(order_date) as date") 
         ->from("orders")
         ->where(order_date > "2021-01-01") //beginning of this month
         ->group_by('date')
         ->get()
         ->result_array()
 ;

现在,您需要创建x-axis第一的。 在您的情况下,一个月的总天数(我们认为是 31 天)

//in your controller
$begin = new DateTime( date('Y-m-01') ); //or given date
$end = new DateTime( date('Y-m-t') );
$end = $end->modify( '+1 day' ); 
$interval = new DateInterval('P1D');
$dateRange = new DatePeriod($begin, $interval ,$end);

您有一个包含日期的数组,现在您可以使用来自模型的数据创建带有 y 和 x 轴的图表数据。

$chartData =[];
$kazanc = $this->some_model->some_method();  

foreach($dateRange as $date){
  $dataKey = array_search($date->format("Y-m-d"), array_column($kazanc, 'date'));
  if ($dataKey !== false) { // if we have the data in given date
      $chartData[$date->format("Y-m-d")] = $kazanc[$dataKey]['qty'];
  }else {
      //if there is no record, create default values
     $chartData[$date->format("Y-m-d")] = 0;
  }
}

//send data to view
$this->load->view('template', ["chartData" => $chartData]);

现在,您有 31 天数据的日期(x 轴)和数量(y 轴)$chartData多变的。

最后,我们可以打印视图中的数据。根据chartjs文档,是这样的。

// in your view
var options = {
  type: 'line',
  data: {
   labels: <?php echo json_encode(array_keys($chartData)); ?>,
   datasets: [
        {
          label: '# Total Quantity',
          data: <?php echo json_encode(array_values($chartData)); ?>,
          borderWidth: 1
        }
    ]
 },

示例工作代码(php)https://www.tehplayground.com/pmiPYk3yhIpExJqa https://www.tehplayground.com/pmiPYk3yhIpExJqa

Chartjs 的 jsfiddle。https://jsfiddle.net/jwf67voe/ https://jsfiddle.net/jwf67voe/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我无法在 Codeigniter 中使用 Chart.js 创建月度销售报告 的相关文章

  • CURL 中的 data-urlencode 是什么意思?

    我搜索了很多个小时试图弄清楚 php curl 中的 data urlencode 是什么 我尝试过这个 但我认为这是不对的 xmlpost object1 file https www lob com goblue pdf 在文档中是 d
  • 一次播种多行 laravel 5

    我目前正在尝试为我的用户表播种 如果我像这样尝试 2 行 就会失败 如果我只使用单个数组而不是 users 数组内的 2 个数组来创建一些假数据 那么效果很好 我做错了什么 正确的方法是什么 class UserTableSeeder ex
  • 使用正则表达式提取两个短语之间的所有单词[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下正则表达式提取两个短语之间的所有单词 b item W w W 0 2 1 one W w W 0 3 business b b item W w W 0 2 3 three W w W 0 3
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账
  • 使用 PHP 删除文件 onclick [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在用户单击删除链接时删除文件 但
  • 根据用户角色将帖子状态更改为待处理

    我有会员网站 用户必须付费才能订阅 当用户订阅时 他的角色变为 成员 现在可以发布到名为 用户配置文件 的自定义帖子类型 我想要做的是将所有已发布帖子的状态更改为该帖子类型中的待处理 例如 如果用户角色更改为 已过期 我尝试了这个 但似乎没
  • SQL:在行中保留计数或从数据库中选择计数

    示例 我有 2 张桌子 类别 Posts 在这样的类别中保留帖子编号是一个好方法吗 类别 id title posts 1 golf 50 2 soccer 90 posts id title category id 1 news 1 1
  • 使用 JavaScript 在 HTML 表中动态添加行并通过提交按钮获取每个文本框的文本框值

    我有一个可以动态添加行的表 当我提交保存按钮时 我想将每行中的数据获取到 php 数组 请有人帮我解决这个问题 我是java脚本的新手 对此知之甚少 谢谢你
  • 使用哪个正则表达式将此字符串转换为数组?

    从 mysql 中的地理空间列我得到以下字符串值 我想将其转换为数组 最终目标是将其转换为 geoJSON POLYGON 4 885838 52 388063 4 891061 52 388381 4 890973 52 382909 该
  • 第一个选项为空的选择框

    如何将选择框中的第一个选项设置为空值 我正在从数据库获取数据 我想将选项默认设置为 请选择一个选项 我找到 default gt Please select 不适用于 HTML5 必需属性 这确实有效 listOfValues 1 gt C
  • 如何从MySQL数据库获取今天/昨天的数据?

    我想从数据库中检索今天的数据 但我不知道该怎么做 我实际上想要获取不是过去 24 小时的数据 我只想获取今天的数据 因此基于实际服务器时间 我还想获取昨天的数据 谁能帮我怎么做 示例代码 SELECT id FROM folk WHERE
  • php 注意到 $GLOBALS['HTTP_SERVER_VARS']['HTTP_HOST'] 中未定义索引 http_host

    突然 在最近的 php 版本更新后 我从 php 收到了此通知 它在多个地方使用 特别是我的 htmlMimeMail 类 代码是 mail gt setSMTPParams mail xxxx xxx 26 GLOBALS HTTP SE
  • Joomla getUser() 不显示更新的用户数据

    下面的代码允许我在用户的 Joomla 个人资料的个人资料页面中显示用户名 鉴于我已经覆盖了模板以获得我想要的外观和感觉 user JFactory getUser if user gt guest echo You are logged
  • 带有列标题的php数组到csv的转换

    我想将数组转换为 csv 我能够将关联数组转换为 csv 但无法获取标题 我想要动态地将数字类型日期作为标题 下面是我转换的数组 Array 0 gt Array NUMBER gt 67 TYPE gt Other DATE gt 3 3
  • 如何在 Kohana 中包装 PHP 遗留代码?

    我有大量用 PHP 编写的遗留代码 这些代码不是在任何特定框架上编写的 而是主要是老式风格 即内联 PHP 然而 我的大部分新代码都是在 Kohana 3 1 X 框架上编写的 尽管 Kohana 确实允许遗留代码和 Kohana 文件在同
  • Laravel + AngularJS Nginx 路由

    我有以下问题 我需要配置Nginx 这样在任何URL用户访问时 它都会保留uri 例如domain com some url 但仅传递给 laravel 并让 Angular 处理路由 Route get function return v
  • CodeIgniter 路由问题以访问前端和后端文件夹

    我正在使用 CodeIgniter 我在控制器和视图中有前端和后端文件夹 我尝试了服务器步骤甚至检查了几乎所有解决方案 但我仍然无法访问它我的默认控制器 路线 php route default controller frontend Us
  • 显示产品中的类别名称和类别 ID - Laravel

    我已经找到了这个答案 但它对我不起作用 Laravel 按 id 显示类别 https stackoverflow com questions 39222584 laravel displaying categories by id 我无法
  • 对文本变量进行数学求和? (例如 5865/100 )

    我有一个变量是 whatever 5865 100 这是一个文本变量 我希望它计算 5865 100 以便我可以将其添加到其他数字并进行计算 Number format 不起作用 因为它只返回 5 865 而我希望它返回 58 65 我可以
  • 使用 ActiveRecord 和 Yii2 记录实际的 SQL 查询?

    我正在这样做 students Student find gt all return this gt render process array students gt students 然后在视图中 foreach students as

随机推荐

  • QAbstractTableModel 并为单行发出 dataChanged

    我从 QAbstractTableModel 派生了一个模型 现在我想通知 整行的数据已更改 例如 如果索引为 5 的行的数据发生更改 4 列 则使用以下代码可以按预期工作 emit dataChanged index 5 0 index
  • 钥匙串上的分发证书中缺少私钥

    我遇到以下问题 在任何地方都找不到解决方案 基本上 我们有一个公司开发人员帐户 不是企业 因此为了提交我们的应用程序 我要求我们的团队负责人向我发送分发证书 并创建并向我发送分发配置文件 使用开发人员配置文件 一切正常 但是当我安装证书和配
  • newtype 如何帮助隐藏任何东西?

    现实世界哈斯克尔说 我们将使用新类型隐藏解析器类型的详细信息 宣言 我不明白如何使用新类型隐藏任何内容 谁能详细说明一下吗 我们想要隐藏什么以及我们如何做到这一点 data ParseState ParseState string L By
  • 可可 NSNumberFormatterCurrencyStyle 没有“$”返回零

    我设置了一个数字格式化程序来将货币字符串转换为十进制值 问题是 如果文本字符串没有前导美元符号 它会转换为 0 而不是有效的匹配数字 所以 3 50 converts to 3 50 3 50 converts to 0 这是转换器的代码
  • 这台机器上似乎运行了太多模拟器实例。正在中止

    当我从 SDK 管理器运行它时 加载过程可以正常工作 但是一旦完成 模拟器就会出现闪烁 然后很快消失 有时加载后什么也没有发生 最糟糕的是 当它加载时 我会收到 太多模拟器实例正在这台机器上运行 正在中止 消息 我想开始制作应用程序 但这似
  • Nuxt Heroku 需要填写什么 baseurl 才能运行?

    这是我的nuxt config js file env baseUrl process env BASE URL http localhost 3000 Axios module configuration https go nuxtjs
  • constexpr 函数内的 if 与 if constexpr

    最近修改了一些if constexpr into if在我的 constexpr 函数中 发现它们仍然可以正常工作并且可以在编译时进行评估 这是一个最小的情况 template
  • 如何通过IIS中的代理来防止跨域问题?

    我有一个用 Delphi 编写的网站 需要从 NET Web 服务获取数据 为了使用 Web 服务 我首先附加到一个 NET 网站 该网站包含最终用户必须填写的向导 然后该向导调用 Web 服务以填充 AJAX 下拉列表并将数据返回到调用
  • 如何更好地表达舵图中需要一个值?

    我现在正在这样做 value required A valid Values foo entry required Values foo 但在我看来 为模板中的所有必需值提供相同的消息很麻烦 而且会使模板变得混乱 是否有更好的方法可以在模板
  • 更改 SVN 存储库 URL

    我当前的SVN结构 Path URL svn someaddress com tr project Repository Root svn someaddress com tr Repository UUID Revision 10297
  • Chrome 更新 - 无法在“URL”上执行“createObjectURL”

    我正在从网络摄像头拍摄图像并将其存储到服务器 一切都工作正常 直到我今天得到 chrome 更新 我最新的 chrome 版本是 版本 71 0 3578 80 64 位 这一行抛出一个错误 camera src window URL cr
  • 如何将 CONCAT_WS 与 IN 一起使用?

    使用Symfony2和Doctrine2 想要将CONCAT WS与IN结合起来 而不是写很多IF WHERE CONCAT WS id2 id2 IN ids 我收到此错误 Syntax Error line 0 col 446 Erro
  • Flask-PyMongo - InsertOneResult 类型的对象不可 JSON 序列化

    我有一个 api 我正在尝试使用 Flask Pymongo 存储 发布用户对象 但是 我收到以下错误 文件 home kay local share virtualenvs server iT4jZt3h lib python3 7 si
  • 在网络场中运行 IdentityServer4 的提示

    有人有在负载均衡器后面的网络场 多个 IIS 服务器 中运行 IdentityServer4 的经验吗 我们在让两台服务器协同工作时遇到了一些问题 我没有看到 IdentityServer4 的部署指南 这里有一个用于 IdentitySe
  • 如何在Hibernate日志中显示SQL参数? [复制]

    这个问题在这里已经有答案了 在我的 hibernate cfg xml 中 我有以下内容
  • 从大型 XML 文件中删除节点

    我有一个大型 XML 文档 该文档太大而无法使用 XmlDocument 加载 我需要遍历节点的每个子节点并检查它是否符合条件 然后相应地删除 最后保存文档
  • Nodemon --ext 任何文件类型

    我有一个我想观看的图像目录 该目录可以有许多不同的文件类型 我知道您可以指定nodemon要监视的文件类型列表 但是如何告诉nodemon监视目录中的所有文件 我的命令现在看起来像这样 watch images nodemon ignore
  • 使用 CSS 自定义单选按钮和复选框

    有没有一种方法可以使用自定义图像来设置单选按钮和复选框的样式 只使用CSS 有人可以指出我如何做到这一点吗 还有哪些 jquery 最好的插件可以做到这一点 Check CSS 设置复选框 单选按钮和下拉菜单的样式 https stacko
  • Cordova + Android - android-windowSoftInputMode adjustmentPan 不起作用

    我正在使用 Cordova 5 4 0 我的config xml
  • 为什么我无法在 Codeigniter 中使用 Chart.js 创建月度销售报告

    我有一个用 Chart js 创建的图表 我每天从数据库中获取总计 有时没有这样的收入 id seller date quantity price total 1 3636 2019 10 09 10 00 4 1 2 4 8 2 3045