簡體   English   中英

使用CakePHP和MySQL搜索

[英]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服務器版本使用附近的正確語法“%$查詢%)或(手動Negociodireccion (LIKE%$查詢%)或Negociolugar 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM