⚠ In case you've missed it, we have migrated to our new website, with a brand new forum. For more details about the migration you can read our blog post for website migration. This is an archived forum. ⚠

  •     

profile picture

show grocery crud grid using tab panel



udayasri
  • profile picture
  • Member

Posted 27 July 2012 - 17:57 PM

Hi all,

I'm newbie for grocery crud. I'm having a database table lets say customer_details, it includes customer_name & customer_id etc columns. I'm having another table called purches_details, customer_id is the foriegn key for this table.

I want to create a tab panel (menu) in my view according to the customer_name column in customer_detail table. tabs names should be customer names

& when some one click the relevent customer_name tab the the relevent purches details should show as the grocery crud grid.

Please help me friends, I want it so deeply.

Thanks.

noskov.biz
  • profile picture
  • Member

Posted 28 July 2012 - 06:03 AM

Hi, udayasri![list=1]
[*]Add your data to the function, on the basis of which you will form the menu links. For example,

...
$output = $crud->render();
$output->menu_links = $this->db->select('customer_id, customer_name')->get('your_customers')->result();
...

[*]now at the view you can do something like that:

<ul>
<?php foreach ($menu_links as $link) {?>
<li><?php echo anchor("examples/purchase_details/$link->customer_id", "$link->customer_name");?></li>
<?php }?>
</ul>

[*]then create function purchase_details(), where you will get the needed data, for example,

public function purchase_details($customer)
{
$customer = $this->uri->segment(3); // or 4 if you're using index.php at the url
$crud->set_table('your_purchase_details');
$crud->where('customer_details', $customer);
...
}

[/list]
So, at the view you will have menu links which will send you to the your_project/controller/purchase_details/customer_id and the function purchase_details($customer) will give you info about that customer.

P.S. I wrote these without any testing, so there might be some typos or errors in my examples :ph34r:

udayasri
  • profile picture
  • Member

Posted 28 July 2012 - 16:44 PM

Hi noskov.biz Thank you for your quick reply. Actually I have done something like this...


Here is my controler

[php]function customers(){
//getting customer_id & customer_name from the database
$output->menu_links = $this->db->select('customer_id,customer_name')->get('cutomer_details')->result();


$output->js_files = array();
$output->css_files = array();
$output->output = array();

//load the grocery crud
$this->load->library('grocery_CRUD');
//set the purches details table for grocery_crud
$this->grocery_crud->set_table('purches_details');

foreach($output->menu_links as $row){
$customer_id = $row->company_id;
$this->grocery_crud->where('customer_id',$customer_id);
$outputobjectdata = $this->grocery_crud->render(); }

$output->output = $outputobjectdata->output;
$output->js_files = $outputobjectdata->js_files;
$output->css_files = $outputobjectdata->css_files;

$this->load->view('cutomers',$output); } [/php]


& here is my view

[php]//tab panel
<ul id =tabs >
<?php foreach ($menu_links as $link) {?>
<li class = 'tab'><?php echo "<a href = '#tab".$link->company_id."'>".$link->company_name."</a>"?></li>
<?php }?>
</ul>

[/php]

[html]<div class="container" id =tab1>
<div id="grid">
<?php echo $output?>

[/html]


I wanted to show only purches details revelent to each customer. let's say tabs are tabs are customer1,customer2,customer3. when we click customer1 the grocery crud contains only purches_details relevent to customer1.

If there are 3 customers, & each having separate purches details , accroding to my above cord, grocery_crud where cluse runs only one time. when it's get the first result it will render & show, then others will show as 'no items to show' .

How can I get three different crud results to separate div elements.... :( :( :( :(

udayasri
  • profile picture
  • Member

Posted 30 July 2012 - 03:32 AM

[quote name='noskov.biz' timestamp='1343506266']
Well, I think it is something like this.[list=1]
[*]the controller from grocery CRUD 1.2.3 with CodeIgniter 2.1.2 ([color=#ff0000]! try to use CI 2.1.2 or CI 2.1.0 versions + latest grocery CRUD[/color]):


<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Examples extends CI_Controller { public function __construct()
{
parent::__construct();
$this->load->database();
$this->load->helper('url');
$this->load->library('grocery_crud');
}
public function _example_output($output = null)
{
$this->load->view('example', $output);
} public function index()
{
$this->_example_output( (object) array('output' => '', 'js_files' => array(), 'css_files' => array()));
}
public function customers()
{
$crud = new grocery_crud();
$crud->set_table('customer_details');
$crud->set_subject('Customer Details');
$output = $crud->render();
$output->menu = $this->db->select('customer_id, customer_name')->get('customer_details')->result();
$this->_example_output($output);
} public function purches_details($customer)
{
$company = $this->uri->segment(3);
$crud = new grocery_crud();
$crud->set_table('purches_details');
$crud->set_subject('Purches Details');
$crud->where('customer_id', $customer);
$output = $crud->render();
$output->menu = $this->db->select('customer_id, customer_name')->get('customer_details')->result();
$this->_example_output($output);
}
}

[*]and the view with our customer names links:


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<?php
foreach($css_files as $file): ?>
<link type="text/css" rel="stylesheet" href="<?php echo $file; ?>" />
<?php endforeach; ?>
<?php foreach($js_files as $file): ?>
<script src="<?php echo $file; ?>"></script>
<?php endforeach; ?>
<style type='text/css'>
body
{
font-family: Arial;
font-size: 14px;
}
a {
color: blue;
text-decoration: none;
font-size: 14px;
}
a:hover
{
text-decoration: underline;
}
</style>
</head>
<body>
<div>
<?php echo anchor('examples/customers', 'All Customers');?> :
<?php foreach ($menu as $link) {?>
<?php echo anchor("examples/purches_details/$link->customer_id", "$link->customer_name");?> &middot;
<?php }?>
</div>
<div style='height:20px;'></div>
<div>
<?php echo $output; ?>
</div>
</body>
</html>

[/list]
;)[/quote]

noskov.biz have given me this answer. Credit should go for him :) :) :)