iLaYa  ツ
iLaYa ツ

Reputation: 3997

How to display category and their sub-category

i have table like this

cat:
----
cat_id    name
---------------
1        cat-1
2        cat-2 


sub-cat:
--------

id    cat_id    name
-------------------------
1       1       sub-cat-1
2       1       sub-cat-2
3       2       sub-cat-3
4       2       sub-cat-4

I need output like using PHP

cat-1
 sub-cat-1
 sub-cat-2
cat-2
 sub-cat-3
 sub-cat-4

and my query is

SELECT * FROM `cat` 
        JOIN `sub-cat`  ON cat.cat_id = sub-cat.cat_id

Upvotes: 3

Views: 1005

Answers (3)

iLaYa  ツ
iLaYa ツ

Reputation: 3997

I have ended up with this code in smarty

{assign var=foo value=''}

{foreach from=$blog_lists key=k item=blog }
          {if $foo neq $blog ->category_id}
              {$blog->category_name}<br />
              {assign var=foo value=$blog->category_id}
          {/if}

          {$blog->subcat_name}<br />

{/foreach}

Upvotes: 1

Ripa Saha
Ripa Saha

Reputation: 2540

use below code

function tree($pid='',$new_ar=array())
{
if($pid!="")
{
    $new_ar1=array();
    $sel="select name from subcat where cat_id=".$pid." order by cat_id";
    $mq=mysql_query($sel);
    while($fe=mysql_fetch_assoc($mq))
    {
        array_push($new_ar1,$fe["name"]);
    }
    return $new_ar1;
}
else
{
    $sel="select name from cat order by name";
    $mq=mysql_query($sel);
    while($fe=mysql_fetch_assoc($mq))
    {
        array_push($new_ar,$fe["name"]);

        $new_ar[$fe["name"]]=array();

        array_push($new_ar[$fe["name"]],tree($fe["name"],$new_ar));

    }
}
//die($sel);
//echo "<pre>";
//print_r($new_ar);
//echo "<pre>";
    return $new_ar;
}

call the function

tree();

Upvotes: 1

Yogesh Suthar
Yogesh Suthar

Reputation: 30488

you can use this code

$sql = mysqli_query("SELECT * FROM `cat` ");
while($row = mysqli_fetch_array($sql))
{
   echo "cat ".$row['name'];
   $sql1 = mysqli_query("SELECT * FROM `sub-cat` where id = ".$row['cat_id']);
   while($row1 = mysqli_fetch_array($sql1))
   {
        echo "sub-cat ".$row1['name'];
   }
}

Upvotes: 1

Related Questions