Skip to main content

php recursive fucntion to get categories and subcategories

Here is my simple recursive function to create a category subcategory tree of unlimited subcategories.

<select name="parent_cat">
       <option value="0">Root</option>
       <?
          function get_all_sub_cats($parent_cat_id, $level_string)
          {
              $return_str='';
              if(!$level_string)
              {
                  $level_string='';
              }
              $db=new DB();
              $db->open();
              $db->query("select * from categories where parent_id='{$parent_cat_id}'");
              $db->rsset();
              if($db->rs)
              {
                  while($db->rs)
                  {
                      $return_str.="<option value=\"{$db->rs['id']}\" style=\"padding-left:10px\">{$level_string}{$db->rs['name']}</option>";
                      $return_str.=get_all_sub_cats($db->rs['id'], $level_string.'+');
                      $db->rsset();
                  }
              }
              else
              {
                  return false;
              }
              return $return_str;
          }
           print get_all_sub_cats('0', '');
       ?>
      </select>


This is to fit my needs. You can get the logic and build your own accordingly.

Popular posts from this blog

yii, Executing a SQL without calling a Model

yii, Executing a SQL without calling a Model <? $connection = Yii :: app () -> db ; $sql = "SELECT id,username FROM users" ; $command = $connection -> createCommand ( $sql ); $dataReader = $command -> query (); $rows = $dataReader -> readAll (); print_r ( $rows ); ?>

Yii, return to previous url after login or logout

If you want to return to your previous url after login or logout try this : <?php $this -> redirect (Yii :: app () -> request -> urlReferrer ); ?> To set the return url to be the url that was before the login page or registeration page was called you can put following code in views/layouts/main.php file : <?php //this checks id the controller action is not 'login' then it keeps the current url in returnUrl if (CController :: getAction () -> id != 'login' ) { Yii :: app () -> user -> setReturnUrl (Yii :: app () -> request -> getUrl ()); } ?>

Yii2 Gridview bulk action using checkbox column. How to properly create checkbox column in gridview for bulk actions

To add a CheckboxColumn to the  yii\grid\GridView , add it to the  columns  configuration as follows: 'columns'  => [      // ...      [          'class'  =>  'yii\grid\CheckboxColumn' ,          // you may configure additional properties here      ], ] This is the view: <?= Html :: beginForm ([ 'controller/bulk' ], 'post' );?> <?= Html :: dropDownList ( 'action' , '' ,[ '' => 'Mark selected as: ' , 'c' => 'Confirmed' , 'nc' => 'No Confirmed' ],[ 'class' => 'dropdown' ,])?> <?= Html :: submitButton ( 'Send' , [ 'class' => 'btn btn-info' ,]);?> <?= GridView :: widget ([ 'dataProvider' => $dataProvider , 'columns' => [ [ 'class' => 'yii\grid\CheckboxColumn' ], 'id' , ], ]); ?> <?= Html :: endForm...