Autor Zpráva
deader
Profil *
Zdravím, mám na svých připravovaných stránkách vyhledávání, které prohledává mysql tabulku fórum. Potřeboval bych, aby to nerozlišovalo velikost písmen.
Zatím to mám takhle:
$vysledek = mysql_query("SELECT * FROM forum WHERE MATCH(text) AGAINST('".$search2."') OR MATCH(jmeno) AGAINST('".$search2."') ORDER BY (2 * MATCH(text) AGAINST('".$search2."') + MATCH(jmeno) AGAINST('".$search2."')) LIMIT ".$z1.",".$z2, $conn);

Moc děkuji za odpověď.
xlifer
Profil
Co takhle?

php:
$search = StrToLower($search);

mysql:
$vysledek = MySQL_Query("SELECT * FROM tabulka WHERE LOWER(pole) LIKE '%".$search."%'");

nebo primo mysql:
$vysledek = MySQL_Query("SELECT * FROM tabulka WHERE LOWER(pole) LIKE '%".StrToLower($search)."%'");
TomášK
Profil
xlifer
Takhle pokud možno ne. LIKE na místě fulltextu nemá co dělat. Převedení na malá písmena by samo o sobě fungovat mohlo, ale preferoval bych řešení pomocí collate, viz http://dev.mysql.com/doc/refman/5.0/en/charset-collate.html.

Je potřeba zvolit kolaci, která má na konci '_ci' (case insensitive) a je potřeba nastavit pro daný sloupec (případně i tabulku/databázi). Podobný problém byl řešený tu: http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=28&topic=93919
deader
Profil *
Strtolower tam mám teď taky, jenže jsem to sem nekopíroval, protože to mi třeba na výraz "sPuStiL" vyhledá výsledek "spustil", ale nevyhledá "Spustil". Zkusím tedy to collate.
deader
Profil *
Vyskytl se problém, udělal jsem to takhle:

$vysledek = mysql_query("SELECT * FROM forum WHERE text LIKE _latin2 '".$search."' COLLATE latin2_general_ci  LIMIT ".$z1.",".$z2, $conn);


U sloupce text jsem nastavil porovnávání latin2_general_ci. Vrací to null na "spustil" i "Spustil".
deader
Profil *
Zapomněl jsem na %. S tím to funguje. Teda takhle:
$vysledek = mysql_query("SELECT * FROM forum WHERE text LIKE _latin2 '%".$search."%' COLLATE latin2_general_ci LIMIT ".$z1.",".$z2, $conn);
Toto téma je uzamčeno. Odpověď nelze zaslat.