2010-12-16 19 views
0

私は現在CodeIgniterを学んでいます。私は2つのフォームからなる簡単な例を開発しようとしています。フォームAは、一つの「姓」と呼ばれる編集フィールドおよびフォームbは「姓」の値に一致するテーブル内のすべての名前のリストが表示されます、私はのメカニズムを理解するために、この例が必要CodeIgniterの検索フォーム

select first_name, last_name from my_table where last_name = :LastName

のようなものを持っていますあるフォームとコントローラから別のフォームとコントローラに変数を渡します。私はこれが$ _POSTのようなメソッドを使用していると推測していますが、Web上の例は全く見えません。ですから、フォームを持っているでしょう...

コントローラ内で次に
<form action="/controller/name/" method="post"> 
    <p>Last Name: <input type="text" name="LastName" /></p> 
    <p><input type="submit" value="Submit"/></p> 
</form> 

(ごすでにデータベースに接続されていると仮定して)

+0

フォームは同じページに表示されますか?もしそうなら、私はそれを行うAJAXの方法について考えることができます。 1ページに1つのフォームを表示したい場合は、ユーザーがボタンをクリックして別のページに結果が表示されます.PUだけ使用できます。 plz。どのように動作させるかを指定します。 – Stann

+0

フォームと結果は別々のページにあります。 CodeIgniter – Adrian

+2

を使用する必要があります。次に、CIを使用してフォームを作成する方法について質問しています。フォームは、独自のドキュメントで十分にカバーされています。 – DampeS8N

答えて

1

function index() { 

    // This is the last name from the form 
    $LastName = $this->input->post('LastName'); 

    // Create the query 
    $sql = "SELECT * FROM users WHERE last_name = ?"; 

    // Execute it, replacing the ? with the last name from the form 
    $query = $this->db->query($sql, array($LastName)); 

    // Show results 
    foreach ($query->result() as $row) { 
     echo $row->first_name . "<br />"; 
     echo $row->last_name; 
    } 

} 
+0

火災ありがとう;最低でも、1つまたは2つのコントローラーが必要ですか? – Adrian

+0

それはあなたが何をしようとしているかによって決まります。コントローラーは実際にページです。用語を理解することが重要です。はじめからCIユーザーガイドを読むことは非常に分かりやすいです – fire

+0

2台のコントローラーが必要です1つは入力フォーム(ページ)用で、もう1つは表示ページ用です。あなたの例では、2つは一緒にマージされます。それらを分ける最善の方法は何ですか? – Adrian

1

あなたのビューフォルダ:アプリケーション/ビュー/ form_a .php、application/view/forma_b.php

コントローラフォルダ:application/controller/controller_name.php

あなたのモデルフォルダ:アプリケーション/モデル/ related_model_name.php

あなたcontroller_name.phpファイル:

class Controller_name extends Controller 
{ 

function index() 
{ 
    $this->load->view('form_a'); //this loads the form 
} 

function results() 
{ 
    $name= $this->post->input('last_name'); 
    $this->load->model('related_model_name'); //this is the model to fetch the data 
    $data['names']= $this->related_model_name->searchByLastName($name); 
    if(!empty($data)) 
    $this->load->view('form_b', $data); 
} 


}//eoc 

あなたrelated_model_name.phpファイル

class Related_model_name extends Model 

{ 
function __construct() 
{ 
parent::Model(); 
} 

function searchByLastName($name) 

{ 
$query = $this->db->get_where('table_name', array('last_name'=>$name)); 
if($query->nu_rows() > 0) 
return $query->results(); 
}//eof 

}//eoc 

あなたform_b.phpビューファイル

print_r($ data)を実行すると、データを表示する方法がわかります。 それは多分

foreach ($names as $name) 
{ 
echo $name->name; 
} 
0

のようなもの、私はこのスレッドが古い実現が、私はCodeIgniterのに新しいですし、同様の課題に取り組んできました。私の挑戦は特定の郵便番号の栽培者を見つける検索フォームを作成することです。ここに私の解決策があります。それは私が予想したよりも簡単で、他の誰かを助けるかもしれません。

このコードは、あなたが、あなたのデータベースに接続し、標準のMVC CIのアプリケーションを持っていると仮定など

私がモデルとビューで次の作業のほとんどを扱うが、私は私のコントローラでこのメソッドを持っています。

以下のため--one(ビュー/ページ/ search.phpにあります)1ページ、および2つのウィジェット - 私は3つの景色を眺めることができ

public function result() 
    { 
     $zipcode = $this->input->post('zip_code'); 
     $query = $this->db->get_where('growers', array('zip LIKE' => $zipcode)); 
     return $query->result_array(); 
    } 

:私のモデルでは

public function result() 
    { 
     $zipcode = $this->input->post('zip_code'); 
     $query = $this->db->get_where('growers', array('zip LIKE' => $zipcode)); 
     return $query->result_array(); 
    } 

は、私は次のメソッドを使用しました検索フォームと検索結果(ビュー/ウィジェット/結果にあります)に対応します。

結果が表示されるのと同じページに検索結果フォームがあります。しかし、各セクションはビュー/ウィジェットに配置された独自のビューファイルに含まれています。ページビューでは、このセクションのコードは次のとおりです。

<div class="search" style="margin-top:0px;"> 
      <?php 
       $this->load->view('widgets/search'); 
      ?> 
     </div> 
    </div> 
    <div id="results"> 
     <div id="grower-info"> 
      <?php 
       $this->load->view('widgets/result');    
      ?> 
     </div> 
    </div> 

検索フォームウィジェットは次のとおりです。

<form action="search-results" method="post">   
    <input type="text" maxlength="10" name="zip_code" value="zip code" size="10"> 
    <input type="submit" name="submit" value="SEARCH"> 
</form> 

検索結果ウィジェットは次のとおりです。

<?php 

$results = $this->pages_model->result(); 
foreach ($results as $result) 
{ 
    echo '<h4>'.$result['company'].'</h4>'; 
    echo $result['address_1'] . ' ' . $result['address_2'].'<br>'; 
    echo $result['city'].', ' . $result['state'] . ' ' . $result['zip'].'<br>'; 
    echo 'Phone: ' . $result['office_phone'].'<br>'; 
    echo 'Fax: ' . $result['office_fax'].'<br>'; 
    echo 'Website: <a href="'.$result['website'].'" target="_blank">' . $result['website'].'</a><br>'; 
    echo '<br>'; 
    echo '<hr>';  
} 

if (count($results) < 1) { 
    echo 'No results found. Please try your search again, or try <a href="another-search">another search</a>.'; 
} 
?> 

が、私はそれが誰かを役に立てば幸い!

関連する問題