build search query

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

build search query

Какво трябва да до добавя или променя за да имам като резултати от-до посочени параметри:

if($anton) {
// build query string
$query = "SELECT * FROM $tablicatami WHERE";
if($anton) { $query .= " anton='$anton' AND"; }

Така ми показва само резултатите които са точно като посочената заявка. Тоест в search слагам 100 и и ми показва резултати само с 100. Аз аз искам да показва от 50 до 150 например.
Дано сте ме разбрали, че май не го обясних много добре.

Отговор
в отговор на aнтoн #2

Re: build search query

трябва да четеш на първо време:

select * from `test` limit 100, 50;

това ще листне записите в тест от 100 до 150

с колко да се листват назад <-> напред можеш да ползваш параметър който идва от _GET

прим. q.php?offset=100

ескейпваш каквото има за ескейпване ' % \ "

Отговор
в отговор на qip #3

Re: build search query

Благодаря ти за бързия отговор.
По този начин когато е уточнен лимита не става това което ми трабва.
На мен ми е нужно например:
1. search = 100
results: ot 50 do 150
2. search= 2000
results= ot 1900 do 2100
и т.н...

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

Отговор
в отговор на qip #4

Re: build search query

така става ли:

select * from `test` limit +/-20%;

Отговор
в отговор на aнтoн #5

Re: build search query

ами пробвай да му пускаш нещо в формата като
$limit , $offset променливи

та , да речем нещо такова :
$limit = 2100;
$offset = 1900;

и после заявката :

$query = "select * from 'test' limit '$limit','$offset' ";

Отговор
в отговор на Computer #6

Re: build search query

Така става, но аз незнам посетителя каква цифра ще въвежда всеки път.
Идеята е като се въведе каквато и да е цифра да му показва всичко 20% над нея, нея и всичко 20% под нея.

Отговор
в отговор на aнтoн #7

Re: математика, не PHP

Ми на теб май не ти трябва ПХП, а математика. Смяташ си ги тея 20% от туй дето е въвел посетителя и си правиш куерито...

GIS
Отговор
в отговор на Sanndo #8

Re: математика, не PHP

Щом не става с един сърч, помогнете да го направя с 2 сърча. В единия ще се задава макс стойност а в другия минимална стойност. Както е в мобиле.бг(минимум цена и максимум цена). Как ще изглежда стринга в такъв случай?

if($anton) {
// build query string
$query = "SELECT * FROM $тест WHERE";
if($anton) { $query .= " anton='$anton' AND"; }

Отговор
в отговор на aнтoн #9

Re: build search query

амии задаваш в две променливи - едната е входните данни - 20%, другата е входните данни +20% и ги подажасх на заиажката

select * from table where edi kakwo si between 1 promenliva and 2 promenliva

Ako sam te razbral de.

Отговор
в отговор на aнтoн #10

Re: Глей ся...

Значи не ти трябват един вагон празни куерита и т.н....
Имаш неква стойност, дето ти се дава от потребителя. Вадиш от нея 20% за първата стойност и за втората пробавяш 20%. После си правиш заявката към базата.

GIS
Отговор
в отговор на fan #11

Re: build search query

Аз не съм толкова напреднал че да те разбера . Можеш ли да ми го напишеш ползвайки този команден ред:

if($anton) {
// build query string
$query = "SELECT * FROM $тест WHERE";
if($anton) { $query .= " anton='$anton' AND"; }

Отговор
в отговор на anton #12

Re: build search query

Ша ма разбиеш накрая... Първо забрави за тва: if($anton) !
Ползвай нещо от рода на if(isset($anton)), if(isset($_GET['anton'])) ама тва дето го пишеш ме дразни.. Както и да е..

Идея си мнямам кво трядба да е тва $антон, предполагам некви числа щом питаш така...
$rez = $anton * 1.2; // eto ti go + 20%
$rez1 = $rez - $anton; // kolko e stoinosta na tiq %
$rez2 = $anton - $rez1; // etotigo i - 20%

$query = "SELECT * FROM $test WHERE anton BETWEEN $rez2 AND $rez";


По-тъпо немам как да стане, ама върши работа...

GIS
Отговор
в отговор на Sanndo #13

Re: build search query

Е тва е определено първата реална помощ, която донякъде разбирам , но все още ми е трудно за което искрено се извинявам. След като го направих обаче получих parse error заради този isset май щото ми посочва неговия ред. Ето го тук целия ред(без антон а в оригинал):

// build search query string if neccessary
if($type || $location || $area || $condition) {
// build query string
$query = "SELECT * FROM $dbvin WHERE";
if($type) { $query .= " type='$type' AND"; }
if($location) { $query .= " location='$location' AND"; }
if($area) { $query .= " area LIKE '%$area%' AND"; }
if($condition) { $query .= " condition='$condition'"; }
// trim extra AND if neccessary
if(substr($query, strlen($query)-4, 4) == ' AND') { $query = substr($query, 0, strlen($query)-4); }
} else {
$query = "SELECT * FROM $dbvin";
}

таблицата е: dbvin както се вижда. Другото(type, location, area, condition) са стойностите на артикула въведени в нея.

Единственото което искам е AREA-та да се модифицира. Когато някой посочи че търси 500 квадрата място да му показва и тези дето са 480 или 520.

Отговор
в отговор на anton #14

Re: build search query

Мога да ти предлоа следното:

// build search query string if neccessary
if($type || $location || $area || $condition) {
// build query string
$key = array();
$percent = 5;
$query = "SELECT * FROM $dbvin";
if($type) $key[] = "type='$type'";
if($location) $key[] = " location='$location'";

if($area) $key[] = "area <= ".(round($area*(100+$percent), 0))." && area >= ".(round($area*(100-$percent), 0));

if($condition) { $key[] = " condition='$condition'"; }
// trim extra AND if neccessary

if (sizeof($key) > 0) $query .= " where ".implode(" && ", $key);

} else {
$query = "SELECT * FROM $dbvin";
}

И най-ярките личности си плащат тока.
Отговор
в отговор на edembg #15

Re: build search query

Много ти благодаря! Моментално го тествах, но не работи, дори и стойноста която е въведена не показва(като напиша сърч 500 и в базара е 500 не го изкарва).
Направих $percent = 20; но пак не става.
Да не би проблема да е това 100 тук: 100+$percent
Може ли това сто да означава "каквато и да е въведена стойност"?

Отговор
в отговор на edembg #16

Re: build search query

Ако не става с тея проценти, не може ли да стане като му зададем МИНИМУМ и МАКСУМУМ ръчно? Въвеждам ръчно ограничението( с 2 инпута) и ми дава резултатите.

Отговор
в отговор на Aнтoн #17

Re: build search query

Да ти кажа откровено не съм го тествал, но по принцип правя такива неща така.

Може би area в базата ти да е текстово поле и за това да не може да сравнява правилно.

С лимитите във формата също може да стане. И аз обикновено го правя така.

Понеже искаше да се търси по разлика в някакъв процент за това сложих това изчисление, но съм сбъркал. Трябва да бъде:

if($area) $key[] = "area <= ".(round($area*(100+$percent)/100, 0))." && area >= ".(round($area*(100-$percent)/100, 0));

Така трябва да ръси за стойности между $area * 1,2 и $area * 0,8;

И най-ярките личности си плащат тока.
Отговор
в отговор на edembg #18

Re: build search query

Ееееееееее. РАБОТИ ПЕРФЕКТНО !! БЛАГОДАРЯ ТИ !
Оставам го така и няма да го пипам вече.

Ако не ти е проблем можеш ли да ми кажеш как става и с 2 инпута - MIN и MAX стойности?

Отговор
в отговор на Anton #19

Re: build search query

if($area_max) $key[] = "area <= ".$area_max;
if($area_min) $key[] = "area >= ".$area_min;

Wmesto
izraza, kojto polzwash sega

(Izwinqwaj nesho krilicata mi se skapa)

И най-ярките личности си плащат тока.
Отговор
в отговор на edembg #20

Re: build search query

Много ти благодаря за търпението и желанието да ми помогнеш! Имаш каса бира от мен .
Желая ти УСПЕХИ !


п.с. Имам още 2-3 въпроса, но са оф-топик и ще ти ги пратя на мейла.

Отговор