Searching, $_POST variable

吃可爱长大的小学妹 提交于 2019-12-13 03:24:37

问题


I have this code block in html for inputting the search.

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

And i have this on my controller,

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

and this would be my model

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

Further info on my view,

I have this to print the results of my search.

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

It returns nothing so all i see is no records. Someone direct me to the thing i did wrong.


回答1:


  • Your form's action (view) is _searchbook while your controller function is booksearch
  • Your submit input needs a name attribute
  • in the controller function you have $data['book'] while in your view (in the foreach loop) you reference that variable as $books
  • Model: you need to select at least something; e.g. $this->db->select('*')->from('books')->where(array($col=>$searchid)); instead of $this->db->select()
  • Model: I think you need return $query->result_array(); instead of $query->first_row('array')



回答2:


Because your submit button has not got any name attribute. Instead of if($_POST['submit']) write $this->input->post(null)




回答3:


Try adding global $_POST; to the top of your function. In php all variables used(declaired) in a function will be private unless you tell it otherwise by adding it to the global statement in the function.

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


来源:https://stackoverflow.com/questions/18081353/searching-post-variable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!