CodeIgniter搜索表单

时间:2010-12-16 13:50:49

标签: php forms codeigniter search

我目前正在学习CodeIgniter,我正在寻找一个由2个表单组成的简单示例,让我们将它们称为a和表单b。表单a有一个名为“LastName”的编辑字段,表单b将显示表中与“LastName”中的值匹配的所有名称列表,如

select first_name, last_name from my_table where last_name = :LastName

我需要这个例子来理解将变量从一个表单和控制器传递到另一个表单的机制。我猜这是使用像$ _POST这样的方法,但网上的例子看起来都不太清楚。

3 个答案:

答案 0 :(得分:1)

所以你会有一个表格......

<form action="/controller/name/" method="post">
    <p>Last Name: <input type="text" name="LastName" /></p>
    <p><input type="submit" value="Submit"/></p>
</form>

然后在您的控制器中(假设您已连接到数据库):

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

}

答案 1 :(得分:1)

您的视图文件夹:application / view / form_a.php,application / view / forma_b.php

您的控制器文件夹:application / controller / controller_name.php

您的模型文件夹:application / model / 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; 
}

答案 2 :(得分:0)

我意识到这个线程已经老了,但我是CodeIgniter的新手并且一直在努力应对类似的挑战。我的挑战是创建一个搜索表单,以查找特定邮政编码中的种植者。这是我的解决方案。它比我想象的更简单,可能会帮助别人。

此代码假定您已连接到数据库并具有标准MVC CI应用程序等。

我在模型和视图中处理了大部分此任务,但我的控制器中确实有这个方法:

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

我有三个视图 - 一个页面(位于views / pages / search.php中)和两个小部件 - 一个用于搜索表单,一个用于搜索结果(位于views / widgets / result中)。

我在搜索结果显示的同一页面上有搜索结果表单。但是,每个部分都包含在自己的视图文件中,我将其放在视图/窗口小部件中。页面视图中此部分的代码为:

    <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>.';
}
?>

我希望能帮助别人!