Autor | Zpráva | ||
---|---|---|---|
divady Profil |
#1 · Zasláno: 16. 6. 2014, 14:03:19
dobrý den,
potřeboval bych poradit, ve výstup mam formuláři mam vytvořenou množinu a podle ní bych pořeboval vytvořit dotaz udělal jsem si malý skript $druhy = array(); foreach ( $_POST['druh_oken'] as $value ) { $druhy [] = "druh_oken LIKE '%$value%'"; } $sql=$mysql->arrays("SELECT * FROM dodavatele WHERE okres = '$_POST[okres]' AND aktivni = '0' AND " . implode ( ' OR ', $druhy ) . " ORDER BY rezim, vlozeno DESC, koeficient"); tak jsem se chtěl zeptat jak by šlo aby místo AND šlo Dát OR nebo kde dělám chybu |
||
jenikkozak Profil |
Operátor
AND (logický součin) má přednost před operátorem OR (logický součet), stejně jako má násobení přednost před sčítáním.
Buď použij závorky, nebo (lépe) využij klíčové slovo IN : SELECT * FROM dodavatele WHERE okres='$_POST[okres]' AND aktivni=0 AND druh_oken IN ('jeden druh okna', 'druhý druh', 'třetí druh') ORDER BY rezim, vlozeno DESC, koeficient .
Nezapomeň na escapování. |
||
divady Profil |
#3 · Zasláno: 16. 6. 2014, 15:27:09
jenikkozak:
jenže je to napsane v množině a samo to takže bychto udělal nějak tak to druh oken IN (" . implode ( ' , ', $druhy ) . ") musim přeci udělat aby se množina vypsalaa nevyskakovalo array? |
||
jenikkozak Profil |
#4 · Zasláno: 16. 6. 2014, 15:34:36
Ano, funkci
implode využiješ. V tom příkladu jsem ti chtěl ukázat, jak se používá klíčové slovo IN .
|
||
divady Profil |
#5 · Zasláno: 16. 6. 2014, 17:20:47
jenikkozak:
ja jsem s funkci in nikdy nepracoval takže se musí dat nazačátek pred selec a před tu množinu vid? jinak děkuji moc za pomoc |
||
jenikkozak Profil |
#6 · Zasláno: 16. 6. 2014, 20:24:47
Operátor IN se používá stejně jako jakýkoliv jiný porovnávací operátor:
<?php $sql=$mysql->arrays("SELECT * FROM dodavatele WHERE okres = '$_POST[okres]' AND aktivni = '0' AND druh_oken IN (" . implode ( ', ', $_POST["druhy_oken"] ) . ") ORDER BY rezim, vlozeno DESC, koeficient"); |
||
divady Profil |
#7 · Zasláno: 17. 6. 2014, 00:42:37
jenikkozak:
ted nevím jestkli jsme si dobře rozumněli potřeboval bych udělat dotaztak aby to fungovalo jako OR příklad paltí podmínka 1 neo podmínka 2. už jsem se na tom zasekl docela dost dlouho a nikde jsem nenašel správný řešení. a ani to tvoje nefungovalo, fungovalo jako funkce AND |
||
jenikkozak Profil |
#8 · Zasláno: 17. 6. 2014, 11:05:18
Ten dotaz vytáhne z databáze ty záznamy, které mají uvedený zadaný okres a zároveň jako aktivní mají nastavenou nulu a zároveň jako druh oken je uložena jedna z odeslaných hodnot prvku druhy_oken odeslaného metodou post. Představoval sis to jinak? Pokud jsem špatně pochopil tvůj požadavek, prosím, popiš lépe strukturu své databáze.
|
||
divady Profil |
#9 · Zasláno: 17. 6. 2014, 11:10:49
to vím co dělá ten sql dotaz, jen pouze když do dotazu přidám IN jak jsi mi poradil, tak to bohužel nic nenajde, ten sql dotaz funguje až na tokdyž ta přidám IN s tim implode.
|
||
Časová prodleva: 10 let
|
0