コードイグナイター 検索機能

検索の機能を作ろう

コントローラとビューを

フォームヘルパーを利用して作りこんでいきます。

 

【必要な知識】

・GETの理解

・テキストエリアの理解

・中身が空の時にどうするか?

・値の渡し方

・INNER JOIN(SQL文)

・配列でViewに渡す

 

フォームを作る時に、考えておくこと

フォームを作る時に、考えておくことは、以下の事です。

 

■Controller

/controller/welcome_message.php

 


<?php echo form_open('search', array('method' => 'get')); ?>
<div class="search_box">
<div class="comment_box02" id="com_b">
<?php echo form_error('search_word'); ?>
<p class="comment02a_p">
<?php
$search_data = array(
'type'=>'text',
'name'=>'search_word',
'placeholder'=>'塾名を検索'
//'required'=>'required'
);
echo form_input($search_data);
?>
</p>
</div><!--comment_box end-->

<div class="comment_submit02">
<input id="comment_submit" type="submit" value="検索する">
</div><!--comment_submit02 -->


</div><!--search_box end-->

 

■解説

get を使って、コントローラsearchに飛ばす

search_wordという名前で、Viewに入力された文字列を渡します。

 

 

/controller/Search.php

<?php

class Search extends CI_Controller {

public function __construct(){
parent::__construct();
$this->load->database();
}

public function index($param=null){

//塾情報の取得
$this->load->model('comment_model');
$this->load->model('zyuku_model');//表示のスクリプトが書いてある
$this->load->model('zyuku_input_model');

$this->load->helper(array('form','url'));
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<p class="red">', '</p>');

if($keyword==''){
//文字列を取得してSQLを投げる
$sql = $this->db->query("
SELECT * FROM zyuku_table
INNER JOIN zyuku_kyositu_table
ON zyuku_table.room_id=zyuku_kyositu_table.room_id

INNER JOIN kyositu_name_table
ON zyuku_kyositu_table.room_id=kyositu_name_table.room_id
INNER JOIN lesson_table
ON zyuku_kyositu_table.lesson_id=lesson_table.lesson_id
");

$data['search_key']=$sql->result_array();
$this->load->view('/search/page_template',$data);
}else{

//WHERE zyuku_table.school_names='$keyword'
$sql = $this->db->query("
SELECT DISTINCT id,school_id,room_names,school_names,kyositu_name_table.room_id FROM zyuku_table

INNER JOIN zyuku_kyositu_table
ON zyuku_table.room_id=zyuku_kyositu_table.room_id
INNER JOIN kyositu_name_table
ON zyuku_kyositu_table.room_id=kyositu_name_table.room_id
WHERE school_names LIKE '$keyword%'
");

//配列の書き方が重要だったみたい!!
$data['search_key']=$sql->result_array();
$this->load->view('/search/page_template',$data);
}
}
}

 

■解説

トップページから検索ワードを「getで受取る」。

$keywordが空だった場合と、文字が入っていた場合とでSQL文を分ける。

 

・空の場合はすべて表示させる

・キーワードがある場合は、曖昧検索をする

 

■文字が空の時は

全文を取ってくる

 

 

■はまった部分

SELECT DISTINCT id,school_id,room_names,school_names,kyositu_name_table.room_id FROM zyuku_table
INNER JOIN zyuku_kyositu_table
ON zyuku_table.room_id=zyuku_kyositu_table.room_id

INNER JOIN kyositu_name_table
ON zyuku_kyositu_table.room_id=kyositu_name_table.room_id
WHERE school_names LIKE '$keyword%'

 

曖昧検索の部分がむずかしかった。

 

■Views

/search/page_template.php

<?php
if(!empty($search_key)){ //配列に値が入っていたら?>
<table class="table3">
<tbody>
<tr height="50">
<td bgcolor="#56B5A2">id</td>
<td bgcolor="#56B5A2">塾名</td>
<td bgcolor="#56B5A2">教室id</td>
<td bgcolor="#56B5A2">教室名</td>
</tr>
<?php
foreach($search_key as $zyuku_item): ?>
<tr height="50">
<td><?php echo $zyuku_item['id']; ?></td>
<td><?php echo $zyuku_item['school_names']; ?></td>
<td><?php echo $zyuku_item['room_id']; ?></td>
<td><?php echo $zyuku_item['room_names']; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php }else{
//配列に値が入っていない場合
echo '検索結果がありません。登録されていません';
}?>
<p>&nbsp;</p>

 

これで表示ができます。

 

色々とはまりましたが、一つ一つ検索しながら、作りこむ事が大事ですね。

参照を参考にしてみてください。

 

参照

【参照】

・php get送信について考察する

・フォームヘルパーでの、getの使い方

・ページネーションと検索を同時にやってみた

・CodeIgniterの余計なお世話

・CodeIgniter 3 URIによるコントローラ呼び出しの分岐

・inputタグとtextareaタグでのvalueの渡し方について

・&submit=検索するを消すには?

・検索ロジックについて

・検索エンジンってなに?

・検索SQLで、検索欄が空欄のとき、全検索にする

 

いつでも、お気軽にご相談くださいませ!

 

 

 

コードイグナイターの勉強方法

 

 

この記事を読んだ人は、こんな記事も読んでいます

 

SEO対策の基本 外部要因とは?

SEO対策の基本的である、外部要因とは何か?

SEO対策をするなら絶対に知っておきたい、基本知識です。

 

売れるサイトを作るのに知って起きたい知識

サーチエンジンマーケティングという言葉をご存知でしょうか?

ホームページで商品やサービスを売る時に知っておきたいマーケティング

についてご紹介いたします。

seo対策をするメリットとは

SEO対策をする5つのメリットとは?

なぜ上位表示させることが大事なのか?なぜSEO対策をする必要があるのか

についてご紹介させていただきます。

 

内部要因とは

SEO対策の内部要因とは?

上位表示させるためには、内部要因について知っておくことも大事です。

キーワードを上位表示させるために必要なのは、ソースコードを最適化することです

内部要因の対策について知りたい方はこちらへ

 

キーワード対策をするまえに

キーワード対策をする前に

そのキーワード対策。ちょっと待ってください。

そのまま対策をすると、必ずお金を損してしまいます。個人事業主や中小企業は

そんな大きなキーワードで対策をしてはいけません。

広告費用が高くなる理由とは

広告費用が高くなる本当の理由とは?

売れないサイトに集めていませんか?広告費用がかかるわりには

お問い合わせが少ない・・・と感じる方は多いはずです。

購入率の悪いサイトに集客をしている可能性があります。

 

 

 

 

【SEO対策・web広告・webコンサルティングのプラスワーク対応エリアについて】

プラスワークでは、東京、神奈川、千葉、埼玉を中心に全国でwebコンサルティング、SEO対策、ホームページの更新、ホームページのリニューアル運営代行をしております。売上アップをお考えならお気軽にご相談ください。

 

【SEO対策・web広告・webコンサルティングのプラスワーク 対応地域】

北海道 [ 北海道 ]

東北  [ 青森 | 岩手 | 山形 | 福島 | 秋田 | 宮城 ]

関東  [ 東京 | 埼玉 | 千葉 | 茨城 | 栃木 | 群馬 | 神奈川 ]

甲信越 [ 山梨 | 長野 | 新潟 ]

北陸  [ 石川 | 福井 | 富山 ]

東海  [ 愛知 | 静岡 | 岐阜 | 三重 ]

近畿  [ 大阪 | 兵庫 | 京都 | 滋賀 | 奈良 | 和歌山 ]

中国  [ 島根 | 山口 |鳥取 | 広島 | 岡山 ]

四国  [ 徳島 | 香川 | 愛媛 | 高知 ]

九州  [ 福岡 | 佐賀 | 長崎 | 熊本 | 大分 | 宮崎 | 鹿児島 ]

プラスワークでは全国でSEO対策、ホームページ更新、制作をしております。中小企業専門SEO対策・ホームページ更新制作会社、ダイレクト レスポンス マーケティング、ウェブ マーケティング、マーケティング 分析、口コミのよいSEO対策会社をお探しならプラスワークにお任せくださいませ。

 

 

【コンテンツ】

トップへ

更新レスキュー

料金について

制作実績

お客様の声

よくある質問

会社概要

お問い合わせ

【更新レスキュー】

ライトコース

ゴールドコース

プラチナコース

 

【その他】

ニュース

メルマガ登録

特別資料プレゼント

相互リンク募集中

【課題から探す】

ホームページの課題

SEO対策とは

SEO対策がダメな理由

上位表示されない理由

相互リンクとは

順位が落ちてしまう原因

 

 

フェイスブック  ツイッター