2013-08-06 7 views
0

У меня есть этот код в html для ввода поиска.

<?php echo form_open('bookstore/_searchbook'); ?> 
<table> 
    <tr> 
     <td> 
    <label for="searchid">Search:</label> 
     </td> 
     <td> 
    <input type="text" size="15" name="searchid" /> 
     </td> 
    </tr> 
    <tr> 
     <td> 
    <label for="searchtype">Type:</label> 
     </td> 
     <td> 
    <select> 
     <option value="book_id">Id</option> 
     <option value="book_author">Author</option> 
     <option value="book_name">Title</option> 
    </select> 
     </td> 
    </tr> 
    <tr> 
    <input type="submit" value="Search" /> 
    </tr> 
</table> 
<?php echo form_close(); ?> 

И у меня есть это на мой контроллер,

public function booksearch() 
{ 
    if($_POST['submit']) 
    { 
    $col= $this->input->post('searchtype', TRUE); 
    $val= $this->input->post('searchval', TRUE); 

    $data['book'] = $this->books_model->showbook($col,$val); 
    $this->load->view('showbooks',$data); 
    } 
} 

и это будет моя модель

public function showbook($col, $searchid) 
{ 
     $this->db->select()->from('books')->where(array($col=>$searchid)); 
     $query=$this->db->get(); 
     return $query->first_row('array'); 
} 

Дополнительная информация по моему мнению,

Я это к печати результаты моего поиска.

<table cellpadding='5'> 
<th>Book ID</th> 
<th>Title</th> 
<th>Author</th> 
<th>Released Year</th> 
<th>ISBN</th> 

<?php 
if(isset($books)) : foreach($books as $book) : 
?>  
     <tr> 
     <td><?php echo $book['book_id'] ?></td> 
     <td><?php echo $book['book_name'] ?></td> 
     <td><?php echo $book['book_author'] ?></td> 
     <td><?php echo $book['book_year'] ?></td> 
     <td><?php echo $book['book_isbn'] ?></td> 
     </tr> 
<?php 
    endforeach; 
?> 

<?php 
else : 
?> 
<h5>No records</h5> 
<?php 
endif; 
?> 
</table> 

Это не возвращает ничего, поэтому я вижу только записи. Кто-то направляет меня к тому, что я сделал неправильно.

+0

открытие формы с 'книжного магазина/_searchbook' и ваше имя функции' booksearch' ... является то, что предназначено? –

ответ

0

Поскольку ваша кнопка отправки не имеет атрибута name. Вместо if($_POST['submit']) написать письмо $this->input->post(null)

+0

Глупо мне, забыл название атрибута. мелочи, которые вы не ожидаете быть проблемой :( –

+0

Happie, чтобы помочь! Примите ответ, если это вам помогло.: D –

+0

Я также забыл добавить, $ this-> load -> view ('showbooks', $ data), на моем контроллере, поэтому после обработки он связывает меня со своим просмотром и печатает его .. hmm –

-1

Попробуйте добавить глобальные $ _POST; в верхней части вашей функции. В php все переменные, используемые (объявленные) в функции, будут закрытыми, если вы не укажете их иначе, добавив их в глобальный оператор в этой функции.

public function booksearch() 
{ 
     global $_POST; 

if($_POST['submit']) 
    { 
    $col= $this->input->post('searchtype', TRUE); 
    $val= $this->input->post('searchval', TRUE); 

    return $data['book'] = $this->books_model->showbook($col,$val); 
    } 
} 
+0

Я только что обновил свой пост выше, эта проблема уже позаботилась, у меня просто не было атрибута имени, хотя это может быть другим способом сделать это. В любом случае, если вы не возражаете снова глядя на него. –

1
  • действие вашей формы (вид) является _searchbook в то время как ваша функция контроллера booksearch
  • Ваш отправить вход нужен name атрибут
  • в функции контроллера вы имеете $data['book'] в то время как на ваш взгляд (в foreach loop) вы ссылаетесь на эту переменную как $books
  • Модель: вам нужно выбрать хотя бы что-то; например $this->db->select('*')->from('books')->where(array($col=>$searchid)); вместо $this->db->select()
  • Model: Я думаю, что вам нужно return $query->result_array(); вместо $query->first_row('array')
Смежные вопросы