如何从2个表codeigniter中获得乘法值?

时间:2019-04-02 09:15:40

标签: php sql codeigniter

我在数据库中有2个表,其中表1有11个字段,表2有10个字段。我尝试将它们两者相乘并显示到HTML表格中, 。但是我收到了错误消息

  

“不能将stdClass类型的对象用作数组”。

    Table 1. |id| |kota_kab| |ipm| |pddmiskin| |ginirasio| |rasio_k| |indks_pend| |indks_kes| |ppk| |tpt| |tpak|

    Table 2. |idno| |maxK1| |minK2| |minK3| |minK4| |minK5| |maxK6| |maxK7| |minK8| |maxK9|

这是我的模特

class Model_data extends CI_model {
    function tampildata(){
        $hasil=$this->db->query("SELECT * FROM datakota");
        return $hasil->result();
    }
    function maxmin(){
        $sql=$this->db->query("SELECT maxK1, minK2, minK3, minK4, minK5, maxK6, maxK7, minK8, maxK9 FROM maxmin");
        return $sql->result();
    }
    function coba(){
        $sql = $this->tampildata();
        $sql2 = $this->maxmin();
        foreach ($sql as $key => $isidata) {
            $hasil=array(
                'id' => $isidata->id,
                'kota_kab' => $isidata->kota_kab,
                'ipm' => $isidata->ipm/$sql2[$key]['maxK1'],
                'pddmiskin' => $isidata->pddmiskin/$sql2[$key]['minK2'],
                'ginirasio' => $isidata->ginirasio/$sql2[$key]['minK3'],
                'rasio_k' => $isidata->rasio_k/$sql2[$key]['minK4'],
                'indks_pend' => $isidata->indks_pend/$sql2[$key]['minK5'],
                'indks_kes' => $isidata->indks_kes/$sql2[$key]['maxK6'],
                'ppk' => $isidata->ppk/$sql2[$key]['maxK7'],
                'tpt' => $isidata->tpt/$sql2[$key]['minK8'],
                'tpak' => $isidata->tpak/$sql2[$key]['maxK9'],
            );
        }
        return $hasil;
    }
}

查看

<?php
    $no = 1;
    foreach($data as $hasil){
?>
    <tr>
        <td><?php echo $no++ ?></td>
        <td><?php echo $hasil->kota_kab ?></td>
        <td><?php echo $hasil->ipm ?></td>
        <td><?php echo $hasil->pddmiskin ?></td>
        <td><?php echo $hasil->ginirasio ?></td>
        <td><?php echo $hasil->rasio_k ?></td>
        <td><?php echo $hasil->indks_pend ?></td>
        <td><?php echo $hasil->indks_kes ?></td>
        <td><?php echo $hasil->ppk ?></td>
        <td><?php echo $hasil->tpt ?></td>
        <td><?php echo $hasil->tpak ?></td>
    </tr>
<?php } ?>

2 个答案:

答案 0 :(得分:0)

您正在通过result()获取对象,并且将foreach $isidata数据视为对象,然后为什么不获取$sql2数据。您可以尝试:

foreach ($sql as $key => $isidata) {
    $hasil=array(
        'id' => $isidata->id,
        'kota_kab' => $isidata->kota_kab,
        'ipm' => $isidata->ipm/$sql2[$key]->maxK1,
        'pddmiskin' => $isidata->pddmiskin/$sql2[$key]->minK2,
        'ginirasio' => $isidata->ginirasio/$sql2[$key]->minK3,
        'rasio_k' => $isidata->rasio_k/$sql2[$key]->minK4,
        'indks_pend' => $isidata->indks_pend/$sql2[$key]->minK5,
        'indks_kes' => $isidata->indks_kes/$sql2[$key]->maxK6,
        'ppk' => $isidata->ppk/$sql2[$key]->maxK7,
        'tpt' => $isidata->tpt/$sql2[$key]->minK8,
        'tpak' => $isidata->tpak/$sql2[$key]->maxK9,
    );
}

答案 1 :(得分:0)

尝试一下

function coba(){
    $sql = $this->tampildata();
    $sql2 = $this->maxmin();
    $result = array_merge($sql, $sql2);
    foreach ($result as $key => $isidata) {
      $hasil=array(
        'id' => $isidata->id,
        'kota_kab' => $isidata->kota_kab,
        'ipm' => $isidata->ipm/$isidata->maxK1 //Do this
       );
    }

注意:-,但使执行数学运算的列的数量应相同