Пак сърч-а

19 отговора 668 прегледа
#1

Пак сърч-а

Имаме следното куери:
$query = "SELECT * FROM $table WHERE name LIKE '%$name%' AND city LIKE '%$city%' AND phone LIKE '%$phone%' ";
Всичко хубаво прави си сърч-а, но при телефона се получава така, че при еднакви цифри примерно в средата и изкарва всички записи които имат такива цифри.
Много кофти
някакви идеи как да го фикс-на ?
пробвах да проверявам дали търсения номер е = някой от резултатите, но тогава не ми изкарваше нищо

Ей, ШшшШшШшшШът! не ми викай "хулиган си"!
Отговор
в отговор на asFARas #2

Re: Пак сърч-а

и след като прочете за LIKE какво рабра....освен да наслагаш % навсякъде?
и какво ще й фиксваш на тази заявка, в момента ти вади точно каквото си й заръчал.
я поне кажи какво искаш да направиш

Отговор
в отговор на пxп шмaтka #3

Re: Пак сърч-а

разбрах че LIKE търси точно това което съм му казал да търси
но когато не сложа % не изкарва никакъв резултат
затова ги ползвам
Искам когато му кажа търси 052/4536241 то да ми намери него

Ей, ШшшШшШшшШът! не ми викай "хулиган си"!
Отговор
в отговор на asFARas #4

Re: Пак сърч-а

ами phone='052/4536241'......

Отговор
в отговор на пxп шмaтka #5

Re: Пак сърч-а

явно съм малоумен
да проследим процеса
хтмл форма, която взима стойностите от колонката телефони от таблицата и ги дисплейва. аз си избирам един номер(052/3452123) и натискам файнд. формата препредава информацията на сърч.пхп и там $phone_s = $_POST['phone'];
следва
$query = "SELECT * FROM $table WHERE name LIKE '%$name%' AND city LIKE '%$city%' AND phone LIKE '$phon_s' ";
би трябавло да ми намери точно телефон 052/3452123, но не ми сидплейва нищо.

къде греша?

Ей, ШшшШшШшшШът! не ми викай "хулиган си"!
Отговор
в отговор на asFARas #6

Нещо такова ли търсиш ?

$query = "SELECT * FROM ".$table." WHERE name LIKE '%".$name."%' AND city LIKE '%".$city."%' AND phone LIKE '".$phone."%' ";

Отговор
в отговор на asFARas #7

Re: Пак сърч-а

Неможах да разбера какво точно беше но махнах & на phone (и преди ги бях махал, но неби) и сега е ок!
Обаче като си играх със сърча се оказа следното имаме 2 реда в които:
1 city = Ню Йорк
2 city = Ню Орлеанс
как мога да го избегна ?

Ей, ШшшШшШшшШът! не ми викай "хулиган си"!
Отговор
в отговор на asFARas #8

Re: Пак сърч-а

ъ?
къде беше тоя & дет го махна..
и какво искаш да избегнеш?...то и без тва ню орлеанс вече го няма

Отговор
в отговор на пxп шмaтka #9

Re: Пак сърч-а

:)
махнах % не &
искам да избегна когато имам 2 първи средни последни повтарящи се думи в повече от един запис да ми изкарва точно тоя дето търся а не всички, които започват с 1та дума примерно

Ей, ШшшШшШшшШът! не ми викай "хулиган си"!
Отговор
в отговор на asFARas #10

Re: Пак сърч-а

2 първи средни последни повтарящи се думи
те тва ме уби

аре помисли си какво точно искаш от тази заявка, обясни го хубаво и на нас и тогава може и да можем да ти помогнем

Отговор
в отговор на пxп шмaтka #11

Re: Пак сърч-а

Простете ми гладен бях ;)
Пак 2 реда където града в 1ия е Ню Йорк, а във 2рия Ню Орлеанс.
искам да избегна дисплейването на Ню Орлеанс, когато съм търсил Ню Йорк.

Ей, ШшшШшШшшШът! не ми викай "хулиган си"!
Отговор
в отговор на asFARas #12

Re: Пак сърч-а

Select * from .... where city = 'Ню Йорк'

Незнам от каде ти се появява Ню Орлеанс
(нали вече го няма)

Отговор
в отговор на vido #13

Re: Пак сърч-а

когато го направя така просто не се появява нищо

Ей, ШшшШшШшшШът! не ми викай "хулиган си"!
Отговор
в отговор на asFARas #14

Re: Пак сърч-а

Стига с тоз Ню Орлеанс, нали го затрих !

Отговор
в отговор на Katrina #15

Re: Пак сърч-а

ДОбре тогава да е Ню Ню Орлеанс

Ей, ШшшШшШшшШът! не ми викай "хулиган си"!
Отговор
в отговор на asFARas #16

Re: Пак сърч-а

Значи има проблем с данните.
нормално е: city like 'Ню%'
да даде и 'Ню Орлеанс'.
Опитай с: city like 'Ню Йорк%'. Ако стане, значи има някъкъв символ в края.
Между другото е от значение какво е полето city и каква е базата.
Не винаги може да се срявняват с "=". Тогава: city like 'Ню Йорк'

Отговор
в отговор на vido #17

Re: Пак сърч-а

$city_s = "Ню Йорк";
$query = "SELECT * FROM $table WHERE city LIKE '%$city_s%' "
това горното ми изкарва Ню Йорк и Ню Орлеанс

$query = "SELECT * FROM $table WHERE city LIKE '$city_s%' "
това горното ми изкарва Ню Йорк и Ню Орлеанс

$query = "SELECT * FROM $table WHERE city LIKE '%$city_s' "
това горното не ми изкарва нищо

сега дадох едно ЕСНО $city_s; и резултата беше "Ню"
ето я причината за тъпнята ... някой може ли да ми каже защо се получава ?

Ей, ШшшШшШшшШът! не ми викай "хулиган си"!
Отговор
в отговор на asFARas #18

Re: Пак сърч-а

Първо да уточним някои неща. В контекста на LIKE следните символи имат специално значение:

% = каквото и да е, колкото и да е дълго, включително нищо
_ = каквото и да е, но точно един символ

И така, ако имаш: ... city LIKE '%New%' ..., това ще търси за всички низове, в които се среща New, в това число 'Something New', 'New York', 'The Newspaper' и т.н.

Ако си работил с файлова система и си запознат с GLOB синтаксиса, можеш да мислиш за % като за *, а за _ като за ?.

Очевидно е, че ако търсиш за конкретен град не ти трябва нито един от горните специални символи, т.е. ти трябва просто: city LIKE 'New York'.

Вече друг е въпросът защо низът ти се отрязва до първата дума, предполагам, че някъде си изпуснал да го заградиш с кавички.

Everything louder than everything else...
Отговор
в отговор на Dakota #19

Re: Пак сърч-а

Благодаря ти дългокоси приятелю!
Помогна ми да си видя грешката
грешкатам и беше в сърч формата и по-точно в придаването на стойността
бях написал :
<option value = <? echo $result_city; ?> >
в същност то трябва да бъде:
<option value = "<? echo $result_city; ?>" >

Още веднъж благодаря на всички че помогнахте ма неуката ламя

Ей, ШшшШшШшшШът! не ми викай "хулиган си"!
Отговор
в отговор на asFARas #20

Re: Пак сърч-а

неуката ламя можеше и сама да си помогне ако беше прочела внимателно как се използва LIKE и ако беше дебъгвала малко кво и прави кода....поне веднъж за тез 2 дена не се ли сети да принтваш заявката преди да я изпълниш?

Отговор