Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql]
Forum PHP.pl > Forum > Przedszkole
maciej.m
Witam,

Wlasnie wprowadzam zmiany w pewnym skrypcie. W tabeli MYSQL (odwolanie do niej w $db_listings) dodalem kolumne 'firstname'. Teraz mam dwie kolumny do zapisywania imienia (firstname) i nazwiska (firmname). Chcialbym teraz zmienic funkcje wyszukiwania tak, zeby traktowal obydwie kolumny jako jedno pole wyszukiwania, tak jakby tymczasowo potraktowac stringi z tych dwoch kolumn jako jeden string. Ale wszystko za pomoca skladni MYSQL. Przyznaje, ze jestem kompletnie zielony w skladni MYSQL (moze nie calkiem).

CODE
$likequery2 = " COUNT(*) ";
$likequery2.= " FROM $db_listings";
// pominiety fragment zapytania
// users

$likequery.=" UNION ";

$likequery.= "(Select DISTINCT $db_listings.flag, $db_listings.selector, $db_listings.firmname, $db_listings.firstname, $db_listings.business, $db_listings.loc_one, $db_listings.loc_two, $db_listings.loc_three, $db_listings.loc_four, $db_listings.loc_text, ";
$likequery.=" $db_listings.address, $db_listings.phone, $db_listings.prices, ";
$likequery.=" $db_listings.date, $db_listings.rating, $db_listings.votes, $db_listings.countrating, $db_listings.mail, ";
$likequery.=" $db_listings.im, $db_listings.fax, $db_listings.mobile, $db_listings.manager, $db_listings.www";
$likequery.=" FROM $db_listings";
$likequery.= " WHERE firmstate='on' $hide_d AND $db_listings.firmname LIKE '%$sstring%' OR $db_listings.business LIKE '%$sstring%' ";
$likequery.= " OR $db_listings.address LIKE '%$sstring%' OR $db_listings.phone LIKE '%$sstring%' ";
$likequery.= " OR $db_listings.prices LIKE '%$sstring%' OR $db_listings.date LIKE '%$sstring%' OR $db_listings.rating LIKE '%$sstring%' ";
$likequery.= " OR $db_listings.votes LIKE '%$sstring%' OR $db_listings.countrating LIKE '%$sstring%' OR $db_listings.mail LIKE '%$sstring%' ";
$likequery.= " OR $db_listings.im LIKE '%$sstring%' OR $db_listings.fax LIKE '%$sstring%' OR $db_listings.zip like '%$sstring%'";
$likequery.= " OR $db_listings.mobile LIKE '%$sstring%' OR $db_listings.manager LIKE '%$sstring%' ";
$likequery.= " OR $db_listings.www LIKE '%$sstring%' )";



$likequery.= " ORDER BY flag, firmname";
nowotny
Cytat(maciej.m @ 9.02.2008, 15:01:37 ) *
Chcialbym teraz zmienic funkcje wyszukiwania tak, zeby traktowal obydwie kolumny jako jedno pole wyszukiwania, tak jakby tymczasowo potraktowac stringi z tych dwoch kolumn jako jeden string.

A w jakim celu, jeśli można spytać...?
maciej.m
Juz rozwiazalem sprawe.
Wczesniej jak ktos szukal "imie nazwisko" to nie znajdowal niczego.
Jak wpisywal "imie" albo "nazwisko" to znajdowal, ale takze rejestry z tym samym nazwiskiem
Teraz jak ktos wpisuje "imie nazwisko" to znajduje dokladnie te osobe ktorej szukal.
Uzylem CONCAT_WS

CODE

...
" WHERE firmstate='on' $hide_d AND CONCAT_WS(' ',$db_listings.firstname, $db_listings.firmname) LIKE
'%$sstring%' OR $db_listings.business LIKE '%$sstring%' ";
...
nowotny
Cytat(maciej.m @ 11.02.2008, 13:35:33 ) *
Wczesniej jak ktos szukal "imie nazwisko" to nie znajdowal niczego.
Jak wpisywal "imie" albo "nazwisko" to znajdowal, ale takze rejestry z tym samym nazwiskiem

W tym celu rozbija się szukaną frazę na poszczególne wyrazy i szuka za pomocą "LIKE %imie% AND LIKE %nazwisko%", albo jak tam sobie chcesz...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.