Форма поиска CodeIgniter - PullRequest
       0

Форма поиска CodeIgniter

0 голосов
/ 16 декабря 2010

В настоящее время я изучаю CodeIgniter и хочу разработать простой пример, состоящий из 2 форм, назовем их формами a и b. Форма a имеет одно поле редактирования с именем «LastName», а форма b отображает список всех имен в таблице, соответствующих значению в «LastName», что-то вроде

select first_name, last_name from my_table where last_name = :LastName

Мне нужен этот пример, чтобы понять механизмы передачи переменных из одной формы и контроллера в другую. Я предполагаю, что используется такой метод, как $ _POST, но примеры в Интернете не выглядят очень ясно.

Ответы [ 3 ]

1 голос
/ 17 декабря 2010

Ваша папка просмотра: 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; 
}
1 голос
/ 16 декабря 2010

То есть у вас будет форма ...

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

}
0 голосов
/ 06 марта 2012

Я понимаю, что эта ветка старая, но я новичок в 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>.';
}
?>

Надеюсь, это кому-нибудь поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...