【问题标题】:how to COUNT explode imploding data with comma? [duplicate]如何用逗号计数爆炸内爆数据? [复制]
【发布时间】:2021-08-18 08:08:27
【问题描述】:

我想计算图表中的机制数量,但有些数据有多个数据,我使用 implode(逗号)。如何分离数据?

我正在从我的一个表中获取数据,其中一列的值是内爆的。这里的问题,我只想分别分解 **nama_tmp **(EKO PAMBUDI, MURNO, ARDI PRASETYO) 以便我可以计算每个名字

我使用以下查询来显示表格:

var chart4; 
    $(document).ready(function() {
        chart4 = new Highcharts.Chart({
            chart: {
                renderTo: 'mygraph4',
                type: 'column'
            },   
            title: {
                text: 'Grafik Mekanik'
            },
            xAxis: {
                categories: ['Mekanik']
            },
            yAxis: {
                title: {
                text: 'Total Perbaikan'
                }
            },
                series:             
                [
                    <?php 
                    include "system/koneksi.php";
                    $sql   = "SELECT nama_tmp FROM tb_tmp GROUP by nama_tmp";
                    $query = mysqli_query($connect, $sql)  or die(mysqli_error());
                    while($temp = mysqli_fetch_array($query))
                    {
                        $namatmp=$temp['nama_tmp'];                     
                        $sql_total   = "SELECT COUNT(nama_tmp) as 'total' from tb_tmp GROUP by nama_tmp = '$namatmp'";        
                        $query_total = mysqli_query($connect,$sql_total) or die(mysql_error());
                        while($data = mysqli_fetch_array( $query_total))
                        {
                            $total = $data['total'];                 
                        }             
                    ?>
                        {
                        name: '<?php echo $namatmp; ?>',
                        data: [<?php echo $total; ?>]
                        },
                        <?php 
                    }   ?>
                    ]
        });
    }); 

我的数据库:

【问题讨论】:

  • 我个人不明白这个问题!这是一个 SQL 或 PHP 问题吗?什么是输入和想要的输出?我在你的代码中没有看到任何 implode() !
  • 对不起,在上面的代码中,我从我的一个表中获取数据,其中一列的值是内爆的。这里的问题,我只想分别爆(EKO PAMBUDI、MURNO、ARDI PRASETYO),这样我就可以数出每个名字。
  • 这能回答你的问题吗? How to count items in comma separated list MySQL
  • @spinsch 这个案例和我的差不多,但是我不明白问题中提供的解决方案.....
  • 我们不应该看到迭代查询。我们应该只看到一个带有 JOIN 和可能带有 ROLLUP 的查询。如果您的表列中有逗号分隔值,那么您在设计数据库表时做得很不幸,您将为此受苦。请提供一个包含真实数据的数据库小提琴以及您从样本输入中获得的确切期望输出。您是否有所有将要使用的名称的主/静态列表?

标签: php mysql charts highcharts implode


【解决方案1】:

再次查看图片后,我可以理解您的问题。您基本上需要准备数据,而不是直接打印 PDF。

您可以使用地图来计算输出,如下所示:

$total = array("freq" => 0, "menit" => 0, "jam" => 0);
$groups = array();
while ($data = mysqli_fetch_array($query)) {
    $names = explode(",",$data['nama_tmp']);
    foreach ($names as $name) {
        if (!array_key_exists($name, $groups)) {
            $groups[$name] = array("freq" => 0, "menit" => 0, "jam" => 0);
        }
        $groups[$name]["freq"] += $data["freq"];
        $groups[$name]["menit"] += $data["menit"];
        $groups[$name]["jam"] += $data["jam"];
        $total["freq"] += $data["freq"];
        $total["menit"] += $data["menit"];
        $total["jam"] += $data["jam"];
    }
}

现在您应该将所有数据都保存在 $groups 中,并且可以从中生成 PDF。

foreach ($groups as $name => $group) {
    $pdf->Ln();
    $pdf->Cell(90,5,$name,1,0,'L',0);
    $pdf->Cell(20,5,$group['freq'],1,0,'C',0);
    $pdf->Cell(25,5,$group['menit'],1,0,'C',0);
    $pdf->Cell(25,5,$group['jam'],1,0,'C',0);
}

$pdf->Ln(5);
$pdf->SetFillColor(255, 235, 255);
$pdf->SetFont('times','B',8);
$pdf->Cell(90,5,'TOTAL',1,0,'C',1);
$pdf->Cell(20,5,$total["freq"],1,0,'C',1);
$pdf->Cell(25,5,$total["menit"],1,0,'C',1);
$pdf->Cell(25,5,$total["jam"],1,0,'C',1);

注意:我没有为每列总和使用一个变量,而是使用了一个 $total 映射数组。这使它更具可读性。此外,您应该考虑为脚本的每个部分使用一些函数。

那么主函数就可以这么简单了:

$data = readData();
$groups= calculateSums($data);
$pdf = generatePDF($groups);

【讨论】:

  • 所以在上图中有“EKO PAMBUDI, MURNO, ARDI PRASETYO”和“ABDULLAH MUIS, EKO PAMBUDI, ARDI PRASETYO”。我想根据他们的名字包括两个组,所以如果 EKO PAMBUDI 的频率为 13,它将是 15,因为该组已爆炸逗号。如果我使用你的答案,我可以把它放在哪里?
  • 我可以在查询中使用explode吗?
  • 我已经调整了答案,希望对您有所帮助
  • 谢谢,这很有帮助。但我仍然不明白第二个代码,频率、分钟和小时是正确的。但对于 nama_tmp 我很困惑。关于“现在您应该将所有数据都保存在 $groups 中,并且可以从中生成 PDF。”
  • 我已经修改了第二部分的代码,现在应该清楚了。
猜你喜欢
  • 2015-06-11
  • 1970-01-01
  • 2011-04-23
  • 2020-02-21
  • 2019-07-26
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多