【问题标题】:Switch Case Looping PHP切换案例循环 PHP
【发布时间】:2017-08-18 08:18:30
【问题描述】:

我很沮丧,我尝试了很多方法,但没有找到我的预期结果。我的表数据库中有这些数据:

|       PartID         |   HasilProduksi  |QtyProduksi|
|----------------------|------------------|-----------|
|  BLAP-FG152-PF-KGX   |   Repair         |    1      |
|  AWDX-FG002-HN-KGX   |   Reject         |   90      |
|  HMXX-FG022-EG-KGX   |   Good           |  100      |
|  ECJX-FG018-AV-MCM   |   Good           |  111      |

我想创建带有结果的报告:

|                      |    ACTUAL            |
|       PartID         | ---------------------|
|                      |Good | Repair | Reject|
|----------------------|-----|--------|-------|
|  BLAP-FG152-PF-KGX   |  0  |    1   |   0   |
|  AWDX-FG002-HN-KGX   |  0  |    0   |   90  |
|  HMXX-FG022-EG-KGX   | 100 |    0   |   0   |
|  ECJX-FG018-AV-MCM   | 111 |    0   |   0   |

我正在使用 switch case 方法,但结果与我的预期结果不同。这是我的代码:

$sqlc = "SELECT * FROM $db_dthp WHERE IdBukti='$id_bukti'";
$qc = mysqli_query($conn, $sqlc);
$c = 0; $good=0; $reject=0; $repair=0;
while ($rc = mysqli_fetch_assoc($qc)) {
    switch ($rc['HasilProduksi']) {
      case 'Good':

        $good += (int) $rc['QtyProduksi'];
        $datagood += (int) $rc['QtyProduksi'];
        break;
      case 'Reject':
        $reject += (int) $rc['QtyProduksi'];
        $datareject += (int) $rc['QtyProduksi'];
        break;
      case 'Repair':
        $repair += (int) $rc['QtyProduksi'];
        $datarepair += (int) $rc['QtyProduksi'];
        break;
      default:
        break;
    }
    $c++;
  }
$res['result'][$i]['data'][$b]['hp'][0]['good'] = number_format($good,0,'.','.'); 
$res['result'][$i]['data'][$b]['hp'][0]['reject'] = number_format($reject,0,'.','.'); 
$res['result'][$i]['data'][$b]['hp'][0]['repair'] = number_format($repair,0,'.','.'); 

你能帮帮我吗?

【问题讨论】:

    标签: php mysql while-loop switch-statement


    【解决方案1】:

    如果您使用这个其他查询,您将已经拥有您的数据并且您不需要在 php.ini 中进行切换。您将在查询中执行此案例:

    $sqlc="SELECT PartID,
        CASE 
            WHEN HasilProduksi='Good' THEN QtyProduksi ELSE 0
        END as Good,
        CASE 
            WHEN HasilProduksi='Repair' THEN QtyProduksi ELSE 0
        END as Repair,
        CASE 
            WHEN HasilProduksi='Reject' THEN QtyProduksi ELSE 0
        END as Reject
    FROM $db_dthp WHERE IdBukti='$id_bukti';"
    

    【讨论】:

    • 谢谢你很有帮助
    【解决方案2】:

    如果这样做,你可以使用 mysql

    SELECT PartID,IF(HasilProduksi ='Good',QtyProduksi,0)as 
    GOOD,IF(HasilProduksi ='Repair',QtyProduksi,0)as REPAIR,
    IF(HasilProduksi ='Reject',QtyProduksi,0)as REJECT FROM 
    $db_dthp group by PartID
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多