Bonsoir,
Suite aux tutos développer sont site de A à Z, j'aimerais intégrer un moteur de recherche.
Voici le code de la page /view/layout/default.php :
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title><?php echo isset($title_for_layout)?$title_for_layout:'totoCie'; ?></title>
<!--<link rel="stylesheet" href="../../webroot/css/bootstrap.min.css">-->
<link rel="stylesheet" href="<?php echo Router::webroot('css/bootstrap.min.css'); ?>">
</head>
<body>
<div class="topbar" style="position:static">
<div class="topbar-inner">
<div class="container">
<h3><a href="#">totoCie</a></h3>
<ul class="nav nav-pills">
<?php $pagesMenu = $this->request('Pages','getMenu'); ?>
<?php foreach($pagesMenu as $p): ?>
<li><a href="<?php echo Router::url('pages/view/id:'.$p->id.'/slug:'.$p->slug); ?>" title="<?php echo $p->name; ?>"><?php echo $p->name; ?></a></li>
<?php endforeach; ?>
<li><a href="<?php echo Router::url('posts/index'); ?>">Actualités</a></li>
<li><a href="<?php echo Router::url('pages/contact'); ?>">Me Contacter</a></li>
<li>
<form method="post" action="<?php echo Router::url('pages/recherche'); ?>" class="navbar-search pull-left">
<input type="search" class="search-query" placeholder="Chercher sur totoCie">
</form></li>
</ul>
</div>
</div>
</div>
<div class="container" style="padding-top:60px;">
<?php echo $this->Session->flash(); ?>
<?php echo $content_for_layout; ?>
</div>
</body>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
</html>
J'ai ajouté ce code pour la page de recherche dans le fichier /config/conf.php :
<?php
class Conf{
static $debug = 1;
static $databases = array(
'default' => array(
'host' => 'localhost',
'database' => 'tuto',
'login' => 'root',
'password' => ''
)
);
}
Router::prefix('cockpit','admin');
Router::connect('','posts/index');
Router::connect('contact','pages/contact');
Router::connect('veriformrdv','pages/veriformrdv');
Router::connect('recherche','pages/recherche');
Router::connect('cockpit','cockpit/posts/index');
Router::connect('page/:slug-:id','pages/view/id:([0-9]+)/slug:([a-z0-9\-]+)');
Router::connect('blog/:slug-:id','posts/view/id:([0-9]+)/slug:([a-z0-9\-]+)');
Router::connect('blog/category/:slug','posts/category/slug:([a-z0-9\-]+)');
Router::connect('blog/*','posts/*');
Quand je tape un mot dans le moteur de recherche ça me renvoi sur la page recherche sur laquelle il n'y a rien de plus que ça :
<legend>Résultats de recherche</legend>
Donc pour l'instant j'ai l'affichage du menu qui est correct et juste "Résultats de recherche" mais au moins je passe d'une page à une autre sans encombre.
Je pensais ajouter dans la page /core/Model.php la fonction de recherche en m'inspirant de la function find :
public function recherche(,){
}
Code de la fonction find :
/**
* Permet de récupérer plusieurs enregistrements
* @param $req Tableau contenant les éléments de la requête
**/
public function find($req = array()){
$sql = 'SELECT ';
if(isset($req'fields'])){
if(is_array($req'fields'])){
$sql .= implode(', ',$$req'fields']);
}else{
$sql .= $req'fields'];
}
}else{
$sql.='*';
}
$sql .= ' FROM '.$this->table.' as '.get_class($this).' ';
// Liaison
if(isset($req'join'])){
foreach($req'join'] as $k=>$v){
$sql .= 'LEFT JOIN '.$k.' ON '.$v.' ';
}
}
// Construction de la condition
if(isset($req'conditions'])){
$sql .= 'WHERE ';
if(!is_array($req'conditions'])){
$sql .= $req'conditions'];
}else{
$cond = array();
foreach($req'conditions'] as $k=>$v){
if(!is_numeric($v)){
$v = '"'.mysql_real_escape_string($v).'"';
}
$cond] = "$k=$v";
}
$sql .= implode(' AND ',$cond);
}
}
if(isset($req'order'])){
$sql .= ' ORDER BY '.$req'order'];
}
if(isset($req'limit'])){
$sql .= ' LIMIT '.$req'limit'];
}
$pre = $this->db->prepare($sql);
$pre->execute();
return $pre->fetchAll(PDO::FETCH_OBJ);
}
Ma question est SUIS-JE SUR LA BONNE PISTE ? ou y a t'il d'autre choses à prendre en considération avant de ma lancer dans le codage de la fonction recherche ?
N'y aurait il pas un tuto sur ce site pour ajouter un moteur de recherche au tuto "Développer son site de A à Z" ???