2016-10-24 4 views
1

こんにちは私はポートフォリオリストを挿入しています。ポートフォリオリストを挿入しています。 commas.Butはこのコンマ区切り配列から単一のデータを取得し、codeigniterを使用してそのレコードのデータを表示する方法

コントローラにそれが必要データをフェッチ中:

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

モデル:

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; 
    } 
} 

ビュー:

<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> 

私のデータベースでは、それは形式のデータを挿入されます。

enter image description here

データをフェッチしている間に、それはすべてのデータを取得する必要がありますが、我々はクリックした場合CMSでは、その特定のタグのデータのみが表示されます。 例:cmsを選択した場合、1,3,4 idはcmsタグであるため表示する必要があります.Eコマースを選択すると、1,2,4のIDを表示する必要があります。

+0

ここにアイデアがあります。コンマで区切ってタグを挿入しないでください。 – Strawberry

+0

次に、データをデータベースに挿入する方法 – user7047368

+0

select * from table_nameどこFIND_IN_SET( 'cms'、tags)> 0 – JYoThI

答えて

0

[OK]をPHP explode機能を使用することができますこれを主要なチュートリアルに変えることなくもう少し詳しく説明しますが、ここで言及されているのは、リピート文字列をコンマで区切って格納し、sqlを使用して検索を実行する場合、デザインを再考する必要があるということです。

必要なものは、結合テーブルとタグテーブルです。 タグテーブルのようになります...

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

次に、あなたの参加/ピボットportfolio_tagテーブルは、私はCMSを選択した場合は、その後、それに関連付けられたIDの そうで、すべてのタグを表示することができそれでは

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

をされるというのIDで結果2をタグテーブルから取得します。 それをピボットテーブルから参照すると、tag_id = 2と一致するすべてのポートフォリオIDを取得できます。

これはあなたが向けるべき要点です。

ピボットテーブルとジョイントについて読んで読んでも問題ありません。私はこれに関していくつかのコメントを捨てようとしているわけではありませんが、ここに入れるのはあまり説明がありません。

+0

ヘッダーに表示される別のテーブルからタグを取得していて、異なるページからポートフォリオを取得できない場合は、すべてのコードが単一のPHPページにあるため、ポートフォリオとタグテーブルの間には何の関係もありません – user7047368

+0

はい、そこはピボットテーブルのためのものです!ポートフォリオとタグの関係を定義するのは、ピボットテーブルです。これは、「関係」という言葉に重点を置いて多対多の関係と呼ばれています。 SQLで結合を使用します。したがって、ポートフォリオを作成/編集するときは、タグを表示し、ポートフォリオに関連するものを選択します。楽しい部分はこれを管理することです...私が示唆したように、これをグーグルで読むことは良い考えです... – TimBrownlaw

1

カンマ区切りのリストにタグを保存することは悪いことです。すべてのタグは常にピボットテーブルを介してメインテーブルに関連付けることができる別のテーブルに格納する必要があります。ポートフォリオは、多くのタグを持つことができますし、DB構造にこのような何かを持っている必要がありますので、タグは、多くのポートフォリオに属することができますように

あなたのケースでは、それはそうです:

ポートフォリオ

id 
title 
description 
image 

タグ

id 
tag 

porfoli o_tag(ピボットテーブル)

portfolio_id 
tag_id 

、あなたの現在の設計を進めたい場合は、あなたは、単にそれがあるとして、レコードを選択してからちょうど手の込んだ

+0

に更新しましたが、特定のタグでデータを選択する方法を教えてください。 – user7047368

+0

これは全く異なる質問です。 – TimBrownlaw

+0

@TimBrownlawその目的のために、特定のタグのデータを取得してそのデータを表示する方法だけを投稿しました – user7047368

関連する問題