[英]Search with CakePHP and MySQL
我在這里是新的,並使用CakePHP,我想在我的網站上進行搜索,但是我遇到此錯誤和警告:
注意(8):未定義的變量:negocios [APP \\ View \\ Negocios \\ buscar.ctp,第3行]警告(2):為foreach()提供了無效的參數[APP \\ View \\ Negocios \\ buscar.ctp,第3行]
這是我來自控制器的代碼:
<?php
class NegociosController extends AppController {
public $components = array('Paginator');
public $helpers = array('Html', 'Form');
public function index(){
$this->paginate = array('limit' => 1);
$negocios = $this->paginate('Negocio');
$this->set(compact('negocios'));
}
public function ver($id = null, $nombre){
$this->Negocio->id = $id;
$this->set('negocio', $this->Negocio->read());
}
public function buscar(){
if(!empty($this->data)){
$query = $this->data['Negocio']['buscador'];
$this->set($query, $this->data['Negocio']['buscador']);
$conditions = array(
'conditions' => array(
'or' => array(
'Negocio.titulo LIKE %$query%',
'Negocio.direccion LIKE %$query%',
'Negocio.lugar LIKE %$query%',
'Negocio.descripcion LIKE %$query%',
'Negocio.direccion LIKE %$query%',
'Negocio.email LIKE %$query%',
'Negocio.web LIKE %$query%',
'Negocio.facebook LIKE %$query%',
'Negocio.twitter LIKE %$query%',
'Negocio.categoria LIKE %$query%'
)
)
);
$this->set('negocios', $this->Negocio->find('all', $conditions));
}
}
}
?>
我的觀點:
<?php
foreach ($negocios as $key => $negocio) {
echo $negocio['Negocio']['titulo'].'<br />';
echo $negocio['Negocio']['descripcion'].'<br />';
echo $negocio['Negocio']['categoria'].'<br />';
}
?>
@cornelb我有這個:
<?php
echo $this->Form->create(array('controller' => 'negocios', 'action' => 'buscar'));
echo $this->Form->input('buscador', array('placeholder' => 'Buscar negocios...', 'label' => false));
echo $this->Form->submit('search.png', array('type' => 'button', 'id' => 'buscar', 'div' => false));
echo $this->Form->end();
?>
當我搜索東西時,我得到這個錯誤:
SQLSTATE [42000]:語法錯誤或訪問沖突:1064 SQL語法有錯誤; 檢查對應於你的MySQL服務器版本使用附近的正確語法“%$查詢%)或(手動Negocio
。 direccion
(LIKE%$查詢%)或Negocio
。 lugar
LIKE%$”在行1
但是如果我使用“ get”方法,我什么也得不到。
試試這個。
'Negocio.titulo LIKE' => "%" . $query. "%",
您還可以使用匹配查詢
$search = 'Search String';
$conditions = array(
"MATCH(Post.title)
AGAINST('$search' IN BOOLEAN MODE)"
);
$matches = $this->Post->find('all', array('conditions' => $conditions));
對於匹配,您需要將表“ Storage Engine”更改為“ MYISAM”,並在字段上建立全文索引。
這會將表單添加到視圖中。
echo $this->Form->create('Negocio');
echo $this->Form->input('buscador');
echo $this->Form->submit('Search');
echo $this->Form->end();
並在控制器中:
public function buscar(){
$negocios = array();
if (!empty($this->request->data)) {
$query = $this->request->data['Negocio']['buscador'];
$conditions = array(
'conditions' => array(
'or' => array(
'Negocio.titulo LIKE' => "%$query%",
'Negocio.direccion LIKE' => "%$query%",
'Negocio.lugar LIKE' => "%$query%",
'Negocio.descripcion LIKE' => "%$query%",
'Negocio.direccion LIKE' => "%$query%",
'Negocio.email LIKE' => "%$query%",
'Negocio.web LIKE' => "%$query%",
'Negocio.facebook' => "%$query%",
'Negocio.twitter' => "%$query%",
'Negocio.categoria LIKE' => "%$query%", )
)
);
$negocios = $this->Negocio->find('all', $conditions);
}
$this->set('negocios', $negocios);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.