2010-12-16 4 views
0

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

select first_name, last_name from my_table where last_name = :LastName

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

+0

Есть ли формы на той же странице? Если так - я могу думать только об AJAX. Если вы хотите показать 1 форму на 1 странице, а затем нажмите кнопку мыши, и результаты будут отображаться на другой странице - вы можете использовать только PHP. плз. укажите, как вы хотите, чтобы он работал. – Stann 2010-12-16 13:56:05

+0

форма и результат будут на отдельных страницах; он должен использовать CodeIgniter – Adrian 2010-12-16 13:57:39

ответ

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

Ваш вид папки: приложение/просмотр/form_a .php, application/view/forma_b.php

Ваша папка контроллера: приложение/контроллер/имя_контроля.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 и т.д.

Я обрабатывать большую часть этой задачи в модели и представления, но у меня есть этот метод в моем контроллере:

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/страниц/search.php), и два виджета --Один для форма поиска и одна для результатов поиска (находится в представлениях/виджетах/результате).

У меня есть форма поиска на той же странице, что и результаты. Однако каждый раздел содержится в собственном файле представления, который я разместил в представлениях/виджетах.Код этого раздела в представлении страницы: форма

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

Я надеюсь, что кто-то помогает!

Смежные вопросы