user7047368 user7047368 - 1 month ago 7
PHP Question

How to get a single data from comma separated array and displaying data of that record using codeigniter php

Hi I am having portfolio table where i am inserting all my portfolio list.While inserting the portfolio list i will inserting tags which are separated by commas.But while fetching data it should in this

Controller:

$data["records2"] = $this->portfolio_model->get_portfolio();
$data['mainpage'] = "portfolio";
$this->load->view('templates/template',$data);


Model:

function get_portfolio()
{
$this->db->Select('portfolio.*');
$this->db->From('portfolio');
$this->db->where(array('portfolio.status'=>1));
$q=$this->db->get();
if($q->num_rows()>0)
{
return $q->result();
}
else
{
return false;
}
}


View:

<div class="materials">
<div class="class453">
<a href="#" class="read_more12">All</a>
</div>
<div class="class455">
<a href="#" class="read_more13">E-Commerce</a>
</div>
<div class="class459">
<a href="#" class="read_more14">Cms</a>
</div>
</div>

<?php
$cnt = 0;
if(isset($records2) && is_array($records2)):?>
<?php foreach ($records2 as $r):?>
<div class="portfolioimages">
<a href="<?php echo $r->website_url;?>" target="_blank"><img src="<?php echo base_url();?>admin/images/portfolio/thumbs/<?php echo $r->image_path;?>" /></a>
</div>
<?php if(($cnt%3) == 0) { echo "<br>"; }
$cnt++; endforeach; endif;?>
</div>


In my database it will be inserting the data in the format:

enter image description here

while fetching data it should get all the data but if we click on CMS only the data for that particular tag should be displayed.
Ex: if we select cms then 1,3,4 id should be displayed because they are cms tags,If we select E-commerce then 1,2,4 id should be displayed.How can be these done.

Answer

Ok just to elaborate a bit more without turning this into a major tutorial, what is being alluded to here is the fact that if you have to store repeat strings separated by commas and you wish to perform a Search on those using sql, then you need to rethink your design.

What you need is a joining table And a Tags Table. So the Tags Table would look like...

tags table
==========
ids     name
1       All
2       CMS
3       E-Commerce

Then your Joining/pivot portfolio_tag table would be

portfolio_tag
=============
portfolio_id        tag_id
1                   2
1                   3
2                   3
3                   2
4                   1

So then you could display all of your tags with their associated id's So if I selected CMS, then that results in the id of 2 from the tags table. Then referencing that from the pivot table I can get all the portfolios ids matching the tag_id = 2.

That is the gist of what you should be heading towards.

It wouldn't hurt to go and do some reading up on pivot tables and joins. I'm not trying to make some throw away comment in regard to this, but there's too much to explain to put in here.