如何自动循环每个组(类别)

时间:2015-05-08 12:35:14

标签: php mysql loops

hy伙伴,我想自动循环..但我不知道我错了可以放错或错误循环?

我的数据库

tabel:kt_barang

    kd_kategori | nama_kategori
    1           | A
    2           | B
    3           | C

tabel:t_barang

kd_barang  | kategori 
11         | 1
12         | 1
13         | 2
14         | 3
15         | 3
16         | 3

查询表

CREATE TABLE kt_barang
    (`kd_kategori` int, `nama_kategori` varchar(9))
;  
INSERT INTO kt_barang
    (`kd_kategori`, `nama_kategori`)
VALUES
    (1, ' A '),
    (2, ' B '),
    (3, ' C ');

    CREATE TABLE t_barang
    (`kd_barang` int, `kategori` int)
;  
INSERT INTO t_barang
    (`kd_barang`, `pnaik`)
VALUES
    ('11', 1),
    ('12', 1),
    ('13', 2),
    ('14', 3),
    ('15', 3),
    ('16', 3)
;

我的代码

$arr=array();
$qw=mysql_query("select * from kt_barang",$con);
    while($h=mysql_fetch_array($qw)){
          $arr[]=$h['kd_kategori'];
    }
$n = 0;
$c = count($arr);

while ($n < $c) {
   $a = $arr[$n];

   echo "kategori :".$a ."<br>";

   $q=mysql_query("select * from t_barang where kategori='$a'",$con);


while($h=mysql_fetch_array($q)){
    $daftar.='
    <tr>
    <td>'.$h['kd_barang'].'</td>';
    $daftar.='
    </tr>
    ';
}

   $n++;
}


?>

        <table class="table table-striped table-hover table-bordered" border="1">
          <thead>
          <tr>
            <th style="text-align:center;" width="100">KODE</th>
          </tr>
          </thead>
          <tbody>
          <?php echo $daftar;?>
          </tbody>
        </table>

输出现在仍然像这样 桌子还是一个..

kategori 1
kategori 2
kategori 3
---------------
    Kode       | 
    11         | 
    12         | 
    13         | 
    14         | 
    15         | 
    16         | 
---------------

但我想要这个输出伙伴.. 我希望表格显示三,因为kt_barang有3,

kategori 1
---------------
    Kode       | 
    11         | 
    12         | 
---------------

kategori 2
---------------
    Kode       | 
    13         | 
---------------

kategori 3
---------------
    Kode       | 
    14         | 
    15         | 
    16         | 
---------------
可能我错了,或者错误的循环?我不知道..你知道怎么解决吗?非常感谢

2 个答案:

答案 0 :(得分:0)

可以使用一个查询

完成
$q=mysql_query("select a.kd_kategori,a.nama_kategori, b.kd_barang from kt_barang as a, t_barang as b where a.kd_kategori = b.kategori";);

答案 1 :(得分:0)

我不确定你的具体问题和逻辑是什么。但只是猜猜什么是100%的错误。您正在将echo$daftar.='混合。你应该选择一个。我相信$daftar.='是更好的伎俩。如此。

while ($n < $c) {
   $a = $arr[$n];

    $daftar.= "kategori :".$a ."<br>";

   $q=mysql_query("select * from t_barang where kategori='$a'",$con);


while($h=mysql_fetch_array($q)){
    $no++;
    $daftar.='
    <tr>
    <td style="text-align:center;">'.$h['kategori'].'</td>
    <td>'.$h['kd_barang'].'</td>
    <td>'.$h['nama_barang'].'</td>';

    $daftar.='
    </tr>
    ';

}

   $n++;
}

    $daftar.="<br><br><br>";