Bangash
Bangash

Reputation: 127

How to group the data under same heading through looping

I am trying to get data from two joined tables,From one table I am collecting list heading and from second joined table i am collecting list data.

Code for Model:

function view_searching_type_items()
{
  $this->db->select("searching_type.searchtype_name, search_type_item.st_item_id_pk, search_type_item.searchtype_itemname");
  $this->db->from('searching_type');
  $this->db->join('search_type_item', 'search_type_item.st_id_fk = searching_type.st_id_pk');
  $query = $this->db->get();
  return $query->result_array(); 
}

Controller:

$url1 = 'http://localhost/pakistanmenu/index.php/Restaurant/ViewSearchingTypeItems';
    $curl_hand = curl_init($url1);
    curl_setopt($curl_hand, CURLOPT_TIMEOUT, 5);
    curl_setopt($curl_hand, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($curl_hand, CURLOPT_RETURNTRANSFER, true);
    $data1 = curl_exec($curl_hand);// json_decode($data)
    curl_close($curl_hand);
    $result['searchingtype'] = (array) json_decode($data1,true);

    $this->load->view('header');
    $this->load->view('index',$result);
    $this->load->view('footer');

View Code:

<?php foreach ($searchingtype as $searchingtyp):?>

 <ul class="list-group checked-list-box">
    <h1 class="page-header leftsidebar-heading"><?php echo $searchingtyp['searchtype_name'];?></h1>

     <li class="list-group-item" data-style="button" style="cursor: pointer;">
         <span class="state-icon glyphicon glyphicon-unchecked">

         </span>

         <?php echo $searchingtyp['searchtype_itemname'];?>

         <input type="checkbox" class="hidden">

     </li>

Kindly check the below image i have shown the output of this code, and also i have draw what output i need thanks, Kindly help me. thanks

enter image description here

Upvotes: 1

Views: 595

Answers (2)

M. Eriksson
M. Eriksson

Reputation: 13635

Just store tha last name and only print it if the new name differs from it. We're also gonna create new lists when that happens so you have different lists per group.

<?php 
// Define our test variable
$lastName = null;

foreach ($searchingtype as $searchingtyp):
?>

    <?php 
    if ($lastName != $searchingtyp['searchtype_name']): 
        // It's not the same name
        if ($lastName != null):
            // Close the previous list (except from the first iteration).
        ?>
            </ul>
        <?php
        endif;
        ?>

     ?>
        <ul class="list-group checked-list-box">
            <li><h1 class="page-header leftsidebar-heading"><?php echo $searchingtyp['searchtype_name'];?></h1></li>
    <?php 
        // Store the current name so we can check again in the next iteration
        $lastName = $searchingtyp['searchtype_name'];
    endif;
    ?>

// The rest of your code.. just move the </ul> after the loop.

<?php endforeach ?>

</ul>

Upvotes: 1

Bernhard
Bernhard

Reputation: 1870

Quick and dirty:

Check if the Title differs from the previously used.

if($title != $lasttitle){
 echo 'title foo';
}

At the End of the Loop:

$lasttitle = title;

Upvotes: 0

Related Questions