我正在使用 PHP 8.2.12 开发一个旧的 Codeigniter 3.1.9 网站。我的问题是,是否可以将数据库中的搜索结果分成每页 20 个结果加上 2 个标题行,以使用 CI 分页编译整个页面?。
我的数据库中共有 58 条食谱记录,位于名为“recipe”的表中。在这个表中我有 14 个字段。不过,目前我的搜索中只包含 4 个。它们是 id、名称、类别和子类别。
我遇到的问题是,无论搜索什么,都没有结果行限制搜索结果的长度。因此,假设有人搜索像“菜谱”这样通用的内容,搜索将返回每个菜谱记录。这就是我想要的,但我更希望搜索能够处理这个问题,而不是一次显示所有 58 条记录。
所以,这让我想到了我的问题:如何让我的搜索结果将结果输出到一次最多包含 19 个结果行的容器中,并且能够逐页查看其余结果?
我已经在我的管理部分使用 CI 的分页来制作食谱活页簿。然而,这是根据每个食谱的所有字段设置的。
我对 PHP 还很陌生,这个项目留给我去弄清楚。我只想说,试图破译这个怪物般的网站是一个相当大的挑战。从 Codeigniter 1.83 开始我就一直坚持下去。请善待我,帮助我渡过难关。
此外,您可能可以看出,我最初并不是为这个网站编写代码的。 所以,我必须对几乎所有东西进行逆向工程。我将提供您可能需要的更多文件。我只是不想将我的帖子延长得比现在更长。
话虽如此,这里是您可能需要的一些代码:
Recipe.php 控制器(用于翻书和搜索)
function flipbook(){
$this->require_login();
$this->load->library('pagination');
$config['base_url'] = site_url('recipe/flipbook');
$config['total_rows'] = $this->recipe_model->num_rows();
$config['uri_segment'] = '3';
$config['per_page'] = 1;
$config['num_links'] = 9; // You will see 10 numerical link buttons in pagination.
$config['display_pages'] = TRUE;
$config['full_tag_open'] = '<div id="pagination">';
$config['full_tag_close'] = '</div>';
$this->pagination->initialize($config);
$recipe = $this->recipe_model->read_records($config['per_page'], $this->uri->segment(3))->row_array();
$data = array(
'title' => "Shirley's Recipes:".$recipe['name'],
'columns' => array('toc', 'admin/page/recipe_flipbook'),
'recipe' => $recipe,
'updated' => $this->format_date($recipe['updated'])
);
$this->load->view('templates/main', $data);
}
function search(){
if($this->input->method() === 'post'){
$search = $this->input->post('query'); //modify here:
//$results = $this->recipe_model->search($search);
$page = $this->uri->segment(3);
$perPage = 19;
$this->load->library('pagination');
$config['base_url'] = site_url('recipe/search');
$config['total_rows'] = $this->recipe_model->num_rows();
$config['uri_segment'] = '3';
$config['per_page'] = 1;
$config['num_links'] = 4; // You will see 10 numerical link buttons in pagination.
$config['display_pages'] = TRUE;
$config['full_tag_open'] = '<div id="pagination" class="grid-item3">';
$config['full_tag_close'] = '</div>';
$this->pagination->initialize($config);
$results = $this->recipe_model->search($search, $page, $perPage);
$data = array(
'title' => "Shirley's Recipes:Search Results",
'columns' => array('toc', 'public/page/search_results'),
'recipes' => $results, // $results is being renamed $recipes. I don't really know why though yet...
'search' => $search
);
$this->load->view('templates/main', $data);
}
else{
redirect('recipe');
}
}
Recipe_model 模型
function search($search, $currentPage = 1, $perPage = 19){
$offset = ($currentPage = 1) * $perPage;
$terms = explode(' ', $search);
$match = " ";
foreach($terms as $term){
$match .= $term;
}
$querystr = "SELECT id, name, category, subcategory, keywords, MATCH(name, category, subcategory, keywords) AGAINST('".$match."') as score FROM recipe WHERE MATCH(name, category, subcategory, keywords) AGAINST('".$match."') ORDER BY name LIMIT ".$perPage." OFFSET ".$offset.";";
$q = $this->db->query($querystr);
return $q->result();
}
search_result.php 查看
<link rel="stylesheet" type="text/css" href="/assets/css/public/page/searchresults.css" media="screen" />
<div id="sitecontent" class="grid-item2 grid-container">
<?php
if($admin){
$this->load->view('admin/nav/notesnav');
}
?>
<div id="contents" class="grid-item1 grid-container scrollbar <?php if($admin){echo 'grid-item2';} ?>">
<div id="spiral" class="grid-item1">
<img class="spiral" src="/assets/img/lines/spiral1trans.png"/>
</div>
<div id="searchresults" class="grid-item2 grid-container">
<h1>Search Results</h1>
<div id="results" class="grid-item1 grid-container">
<div id="resultsheading" class="grid-item1 heading">Your Search Results for:</div><div id="searchterm" class="grid-item"><?= $search ?></div>
<div id="numheading" class="grid-item3 heading">#:</div>
<div id="resultlistheading" class="grid-item4 heading">Results:</div>
<div id="categoryheading" class="grid-item5 heading">Category:</div>
<div id="subcategoryheading" class="grid-item6 heading">Subcategory</div>
<?php
if(!empty($recipes)):
foreach ($recipes as $key => $recipe):
?>
<div class="grid-item num"><?= $key + 1 ?></div>
<div class="grid-item result"><a href="/recipe/<?= $recipe->id ?>"><?= $recipe->name ?></a></div>
<div class="grid-item result"><?= $recipe->category ?></div>
<div class="grid-item result"><?= $recipe->subcategory ?></div>
<?php endforeach; ?>
<?php else: ?>
<div class="grid-item no-result">No matching recipes</div>
<?php endif; ?>
</div>
<?php echo $this->pagination->create_links(); ?>
</div>
</div>
<div id="updated" class="grid-item2">Updated 05/27/2023 @ 2:34 EDT</div>
</div>
recipe_flipbook.php 查看
<link rel="stylesheet" type="text/css" href="/assets/css/admin/core/admin.css" media="screen" />
<link rel="stylesheet" type="text/css" href="/assets/css/admin/page/flipbook.css" media="screen" />
<link rel="stylesheet" type="text/css" href="/assets/css/admin/core/pagination.css" />
<div id="sitecontent" class="grid-item2 grid-container">
<?php $this->load->view('admin/nav/notesnav'); ?>
<div id="contents" class="grid-item2 grid-container scrollbar">
<div id="spiral" class="grid-item1">
<img class="spiral" src="/assets/img/lines/spiral1trans.png"/>
</div>
<div id="recipe-flipbook" class="grid-item2 grid-container">
<div id="title" class="box grid-item1">
<h1><?=$recipe['name']; ?></h1>
<h3><?=$recipe['time']; ?></h3>
</div>
<div id="ingredients" class="box grid-item2">
<h2>Ingredients:</h2>
<?php
if(isset($recipe['ingredients']) && $recipe['ingredients'] != ''){
echo $this->mkdn->translate($recipe['ingredients']);
}
else{
echo '<br><br><br><br><br><br><br><br><br><br><br>';
}
?>
</div>
<div id="equipment" class="box grid-item3">
<h2>Equipment:</h2>
<?php
if(isset($recipe['equipment']) && $recipe['equipment'] != ''){
echo $this->mkdn->translate($recipe['equipment']);
}
else{
echo '<br><br><br><br><br><br><br><br><br><br><br>';
}
?>
</div>
<div id="prepreparation" class="box grid-item4">
<h2>Pre-Preparation:</h2>
<?php
if(isset($recipe['prepreparation']) && $recipe['prepreparation'] != ''){
echo $this->mkdn->translate($recipe['prepreparation']);
}
else{
echo '<br><br><br><br><br><br><br><br><br><br><br>';
}
?>
</div>
<div id="directions" class="box grid-item5">
<h2>Directions:</h2>
<?php
if(isset($recipe['directions']) && $recipe['directions'] != ''){
echo $this->mkdn->translate($recipe['directions']);
}
else{
echo '<br><br><br><br><br><br><br><br><br><br><br>';
}
?>
</div>
</div>
<script type="text/javascript" src="/assets/js/confirmdelete.js"></script>
</br>
</div>
<?php
echo $this->pagination->create_links();
if(isset($updated)){
echo '<div id="updated" class="grid-item4 noprint">Updated '.$updated.'</div>';
}
if($admin){
echo '<div id="optionbuttons" class="grid-tem5 noprint">';
echo anchor('recipe/edit/'.$recipe['id'], img(array('src'=>'./assets/img/icons/edit.png', 'alt'=>'Edit', 'title'=>'Edit')));
echo ' ';
echo '<a href="javascript:confirmdelete(\'Delete recipe?\',\''.base_url().'recipe/delete/'.$recipe['id'].'\')">'.img(array('src'=>'./assets/img/icons/delete.png', 'alt'=>'Delete', 'title'=>'Delete')).'</a>';
echo '</div>';
}
?>
</div>
Pagination.php 库
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/*
* Pagination Class
* @package CodeIgniter
* @subpackage Libraries
* @category Pagination
* @author EllisLab Dev Team
* @link https://codeigniter.com/user_guide/libraries/pagination.html
*/
class CI_Pagination{
/*
* Base URL
* The page that we're linking to
* @var string
*/
protected $base_url = '';
/*
* Prefix
* @var string
*/
protected $prefix = '';
/*
* Suffix
* @var string
*/
protected $suffix = '';
/*
* Total number of items
* @var int
*/
protected $total_rows = 0;
/*
* Number of links to show
* Relates to "digit" type links shown before/after the currently viewed page.
* @var int
*/
protected $num_links = 2;
/*
* Items per page
* @var int
*/
public $per_page = 10;
/*
* Current page
* @var int
*/
public $cur_page = 0;
/*
* Use page numbers flag
* Whether to use actual page numbers instead of an offset
* @var bool
*/
protected $use_page_numbers = FALSE;
/*
* First link
* @var string
*/
protected $first_link = '‹ First';
/*
* Next link
* @var string
*/
protected $next_link = '>';
/*
* Previous link
* @var string
*/
protected $prev_link = '<';
/*
* Last link
* @var string
*/
protected $last_link = 'Last ›';
/*
* URI Segment
* @var int
*/
protected $uri_segment = 0;
/*
* Full tag open
* @var string
*/
protected $full_tag_open = '';
/*
* Full tag close
* @var string
*/
protected $full_tag_close = '';
/*
* First tag open
* @var string
*/
protected $first_tag_open = '';
/*
* First tag close
* @var string
*/
protected $first_tag_close = '';
/*
* Last tag open
* @var string
*/
protected $last_tag_open = '';
/*
* Last tag close
* @var string
*/
protected $last_tag_close = '';
/*
* First URL
* An alternative URL for the first page
* @var string
*/
protected $first_url = '';
/*
* Current tag open
* @var string
*/
protected $cur_tag_open = '<strong>';
/*
* Current tag close
* @var string
*/
protected $cur_tag_close = '</strong>';
/*
* Next tag open
* @var string
*/
protected $next_tag_open = '';
/*
* Next tag close
* @var string
*/
protected $next_tag_close = '';
/*
* Previous tag open
* @var string
*/
protected $prev_tag_open = '';
/*
* Previous tag close
* @var string
*/
protected $prev_tag_close = '';
/*
* Number tag open
* @var string
*/
protected $num_tag_open = '';
/*
* Number tag close
* @var string
*/
protected $num_tag_close = '';
/*
* Page query string flag
* @var bool
*/
protected $page_query_string = FALSE;
/*
* Query string segment
* @var string
*/
protected $query_string_segment = 'per_page';
/*
* Display pages flag
* @var bool
*/
protected $display_pages = TRUE;
/*
* Attributes
* @var string
*/
protected $_attributes = '';
/*
* Link types
* "rel" attribute
* @see CI_Pagination::_attr_rel()
* @var array
*/
protected $_link_types = array();
/*
* Reuse query string flag
* @var bool
*/
protected $reuse_query_string = FALSE;
/*
* Use global URL suffix flag
* @var bool
*/
protected $use_global_url_suffix = FALSE;
/*
* Data page attribute
* @var string
*/
protected $data_page_attr = 'data-ci-pagination-page';
/*
* CI Singleton
* @var object
*/
protected $CI;
/*
* Constructor
* @param array $params Initialization parameters
* @return void
*/
public function __construct($params = array()){
$this->CI =& get_instance();
$this->CI->load->language('pagination');
foreach(array('first_link', 'next_link', 'prev_link', 'last_link') as $key){
if(($val = $this->CI->lang->line('pagination_'.$key)) !== FALSE){
$this->$key = $val;
}
}
/*
* _parse_attributes(), called by initialize(), needs to run at least once in order to enable "rel" attributes,
* and this triggers it.
*/
isset($params['attributes']) OR $params['attributes'] = array();
$this->initialize($params);
log_message('info', 'Pagination Class Initialized');
}
/*
* Initialize Preferences
* @param array $params Initialization parameters
* @return CI_Pagination
*/
public function initialize(array $params = array()){
if(isset($params['attributes']) && is_array($params['attributes'])){
$this->_parse_attributes($params['attributes']);
unset($params['attributes']);
}
/*
* Deprecated legacy support for the anchor_class option
* Should be removed in CI 3.1+
*/
if(isset($params['anchor_class'])){
empty($params['anchor_class']) OR $attributes['class'] = $params['anchor_class'];
unset($params['anchor_class']);
}
foreach($params as $key => $val){
if(property_exists($this, $key)){
$this->$key = $val;
}
}
if($this->CI->config->item('enable_query_strings') === TRUE){
$this->page_query_string = TRUE;
}
if($this->use_global_url_suffix === TRUE){
$this->suffix = $this->CI->config->item('url_suffix');
}
return $this;
}
/*
* Generate the pagination links
* @return string
*/
public function create_links(){
/*
* If our item count or per_page total is zero there is no need to continue.
* Note: DO NOT change the operator to === here!
*/
if($this->total_rows == 0 OR $this->per_page == 0){
return '';
}
/* Calculate the total number of pages */
$num_pages = (int) ceil($this->total_rows / $this->per_page);
/* Is there only one page? Hm... nothing more to do here then. */
if($num_pages === 1){
return '';
}
/* Check the user defined number of links. */
$this->num_links = (int) $this->num_links;
if($this->num_links < 0){
show_error('Your number of links must be a non-negative number.');
}
/*
* Keep any existing query string items.
* Note: Has nothing to do with any other query string option.
*/
if($this->reuse_query_string === TRUE){
$get = $this->CI->input->get();
/* Unset the control, method, old-school routing options */
unset($get['c'], $get['m'], $get[$this->query_string_segment]);
}
else{
$get = array();
}
/*
* Put together our base and first URLs.
* Note: DO NOT append to the properties as that would break successive calls
*/
$base_url = trim($this->base_url);
$first_url = $this->first_url;
$query_string = '';
$query_string_sep = (strpos($base_url, '?') === FALSE) ? '?' : '&';
/* Are we using query strings? */
if($this->page_query_string === TRUE){
/* If a custom first_url hasn't been specified, we'll create one from the base_url, but without the page item. */
if($first_url === ''){
$first_url = $base_url;
/* If we saved any GET items earlier, make sure they're appended. */
if( ! empty($get)){
$first_url .= $query_string_sep.http_build_query($get);
}
}
/* Add the page segment to the end of the query string, where the page number will be appended. */
$base_url .= $query_string_sep.http_build_query(array_merge($get, array($this->query_string_segment => '')));
}
else{
/*
* Standard segment mode.
* Generate our saved query string to append later after the page number.
*/
if( ! empty($get)){
$query_string = $query_string_sep.http_build_query($get);
$this->suffix .= $query_string;
}
/*
* Does the base_url have the query string in it?
* If we're supposed to save it, remove it so we can append it later.
*/
if($this->reuse_query_string === TRUE && ($base_query_pos = strpos($base_url, '?')) !== FALSE){
$base_url = substr($base_url, 0, $base_query_pos);
}
if($first_url === ''){
$first_url = $base_url.$query_string;
}
$base_url = rtrim($base_url, '/').'/';
}
/* Determine the current page number. */
$base_page = ($this->use_page_numbers) ? 1 : 0;
/* Are we using query strings? */
if($this->page_query_string === TRUE){
$this->cur_page = $this->CI->input->get($this->query_string_segment);
}
elseif(empty($this->cur_page)){
/* Default to the last segment number if one hasn't been defined. */
if($this->uri_segment === 0){
$this->uri_segment = count($this->CI->uri->segment_array());
}
$this->cur_page = $this->CI->uri->segment($this->uri_segment);
/* Remove any specified prefix/suffix from the segment. */
if($this->prefix !== '' OR $this->suffix !== ''){
$this->cur_page = str_replace(array($this->prefix, $this->suffix), '', $this->cur_page);
}
}
else{
$this->cur_page = (string) $this->cur_page;
}
/* If something isn't quite right, back to the default base page. */
if(!ctype_digit((string)$this->cur_page) OR ($this->use_page_numbers && (int) $this->cur_page === 0)){
$this->cur_page = $base_page;
}
else{
/* Make sure we're using integers for comparisons later. */
$this->cur_page = (int) $this->cur_page;
}
/*
* Is the page number beyond the result range?
* If so, we show the last page.
*/
if($this->use_page_numbers){
if($this->cur_page > $num_pages){
$this->cur_page = $num_pages;
}
}
elseif($this->cur_page > $this->total_rows){
$this->cur_page = ($num_pages - 1) * $this->per_page;
}
$uri_page_number = $this->cur_page;
/*
* If we're using offset instead of page numbers, convert it to a page number, so we can generate the surrounding
* number links.
*/
if( ! $this->use_page_numbers){
$this->cur_page = (int) floor(($this->cur_page/$this->per_page) + 1);
}
/* Calculate the start and end numbers. These determine which number to start and end the digit links with. */
$start = (($this->cur_page - $this->num_links) > 0) ? $this->cur_page - ($this->num_links - 1):1;
$end = (($this->cur_page + $this->num_links) < $num_pages) ? $this->cur_page + $this->num_links:$num_pages;
/* And here we go... */
$output = '';
/* Render the "First" link. */
if($this->first_link !== FALSE && $this->cur_page > ($this->num_links + 1 + ! $this->num_links)){
/* Take the general parameters, and squeeze this pagination-page attr in for JS frameworks. */
$attributes = sprintf('%s %s="%d"', $this->_attributes, $this->data_page_attr, 1);
$output .= $this->first_tag_open.'<a href="'.$first_url.'"'.$attributes.$this->_attr_rel('start').'>'
.$this->first_link.'</a>'.$this->first_tag_close;
}
/* Render the "Previous" link. */
if($this->prev_link !== FALSE && $this->cur_page !== 1){
$i = ($this->use_page_numbers) ? $uri_page_number - 1:$uri_page_number - $this->per_page;
$attributes = sprintf('%s %s="%d"', $this->_attributes, $this->data_page_attr, ($this->cur_page - 1));
if($i === $base_page){
/* First page */
$output .= $this->prev_tag_open.'<a href="'.$first_url.'"'.$attributes.$this->_attr_rel('prev').'>'
.$this->prev_link.'</a>'.$this->prev_tag_close;
}
else{
$append = $this->prefix.$i.$this->suffix;
$output .= $this->prev_tag_open.'<a href="'.$base_url.$append.'"'.$attributes.$this->_attr_rel('prev').'>'
.$this->prev_link.'</a>'.$this->prev_tag_close;
}
}
/* Render the pages */
if($this->display_pages !== FALSE){
/* Write the digit links */
for($loop = $start - 1; $loop <= $end; $loop++){
$i = ($this->use_page_numbers) ? $loop : ($loop * $this->per_page) - $this->per_page;
$attributes = sprintf('%s %s="%d"', $this->_attributes, $this->data_page_attr, $loop);
if($i >= $base_page){
if($this->cur_page === $loop){
/* Current page */
$output .= $this->cur_tag_open.$loop.$this->cur_tag_close;
}
elseif($i === $base_page){
/* First page */
$output .= $this->num_tag_open.'<a href="'.$first_url.'"'.$attributes.$this->_attr_rel('start').'>'
.$loop.'</a>'.$this->num_tag_close;
}
else{
$append = $this->prefix.$i.$this->suffix;
$output .= $this->num_tag_open.'<a href="'.$base_url.$append.'"'.$attributes.'>'
.$loop.'</a>'.$this->num_tag_close;
}
}
}
}
/* Render the "next" link */
if($this->next_link !== FALSE && $this->cur_page < $num_pages){
$i = ($this->use_page_numbers) ? $this->cur_page + 1 : $this->cur_page * $this->per_page;
$attributes = sprintf('%s %s="%d"', $this->_attributes, $this->data_page_attr, $this->cur_page + 1);
$output .= $this->next_tag_open.'<a href="'.$base_url.$this->prefix.$i.$this->suffix.'"'.$attributes
.$this->_attr_rel('next').'>'.$this->next_link.'</a>'.$this->next_tag_close;
}
/* Render the "Last" link */
if($this->last_link !== FALSE && ($this->cur_page + $this->num_links + ! $this->num_links) < $num_pages){
$i = ($this->use_page_numbers) ? $num_pages : ($num_pages * $this->per_page) - $this->per_page;
$attributes = sprintf('%s %s="%d"', $this->_attributes, $this->data_page_attr, $num_pages);
$output .= $this->last_tag_open.'<a href="'.$base_url.$this->prefix.$i.$this->suffix.'"'.$attributes.'>'
.$this->last_link.'</a>'.$this->last_tag_close;
}
/*
* Kill double slashes.
* Note: Sometimes we can end up with a double slash in the penultimate link so we'll kill all double slashes.
*/
$output = preg_replace('#([^:"])//+#', '\\1/', $output);
/* Add the wrapper HTML if exists */
return $this->full_tag_open.$output.$this->full_tag_close;
}
/*
* Parse attributes
* @param array $attributes
* @return void
*/
protected function _parse_attributes($attributes){
isset($attributes['rel']) OR $attributes['rel'] = TRUE;
$this->_link_types = ($attributes['rel']) ? array('start' => 'start', 'prev' => 'prev', 'next' => 'next'):array();
unset($attributes['rel']);
$this->_attributes = '';
foreach($attributes as $key => $value){
$this->_attributes .= ' '.$key.'="'.$value.'"';
}
}
/*
* Add "rel" attribute
* @link http://www.w3.org/TR/html5/links.html#linkTypes
* @param string $type
* @return string
*/
protected function _attr_rel($type){
if (isset($this->_link_types[$type])){
unset($this->_link_types[$type]);
return ' rel="'.$type.'"';
}
return '';
}
}
// End of Pagination.php
?>
更新:2024 年 10 月 29 日 我已根据 alireza.2281 的建议将帖子中的所有代码更新为当前代码。
我还包含了分页库的完整代码。
当前状态: 我现在初始加载 19 行结果,并且 CI 分页加载到页面上,但当我单击任何编号链接时会引发错误。错误如下:
An uncaught Exception was encountered
Type: TypeError
Message: count(): Argument #1 ($value) must be of type Countable|array, null given
Filename: C:\xampp\htdocs\shirleysrecipesupdate\application\controllers\Recipe.php
Line Number: 17
Backtrace:
File: C:\xampp\htdocs\shirleysrecipesupdate\index.php
Line: 316
Function: require_once
在应用程序的模型部分,您应该按照如下方式修改搜索方法和控制器的其他部分:
搜索方法应该是这样的:
function search($search, $currentPage=1, $perPage=15){
$offset = ($currentPage - 1) *$perPage
$terms = explode(' ', $search);
$match = " ";
foreach($terms as $term){
$match .= $term;
}
$querystr = "SELECT id, name, category, subcategory, keywords, MATCH(name, category, subcategory, keywords) AGAINST('".$match."') as score FROM recipe WHERE MATCH(name, category, subcategory, keywords) AGAINST('".$match."') ORDER BY name LIMIT ".$perPage." OFFSET ".$offset.";";
$q = $this->db->query($querystr);
return $q->result();
}
然后在控制器中如果你想修改每个页面或获取不同的页面,你应该传递搜索函数的这两个参数。
想要更详细的答案请评论!
编辑:只需替换模型文件中的上述函数,控制器应更改为:
function flipbook(){
$this->require_login();
$this->load->library('pagination');
$config['base_url'] = site_url('recipe/flipbook');
$config['total_rows'] = $this->recipe_model->num_rows();
$config['uri_segment'] = '3';
$config['per_page'] = 1;
$config['num_links'] = 10;
$config['display_pages'] = TRUE;
$config['full_tag_open'] = '<div id="pagination">';
$config['full_tag_close'] = '</div>';
$this->pagination->initialize($config);
$recipe = $this->recipe_model->read_records($config['per_page'], $this->uri->segment(3))->row_array();
$data = array(
'title' => "Shirley's Recipes:".$recipe['name'],
'columns' => array('toc', 'admin/page/recipe_flipbook'),
'recipe' => $recipe,
'updated' => $this->format_date($recipe['updated'])
);
$this->load->view('templates/main', $data);
}
function search(){
if($this->input->method() === 'post'){
$search = $this->input->post('query'); //modify here:
//$results = $this->recipe_model->search($search);
$page=$this->uri->segment(3);
$perPage=15;
$results = $this->recipe_model->search($search, $page, $perPage);
$data = array(
'title' => "Shirley's Recipes:Search Results",
'columns' => array('toc', 'public/page/search_results'),
'recipes' => $results, // $results is being renamed $recipes. I don't really know why though yet...
'search' => $search
);
$this->load->view('templates/main', $data);
}
else{
redirect('recipe');
}
}