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>

它什么也不返回,所以我看到的只是没有记录。有人将我引向我做错的事情。

4

3 回答 3

1
  • 您的表单的操作(视图)是_searchbook您的控制器功能是booksearch
  • 您的提交输入需要一个name属性
  • $data['book']在您的视图中(在 foreach 循环中)您拥有的控制器功能中,您将该变量引用为$books
  • 型号:您至少需要选择一些东西;例如$this->db->select('*')->from('books')->where(array($col=>$searchid));,而不是 $this->db->select()
  • 型号:我认为你需要return $query->result_array();代替$query->first_row('array')
于 2013-08-06T14:19:48.607 回答
0

因为您的提交按钮没有任何name属性。而不是if($_POST['submit'])$this->input->post(null)

于 2013-08-06T13:19:03.077 回答
-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);
    }
}
于 2013-08-06T13:19:54.483 回答