1. CodeIgniter рдХреА рддреИрдпрд╛рд░реАред
рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХреБрдЫ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ CodeIgniter рд╡рд┐рддрд░рдг рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЕрдирдкреИрдХ рдХрд░реЗрдВред рд╣рдо рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / config / database.php рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЦреЛрд▓реЗрдВ / рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ / config.php рдФрд░ base_url рдлрд╝реАрд▓реНрдб рд╕реЗрдЯрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░реЗрдВред
2. рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕реНрдерд╛рдкрдирд╛ред
рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯреЗрдмрд▓ рдирд╣реАрдВ рд╣реИрдВред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдБред
CREATE TABLE pages (
id int (10) UNSIGNED NOT NULL AUTO_INCREMENT,
url text NOT NULL ,
title text NOT NULL ,
content text NOT NULL ,
updated datetime NOT NULL ,
PRIMARY KEY (id),
FULLTEXT KEY content (content)
) ENGINE=MyISAM
* This source code was highlighted with Source Code Highlighter .
FULLTEXT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЙрди рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рдирдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдЦреЛрдЬ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ, рдЦреЛрдЬ рдХреЗрд╡рд▓ рд╕рд╛рдордЧреНрд░реА рдлрд╝реАрд▓реНрдб рдкрд░ рдХреА рдЬрд╛рдПрдЧреАред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ FULLTEXT рдЦреЛрдЬ рдХреЗрд╡рд▓ MyISAM рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред
3. рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛
рд╣рдорд╛рд░реЗ рдЦреЛрдЬ рдЗрдВрдЬрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рджрд╛рддрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рдЬреЛ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд▓реЗрдЦреЛрдВ рдХреЛ рд▓реЗрддреА рд╣реИ рдФрд░ рдлрд┐рд░, рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ , рдЗрди рд▓реЗрдЦреЛрдВ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рд┐рдЦрддреА рд╣реИред
4. рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрдЪ рдХрд░реЗрдВ
рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлрд╝реЙрд░реНрдо рдХреА SQL рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:
SELECT *
FROM pages
WHERE MATCH (content) AGAINST ( 'test' ) > 0
* This source code was highlighted with Source Code Highlighter .
FULLTEXT рдЦреЛрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реАрдорд╛рдПрдБ рд╣реИрдВред
- рдЕрдиреБрд░реЛрдз 3 рд╡рд░реНрдгреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдЦреЛрдЬ рдПрдХ рдЦрд╛рд▓реА рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдПрдЧреАред
- рд╕реНрдЯреЙрдк рд╢рдмреНрджреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬрд┐рд╕реЗ рд╕рд░реНрдЪ рдХрд░рддреЗ рд╕рдордп MySQL рдЗрдЧреНрдиреЛрд░ рдХрд░рддрд╛ рд╣реИ ('the', 'рд╣рд╛рд▓рд╛рдВрдХрд┐', 'hello')ред рдпрджрд┐ рдЖрдк рдЗрди рд╢рдмреНрджреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо рд░рд┐рдХреНрдд рд╣реЛрдЧрд╛ред
- рдПрдХ рдЙрдиреНрдирдд рдЦреЛрдЬ рднреА рдЙрдкрд▓рдмреНрдз рд╣реИред рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг MySQL рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
5. рдХреЛрдбрдЖрдИрдЧреНрдирд┐рдЯрд░ рдФрд░ рдПрдорд╡реАрд╕реА рдкреИрдЯрд░реНрдиред
рдЖрдЗрдП рд╣рдо рдЕрдкрдиреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдПрдВред CodeIgniter рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдореЙрдбрд▓-рд╡реНрдпреВ-рдХрдВрдЯреНрд░реЛрд▓рд░ (MVC рдореЙрдбрд▓-рд╡реНрдпреВ-рдХрдВрдЯреНрд░реЛрд▓рд░) рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдЖрдкрдХреЛ рдмреБрдирд┐рдпрд╛рджреА рдирд┐рдпрдо рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рд╣реИ:
- рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдореЙрдбрд▓ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдирд┐рдпрдВрддреНрд░рдХ рдпрд╛ рдореЙрдбрд▓ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреБрдЫ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдХреЗрд╡рд▓ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕рдВрдХреНрд╖рд┐рдкреНрдд PHP рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рдЯреИрдЧ рдХреЗ рдЕрдВрджрд░ рд╣реЛ рд╕рдХрддреА рд╣реИ)
рдпрджрд┐ рдЖрдк рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдирд┐рдпрдо рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЖрдЗрдП рдореЙрдбрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЦреЛрдЬ рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рдХрд░реЗрдВред рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ "рдбрд╛рдпрд░реЗрдХреНрдЯ SQL рдХреНрд╡реЗрд░реА" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреЛрдбрдЖрдИрдЧреНрдирд╛рдЗрдЯрд░ рдореЗрдВ рдХреНрд╡реЗрд░реА рдкреАрдврд╝реА рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ ActiveRecord рд╣реИред
рдиреАрдЪреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдореЙрдбрд▓ / рдкреГрд╖реНрда_model.php рдореЗрдВ рд╕реНрдерд┐рдд рдореЙрдбрд▓ рдХрд╛ рдХреЛрдб рд╣реИ
class Page_model extends Model
{
function Page_model()
{
parent::Model();
//
$ this ->load->database();
}
function search($terms)
{
//
$sql = "SELECT url, title
FROM pages
WHERE MATCH (content) AGAINST (?) > 0" ;
$query = $ this ->db->query($sql, array($terms, $terms));
return $query->result();
}
}
* This source code was highlighted with Source Code Highlighter .
рдЕрдЧрд▓рд╛ рдХрджрдо рдлреЙрд░реНрдо рдХреА рдлрд╛рдЗрд▓ рдмрдирд╛рдирд╛ рд╣реИ:
<? php $ this- > load- > helper('form'); ? >
<? php echo form_open ($ this- > uri- > uri_string); ? >
<? php echo form_label ( 'Search:' , 'search-box' ); ? >
<? php echo form_input ( array ( 'name' = > 'q', 'id' = > 'search-box', 'value' = > $search_terms)); ? >
<? php echo form_submit ( 'search' , 'Search' ); ? >
<? php echo form_close (); ? >
<? php if ( ! is_null ($ results )) : ? >
<? php if ( count ($ results )) : ? >
< ul >
<? php foreach ($ results as $ result ) : ? >
< li >< a href ="&# 60 ;? php echo $ result- > url; ? > " ><? php echo $ result- > title; ? ></ a ></ li >
<? php endforeach ? >
</ ul >
<? php else: ? >
< p >< em > There are no results for your query. </ em ></ p >
<? php endif ? >
<? php endif ? >
* This source code was highlighted with Source Code Highlighter .
рдЕрдм рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдмрд╛рд░реА рд╣реИ рдЬреЛ рдореЙрдбрд▓ рдФрд░ рджреГрд╢реНрдп рдХреЛ рдЬреЛрдбрд╝реЗрдЧреА:
class Pages extends Controller {
function search($search_terms = '' )
{
// URL
// ,
// .
if ($ this ->input->post( 'q' ))
{
redirect( '/pages/search/' . $ this ->input->post( 'q' ));
}
if ($search_terms)
{
//
$ this ->load->model( 'page_model' );
$results = $ this ->page_model->search($search_terms);
}
//
$ this ->load->view( 'search_results' , array(
'search_terms' => $search_terms,
'results' => @$results
));
}
}
* This source code was highlighted with Source Code Highlighter .
рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╣рдордиреЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди URL рд╕рд╣рд╛рдпрдХ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ $ "- рд▓реЛрдб-> рд╣реЗрд▓реНрдкрд░ ('url') рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╣рд╛рдпрдХ рдХрд╛" рдореИрдиреБрдЕрд▓ "рд▓реЛрдб рдХрд┐рдпрд╛; рдХреНрдпреЛрдВрдХрд┐ рдЪреВрдВрдХрд┐ рд╣рдо рдЕрдХреНрд╕рд░ рдЗрд╕ рд╕рд╣рд╛рдпрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рддреБрд░рдВрдд рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рд╣рд░ рд╕рдордп рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓реЛрдб рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / config / autoload.php рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ $ autoload ['рд╕рд╣рд╛рдпрдХ']:
$autoload[ 'helper' ] = array( 'url' );
* This source code was highlighted with Source Code Highlighter .
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИред рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдЖрдкрдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ (рдХрдо рд╕реЗ рдХрдо 3 рд▓рд╛рдЗрдиреЗрдВ) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдм рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреБрдЫ рд▓рд┐рдЦреЗрдВ рдЬреИрд╕реЗ 'http: //localhost/index.php/pages/search', рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреБрдЫ рдЯреЗрдХреНрд╕реНрдЯ рд╕рд░реНрдЪ рдмрд╛рд░ рдореЗрдВ рдбрд╛рд▓реЗрдВ рдФрд░ рд╕рд░реНрдЪ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
![рдЫрд╡рд┐](http://alllexe.com/wp-content/uploads/2010/12/screenshot-1.png)
6. рд╣рдорд╛рд░реА рдЦреЛрдЬ рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛрдбрд╝рдирд╛ред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЬреЛрдбрд╝реЗрдВред рдХреЛрдбрд┐рдПрдЧреНрдирд┐рдЯрд░ рдкреЗрдЬрд┐рдиреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреЗрдЬреЗрд╢рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред
рд╣рдо рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХреЛ рдкреЗрдЬрд┐рдиреЗрд╢рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЪреБрдиреЗ рдЧрдП рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛, рдЙрд╕ рд░рд┐рдХреЙрд░реНрдб рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ рд╕реЗ рдЪрдпрди рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдХреБрд▓ рд░рд┐рдХреЙрд░реНрдб рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред
рдпрд╣рд╛рдБ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛ рд╣реИ:
class Page_model extends Model {
function search($terms, $start = 0, $results_per_page = 0)
{
//
//
if ($results_per_page > 0)
{
$limit = "LIMIT $start, $results_per_page" ;
}
else
{
$limit = '' ;
}
// SQL
$sql = "SELECT url, title, content
FROM pages
WHERE MATCH (content) AGAINST (?) > 0
$limit" ;
$query = $ this ->db->query($sql, array($terms, $terms));
return $query->result();
}
function count_search_results($terms)
{
// Run SQL to count the total number of search results
$sql = "SELECT COUNT(*) AS count
FROM pages
WHERE MATCH (content) AGAINST (?)" ;
$query = $ this ->db->query($sql, array($terms));
return $query->row()->count;
}
}
* This source code was highlighted with Source Code Highlighter .
рдЕрдЧрд▓рд╛ рдЪрд░рдг рдкреЗрдЬрд┐рдиреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ
class Pages extends Controller {
function search($search_terms = '' , $start = 0)
{
// URL
// ,
// .
if ($ this ->input->post( 'q' ))
{
redirect( '/pages/search/' . $ this ->input->post( 'q' ));
}
if ($search_terms)
{
//
//
$results_per_page = $ this ->config->item( 'results_per_page' );
// , ,
//
$ this ->load->model( 'page_model' );
$results = $ this ->page_model->search($search_terms, $start, $results_per_page);
$total_results = $ this ->page_model->count_search_results($search_terms);
//
$ this ->_setup_pagination( '/pages/search/' . $search_terms . '/' , $total_results, $results_per_page);
//
$first_result = $start + 1;
$last_result = min($start + $results_per_page, $total_results);
}
//
$ this ->load->view( 'search_results' , array(
'search_terms' => $search_terms,
'first_result' => @$first_result,
'last_result' => @$last_result,
'total_results' => @$total_results,
'results' => @$results
));
}
function _setup_pagination($url, $total_results, $results_per_page)
{
//
$ this ->load->library( 'pagination' );
$uri_segment = count(explode( '/' , $url));
//
//
$ this ->pagination->initialize(array(
'base_url' => site_url($url),
'uri_segment' => $uri_segment,
'total_rows' => $total_results,
'per_page' => $results_per_page
));
}
}
* This source code was highlighted with Source Code Highlighter .
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛ред рд╣рдордиреЗ рдкреГрд╖реНрда рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЬреЛрдбрд╝рд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ URL рдореЗрдВ рдирдП рдЦрдВрдб рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВред рдпрд╣ рдЦрдВрдб рдПрдХ рд╕рд╛рде рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдПрдХ рдкреГрд╖реНрда рд╣реИ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЪрдпрди рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИред
рдЦреЛрдЬ рдкреГрд╖реНрда рдкрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ / config / application.php рдпреБрдХреНрдд рд▓рд╛рдЗрди рдмрдирд╛рдПрдБ:
$config[ 'results_per_page' ] = 10;
* This source code was highlighted with Source Code Highlighter .
рдПрдкреНрд▓рд┐рдХреЗрд╢рди / config / autoload.php рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрджрд▓рдХрд░ рдЗрд╕реЗ рдСрдЯреЛрд▓реИрдб рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ $ autoload ['config'] рдЕрдиреБрднрд╛рдЧ рдореЗрдВ 'рдПрдкреНрд▓рд┐рдХреЗрд╢рди' рдЬреЛрдбрд╝реЗрдВред
рд╣рдо рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЬрд╛рдирдХрд╛рд░реА (рд╕реНрдирд┐рдкреЗрдЯ рдФрд░ рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ рдХреНрд╡реЗрд░реА рд╕реЗ рд╢рдмреНрджреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛) рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпреЗ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣рдорд╛рд░реЗ рд╕рд╣рд╛рдпрдХ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рд╣реЗрд▓реНрдкрд░реНрд╕ / search_helper.php рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВред рдкрд╣рд▓рд╛ рдлрд╝рдВрдХреНрд╢рди search_highlight ($ text, $ search_terms) рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдХреНрд╡реЗрд░реА рд╕реЗ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ search_extract ($ рд╕рд╛рдордЧреНрд░реА, $ search_terms, $ number_of_snippets = 3, $ snippet_length = 60) рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдЦреЛрдЬ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреНрд╡реЗрд░реА рд╡рд╛рд▓реЗ рднрд╛рдЧ рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред
рдпрд╣ рдкреНрд░рдкрддреНрд░ рдХреА рд╣рдорд╛рд░реА рд╕рдВрд╢реЛрдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
<? php $ this- > load- > helper(array('form', 'search')); ? >
<? php echo form_open ($ this- > uri- > uri_string); ? >
<? php echo form_label ( 'Search:' , 'search-box' ); ? >
<? php echo form_input ( array ( 'name' = > 'q', 'id' = > 'search-box', 'value' = > $search_terms)); ? >
<? php echo form_submit ( 'search' , 'Search' ); ? >
<? php echo form_close (); ? >
<? php if ( ! is_null ($ results )) : ? >
<? php if ( count ($ results )) : ? >
< p > Showing search results for ' <? php echo $ search_terms ; ? > ' ( <? php echo $ first_result ; ? > тАУ <? php echo $ last_result ; ? > of <? php echo $ total_results ; ? > ): </ p >
< ul >
<? php foreach ($ results as $ result ) : ? >
< li >< a href ="&# 60 ;? php echo $ result- > url; ? > " ><? php echo search_highlight ($ result- > title, $search_terms); ? ></ a >< br /><? php echo search_extract ($ result- > content, $search_terms); ? ></ li >
<? php endforeach ? >
</ ul >
<? php echo $ this- > pagination- > create_links(); ? >
<? php else: ? >
< p >< em > There are no results for your query. </ em ></ p >
<? php endif ? >
<? php endif ? >
* This source code was highlighted with Source Code Highlighter .
рдФрд░ рдЗрд╕рд▓рд┐рдП рдирдП рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо:
![рдЫрд╡рд┐](http://alllexe.com/wp-content/uploads/2010/12/screenshot-2.png)
7. рдФрд░ рднреА рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рдЪрд┐рдкреНрд╕ред
CodeIgniter рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
// Mark the start of search
$ this ->benchmark->mark( 'search_start' );
// Load the model, perform the search and establish the total
// number of results
$ this ->load->model( 'page_model' );
$results = $ this ->page_model->search($search_terms, $start, $results_per_page);
$total_results = $ this ->page_model->count_search_results($search_terms);
// Mark the end of search
$ this ->benchmark->mark( 'search_end' );
* This source code was highlighted with Source Code Highlighter .
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдлреЙрд░реНрдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
![рдЫрд╡рд┐](http://alllexe.com/wp-content/uploads/2010/12/profiling.png)