IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
maxijoey
Člen
Avatar
maxijoey:6.12.2017 10:28

Ahoj, potřeboval bych vytvořit v sql dotaz který se bere data z par proměnných a pokud jsou prázdné aby si jich nevšímal jakoby tem nebyli, jde to vůbec nějak? Nebo to musím ošetřovat nějakýma ifama v kodu? Používám tento:

Když tady nastane že: $vyrobcePolozky je prázdný nebo 0 tak už nic dál nevytáhne, což nepotřebuji, potřebuji aby to v tom případě ignoroval. Snad to nějak chápete co chci, nevím jestli to píšu dobře :-)

"SELECT name, pairCode, id_polozka FROM $tabKlienta WHERE vyrobce LIKE '%$vyrobcePolozky%' AND
category LIKE '%$categoriePo­lozky%' AND
stav_polozky = '$stavPolozky' GROUP BY pairCode LIMIT ?, ?"

 
Odpovědět
6.12.2017 10:28
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na maxijoey
Petr Čech:6.12.2017 11:23

Ahoj, bavíš se o prázdných PHP proměnných, nebo prázdných SQL sloupcích?
Celý koncept, jak konstruuješ SQL dotaz je úplně špatně, musíš použít něco, co tě zabezpečí před SQL injekcí
Používáš nějaký framework, nebo čisté PHP?

Nahoru Odpovědět
6.12.2017 11:23
the cake is a lie
Avatar
maxijoey
Člen
Avatar
Odpovídá na Petr Čech
maxijoey:6.12.2017 19:55

Ahoj, používám čisté PHP a na Db používám tu knihovnu co tu někdo psal. Bavím se o tom že by proměná měla nějakou defaultní hodnotu dle které by sql poznalo že ji má ignorovat. Něco jako: pokud proměná má hodnotu 0, což nenajde v daném sloupci, jelikož tam není tak prostě výtahne všechny položky, respektive ji bude ignorovat a postupovat k dalším proměným zda mají hodnotu či nikoli. V zásadě je to filtr položek z db.

 
Nahoru Odpovědět
6.12.2017 19:55
Avatar
maxijoey
Člen
Avatar
Odpovídá na maxijoey
maxijoey:6.12.2017 19:58

Jinak já vím že bych neměl do toho dotazu cpát proměnné a i vím jak ho přepsat. jen nevím jak tohle odfiltrovat aby se to chovalo jak potřebuji, zda se nějak dá dotaz sestavit na to nebo je třeba nějak ifovat proměnné v kodu abych to neděla zbytečně.

 
Nahoru Odpovědět
6.12.2017 19:58
Avatar
Ondřej Crha
Člen
Avatar
Ondřej Crha:16.12.2017 11:59
WHERE (vyrobce LIKE '%$vyrobcePolozky%' OR vyrobce IS NULL OR vyrobce = '0') and category LIKE ...

Tak nějak?

 
Nahoru Odpovědět
16.12.2017 11:59
Avatar
maxijoey
Člen
Avatar
Odpovídá na Ondřej Crha
maxijoey:16.12.2017 12:10

Mnoo :-) vypadá to slibně, zkusím to, děkuji :-)

 
Nahoru Odpovědět
16.12.2017 12:10
Avatar
maxijoey
Člen
Avatar
Odpovídá na Ondřej Crha
maxijoey:16.12.2017 12:23

Tak sestavil jsem ten dotaz nějak takhle dle tvého příladu:
"SELECT name, code, pairCode, id_polozka FROM $tabKlienta
WHERE (vyrobce LIKE '%$vyrobcePolozky%' OR vyrobce IS NULL OR vyrobce = '0') AND
(category LIKE '%$categoriePo­lozky%' OR category IS NULL OR category = '0') AND
stav_polozky = '$stavPolozky' GROUP BY pairCode LIMIT ?, ?", ($strana - 1) * $naStranu, $naStranu);

A chová se to tak že když určím vyrobcePolozky i categoriePolozky tak se to odfiltruje spravně. Ale pokud je jedna z nich nebo obě null nebo 0 tak neodfitlruje nic. Což je špatně. $stavPolozky netřeba řešit, ten je určen vždy.

 
Nahoru Odpovědět
16.12.2017 12:23
Avatar
maxijoey
Člen
Avatar
maxijoey:16.12.2017 12:29

Už to mám :-)
takhle to funguje:
WHERE (vyrobce LIKE '%$vyrobcePolozky%' OR $vyrobcePolozky IS NULL OR $vyrobcePolozky = '0')

 
Nahoru Odpovědět
16.12.2017 12:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.