Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Suchfunktion (Abfrage).

PHP-Suchfunktion (Abfrage).

高洛峰
高洛峰Original
2016-11-30 15:26:231437Durchsuche

Ich bin heute auf ein Problem gestoßen: Bei Verwendung der Funktion „Suchen“ kann die Abfrage nach Eingabe der Abfragebedingungen nicht durchgeführt werden.

Was ich tue, ist, den Inhalt im Datentabellenpaket auf der Homepage anzuzeigen, aber es gibt eine Bedingung: Der auf der Homepage angezeigte Inhalt muss auch sein: Feldstatus=0 und Daten mit Druck=0 kann in der Homepage-Liste angezeigt werden.

Auf der Seite gibt es eine „Such“-Funktion. Nach Eingabe der Bedingungen wird die Abfrage anhand der Bedingungen durchgeführt.

Für die allgemeine Suche geben Sie einfach eine Methode index() auf der Homepage-Anzeigeliste ein:

$map=array();//Abfragebedingungen initialisieren

$map = $this->_search();//Rufen Sie die Abfragemethode auf

$total = $this->Model->where ($map)->count(); //Dies ist hauptsächlich

if ($total == 0) {
$_list = '';
} else {
$_list = $this->where ($map) ->limit( $post_data ['first'] . ',' . $post_data ['rows'] )->select();
}

Dann schreiben Sie einfach eine _search() :

Zum Beispiel:

protected function _search(){

$map = array ();
$post_data = I ( 'post.' );

if ($post_data ['packageid'] != '') {
$map ['packageid'] = array (
'like',
'%' . $post_data [ 'packageid'] . '%'
);
}

return $map;

}

Zum Schluss rufen Sie diese Suchmethode im Feld „Suchen“ auf " Menü der Einstellungen.

Wenn ich dies jedoch mache, muss ich bei der Suche auch darauf achten, dass in den Daten mit Feldstatus=0 und Druck=0 gesucht wird.

Ich habe darüber nachgedacht, wo ich diese Einschränkung hinzufügen soll. Nach verschiedenen Versuchen und Nachfragen habe ich es herausgefunden. Fügen Sie die Einschränkungsbedingungen einfach direkt zur SQL-Anweisung hinzu (wie unten rot dargestellt). (Als ich es selbst ausprobierte, fügte ich immer wieder Bedingungen im blauen Bereich unten hinzu und scheiterte jedes Mal!)

$map=array();
$map=$this->_search() ;

$total = $this->Model->where ($map)->where(array('status' =>0,'print_status'=>0))-> ; count();

if ($total == 0) {
$_list = '';
} else {
$_list = $this->Model-> where ($map)->where(array('status' =>0,'print_status'=>0))->limit( $post_data ['first'] . ',' . $post_data [' rows '] )->select();
}

Ich möchte es gerne mit Ihnen teilen.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn