Zdravim chtel jsme se zeptat kde je v tomto dotazu chyba nemuzu prijit na to jak do nej dat zavorky aby to cele fungovalo
SELECT id from fotky WHERE vlozil=1 and id_kategorie='13' and doporucujeme='1' or popis='%křížová cesta%' or popis='%minaret%' or popis='%náhrobek%' ORDER BY id desc LIMIT 0, 16
A jde my hlavne o to od prvniho or tato cast je generovana pomoci pole takze za sebe dava vyrazy or ale nedari se my to spustit aby to vyhledavalo fotky napriklad slovne vyber id fotek tak aby vlozil=1 id_kategorie=13 a pokud je nekde v popisu (ktery je strukturovan napr hory,lesy.louky, ) napr hory nebo lesy nebo jezera nbeo cokoli srat my jeho id.
To co mam anhore my vrazi 0 i kdyz vim ze zaznam s napr křížová cesta tak je 100% a nekolikrat
Moc dekuju za radu
Doporučuji, abys ten skript odladil v phpMyAdminovi. Z PHP si nechej SQL dotaz zobrazit (s naplněnými proměnnými) a následně to prožeň phpMyAdminem. Uvidíš buď konkrétní chybu, nebo výsledek.
No v php adminu mi to pise
#1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_unicode_ci,COERCIBLE) for operation '='
to opravdu presne nevim jak opravit
Zkontroluj si nastavení kódování v databázi a v připojení k databázi. Obě by měla být stejná.
Jo a přepsal jsi ta = na LIKE? Dej sem dotaz, který ti hodil tu chybu.
pro kódování je dobry dat příkaz
@mysql_query("SET NAMES Latin2");
hned po připojení k db. ;-) ... todle je pro iso-8859-2
SELECT id from fotky WHERE vlozil=1 and id_kategorie='13' and doporucujeme='1' or popis like '%křížová cesta%' or popis like '%minaret%' or popis like '%náhrobek%' ORDER BY id desc LIMIT 0, 16
to je ten dotaz
No a jakou chybu ti to hlásí teď?
Minimalne bys mel upravit syntaxi (hodnoty jsou v uvozovkach, kdyz napises "1" bez uvozovek, je to "hodnota zaznamu na prvnim sloupci".). Kdyz mas takovou podminku, neni od veci si to patricne ozavorkovat, aby bylo patrne, k cemu vsemu se operatory vztahuji.
SELECT id
FROM fotky
WHERE vlozil='1' AND
id_kategorie='13' AND
doporucujeme='1' OR
popis LIKE '%křížová cesta%' OR
popis LIKE '%minaret%' OR
popis LIKE '%náhrobek%'
ORDER BY id DESC
LIMIT 0, 16
Text dotazu (tedy ten skript) musi mit stejne kodovani, jako mas nastavene collation u textovych sloupcu (sloupec 'popis'). Pokud pouzivas dejme tomu windows-1250, mel texty do db ukladat v kodovani cp1250. Pokud to mas jinak, poohledni se po mysql funkci CONVERT().
http://dev.mysql.com/doc/refman/4.1/en/charset-convert.html
podle priority operatoru v mysql je vyraz vyhodnocovan takto:
(((((((vlozil='1') AND ((id_kategorie='13')) AND (doporucujeme='1')))) OR (popis LIKE '%křížová cesta%')) OR (popis LIKE '%minaret%')) OR (popis LIKE '%náhrobek%'))
takze jestli to dobre chapu, tak tam ty zavorky vlastne nejsou ani potreba.