Autor Zpráva
divady
Profil
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%'";

  }
a pak už jen dosazuji do sql dotazu
 $sql=$mysql->arrays("SELECT * FROM dodavatele WHERE   okres = '$_POST[okres]' AND aktivni = '0' AND " . implode ( ' OR ', $druhy ) . " ORDER BY rezim, vlozeno DESC, koeficient");
kdy místo OR Dám AND tak všechny ostatní podmínky fungují
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
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
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
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
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
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
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0