Autor | Zpráva | ||
---|---|---|---|
lenkali Profil * |
#1 · Zasláno: 20. 2. 2008, 10:12:59
ERROR 1267 (HY000): Illegal mix of collations (cp1250_czech_cs,IMPLICIT) and (la
tin1_swedish_ci,COERCIBLE) for operation '=' tohle se vypíše, když hledám podle jména v databázi jméno vepsiuju do <input type="text" name="jmenokamarada" size="38"></p> a nasledne hodnotu vkladam do podminky SELECT, jenze mi to vypisuje ERROR, prosim o radu |
||
lenkali Profil * |
#2 · Zasláno: 20. 2. 2008, 10:16:41
třeba když napíšu jméno : Čenschý , to nahlásí chybu a přitom v databázi takové jméno je a dokonce ve správném formátu cp1250_czech_cs
|
||
lenkali Profil * |
#3 · Zasláno: 20. 2. 2008, 10:23:59
Už se tady tento problém řešil, prosím o vysvětlení, co znamená zapomenout ty LOWER, jak by to potom vypadalo v mém případě?
tento text kopiruju z jineho vlakna v teto diskuzi: $query = mysql_query("select * from produkty WHERE ( LOWER(nazev) LIKE '%".mb_strtolower($hledamtext)."%' OR LOWER(search) LIKE '%".mb_strtolower($hledamtext)."%' OR LOWER(popis) LIKE '%".mb_strtolower($hledamtext)."%' ) AND sklad >= '1' order by nazev ASC") or DIE(mysql_error()); Např. pokud vyhledávám slovo "červené" a v DB ve sloupci nazev mám "auto je červené", tak mi to nic nenajde. Kajman_ Zasláno: 8.1.2008 20:24:10Citovat A když zapomenete na všechny ty lower a necháte jen na těch sloupečcích porovnání končící na _ci, tak to také nejde? A máte to červené auto skladem? Falcon Zasláno: 8.1.2008 20:33:48Citovat A když zapomenete na všechny ty lower Tak teď to funguje skvěle.Bylo to těma lower.Moc děkuji. Moje vyhledavani, jak mam yaimplementovat ten predeslz kod bey LOWER, prosim? Select * from kamaradi where jmeno=$_REQUEST['jmenokamarada]; |
||
lenkali Profil * |
#4 · Zasláno: 20. 2. 2008, 10:36:58
snažím se to upravovat ale ani takto to nefunguje:
(SELECT * from kamaradi where jmeno LIKE '%".mb_strtolower($_REQUEST['jmenokamarada'])."%' ); |
||
lenkali Profil * |
#5 · Zasláno: 20. 2. 2008, 10:51:57
Jméno Čenschý mi to najde jen kdyz ho do databaze vlozim jako:
"censchy" ..tedy s malými písmeny a bez diakritiky....... a vyhledávat dám opět "censchy" jen tak mi to najde Jenže jméno může být vloženo jako Čenschý, ale i jako čenschý a při vyhledávání může být zadáno čenschý nebo Čenschý, jak to prosím mám napsat do selectu? (SELECT * from kamaradi where jmeno LIKE '%".mb_strtolower($_REQUEST['jmenokamarada'])."%' ); už si nevím rady |
||
lenkali Profil * |
#6 · Zasláno: 20. 2. 2008, 11:11:30
Uz jsem to upravila takto>
$jmenokam=$_REQUEST['jmenokamarada']; SELECT * from kamaradi where jmenokamarada LIKE '%".mb_strtolower($jmenokam)."%' nehlasi to konecne chyby, ale nemuze nic najit....proc prosim, poradte? |
||
lenkali Profil * |
#7 · Zasláno: 20. 2. 2008, 11:14:05
Tak chyby to porad hlasi...
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\mojedatabaze\vypis.php on line 362 Nebyly nalezeny žádné záznamy :o( |
||
lenkali Profil * |
#8 · Zasláno: 20. 2. 2008, 11:15:58
Najde mi to zapis jen když je bez diakritiky a jen s malými písmeny, tedy "censchy" ale nenajde to "Čenschý"
|
||
lenkali Profil * |
#9 · Zasláno: 20. 2. 2008, 11:40:45
Ještě jsem našla tohle v diskuzi:
$hledany = addslashes(strtolower($hledany)); $sql = "SELECT id FROM tabulka WHERE LOWER(retezec) LIKE '$hledany'"; asi to neumím zaimplementovat do svého kódu, prosím o pomoc, potřebuju v DB vyhledat slova jako Čenský, Novák, Mičůnek, Zařadil, atd vyhledává mi to jen kdyz ty jmena jsou v databazi ulozeny jako: ---censky novak micunek zaradil A vyhledavat je dam opet jen jako: ---censky novak micunek zaradil jméno vepsiuju pro vyhledávání podle jména do <input type="text" name="jmenokamarada" size="38"></p> A vyhledat se to snažím podminkou: (SELECT * from kamaradi where jmeno LIKE '%".mb_strtolower($_REQUEST['jmenokamarada'])."%' ); prosim Vas moc o pomoc |
||
Kajman_ Profil * |
#10 · Zasláno: 20. 2. 2008, 11:41:48
Nezapomněla jste na set names? Případně jaké porovnání (tedy i kódování) máte u toho sloupečku, ve kterém vyhledáváte?
|
||
lenkali Profil * |
#11 · Zasláno: 20. 2. 2008, 11:43:44
Děkuji za reakci,
set names mám všude mysql_query("SET NAMES 'cp1250'"); |
||
lenkali Profil * |
#12 · Zasláno: 20. 2. 2008, 11:48:21
Ve sloupečku mám
varchar(100) cp1250_czech_cs |
||
Tomasss Profil * |
#13 · Zasláno: 20. 2. 2008, 11:59:15
Jde o dvě věci. Jednak velikost písmen a jednak vyřešení diakritiky.
Velikost písmen je triviální: Uprav dotaz takto: SELECT * from kamaradi where LCASE(jmenokamarada) LIKE '%".mb_strtolower($jmenokam)."%' Diakritika je o něco náročnější, s tím neporadím. |
||
lenkali Profil * |
#14 · Zasláno: 20. 2. 2008, 12:08:00
Myslím, že Tome Tvůj kod dělá to, že
když vložím do políčka to co chci vyhledat, třeba "Mickal" tak to zmenší písmenka na "mickal" a prave takove jmeno se vsemi malymi pismenky to hleda v databazi.... ale co kdyz je v databazi "Mickal" .... s velkym M to zase nenajde... |
||
Tomasss Profil * |
#15 · Zasláno: 20. 2. 2008, 12:10:41
Abych to upřesnil.
používám na vlastním webu toto: SELECT * from kamaradi where LCASE(jmenokamarada) LIKE LCASE('%".$jmenokam."%') a nemám problém |
||
lenkali Profil * |
#16 · Zasláno: 20. 2. 2008, 12:21:59
Tomasssi, děkuji moc, funguje to, velikost písmen to už v pořádku bere u slov bez diakritiky, první problém vyřešen, máš pravdu, Tvůj příkaz funguje, děkuji moc.
funguje: SELECT * from kamaradi where LCASE(jmenokamarada) LIKE LCASE('%".$jmenokam."%') Prosím ještě o radu s diakritikou |
||
Tomasss Profil * |
#17 · Zasláno: 20. 2. 2008, 12:35:41
diakritika.. něco mě napadlo.
Pokud je ta aplikace teprve ve stadiu vývoje, tak bych možná udělal to, že bych měl v databázi kromě pole jmenokamarada ještě pole jmenoprohledani a do něj bych při vkládání vložil jméno převedené na lcase a očesané o diakritiku. Udělat toto na úrovni php není problém. Pak by se zjednodušil i ten dotaz na: SELECT * from kamaradi where jmenoprohledani LIKE LCASE('%".$jmenokam."%') |
||
lenkali Profil * |
#18 · Zasláno: 20. 2. 2008, 12:36:09
Když tam dám diakritiku, tak mi to vyhazuje:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result |
||
lenkali Profil * |
#19 · Zasláno: 20. 2. 2008, 12:38:01
Tomasss...ještě budu špekulovat, děkuji za Tvůj čas...
přesto pokud se ještě najde nápad, zda to není v php.ini nebo jak by se mel upravit vyber: SELECT * from kamaradi where LCASE(jmenokamarada) LIKE LCASE('%".$jmenokam."%') tak, aby to vyhledavalo i s diakritikou, budu rada, dekuji |
||
lenkali Profil * |
#20 · Zasláno: 20. 2. 2008, 12:57:25
Kdykoliv se tam objeví písmenko například "ř", tak to hlasi Warning: mysql_num_rows(): supplied argument is not a valid MySQL result
|
||
lenkali Profil * |
#21 · Zasláno: 20. 2. 2008, 13:33:53
Prosím někoho o pomoc
|
||
Tomasss Profil * |
#22 · Zasláno: 20. 2. 2008, 13:41:52
lenkali
najdi si někde příklad, jak se maji načítat data z databáze. Jestli se nepletu, tak tuhle hlášku dostáváš díky tomu, že se snažíš procházet záznamy while cyklem a přitom ti dotaz žádný záznam nevrátil. Jinak obecně: Mám skoro pocit, že sem píšeš dotazy rychleji, než sama přemýšlíš. Zkus taky něco samostatně. Toto http://www.linuxsoft.cz/article.php?id_article=344 je web, který třeba mně v začátcích s mysql dost pomohl. |
||
lenkali Profil * |
#23 · Zasláno: 20. 2. 2008, 13:49:12
Ano, Tome, to je pravda, co píšeš a chápu smysl tohoto dotazu viz Tvá věta:
se snažíš procházet záznamy while cyklem a přitom ti dotaz žádný záznam nevrátil. jenže záznam mi to nevrací z důvodu podmínky, kdy ve slově je právě gramatika, například písmenko "ř" proto mi to neumí vrátit výsledek... už se s tím trápím dlouho, příklady jsem si našla viz v celém tomto vlákně...jenže nepomohlo mi to, Tvůj příkaz funguje, jen ne na gramatiku: SELECT * from kamaradi where jmenoprohledani LIKE LCASE('%".$jmenokam."%') jedná se mi o to, jak přidat gramatiku, vše je jinak funkční, děkuji |
||
Kajman_ Profil * |
#24 · Zasláno: 20. 2. 2008, 14:10:47
A stránky máte v jakém kódování? A opravdu voláte set names mezi připojením a vyhledávacím dotazem? Moc se mi tomu nechce věřit, když mysql_error vám hlásí kolizi cp1250 a latin1_swedish_ci.
|
||
lenkali Profil * |
#25 · Zasláno: 20. 2. 2008, 14:35:38
Je možné, že to je v přepnutí poznámkového bloku na jiné kódování?
|
||
lenkali Profil * |
#26 · Zasláno: 20. 2. 2008, 14:36:04
stránky mám v cp1250
|
||
Kajman_ Profil * |
#27 · Zasláno: 20. 2. 2008, 14:46:10
Ve stránkách se definuje toto kódování spíše jako windows-1250.
|
||
lenkali Profil * |
#28 · Zasláno: 20. 2. 2008, 15:04:07
přepla jsem kódování poznámkového bloku a začalo to fungovat.....já se z toho zblázním
teď už jen detail: najde mi to "Mičůnek", když napíšu do vyhledávače: "Mičůnek" nebo "mičůnek" když ale zadám "micunek" nebo "Micunek" tak mi to nenajde "Mičůnek" používám v selectu: LOWER(jmenokamarada) LIKE '%".mb_strtolower($hledanykamarad)."%' fuguje to správně nebo se dají ošetřit obě možnosti? Prosím ještě tohle..... |
||
lenkali Profil * |
#29 · Zasláno: 20. 2. 2008, 15:18:02
zase to nefunguje...
|
||
Kajman_ Profil * |
#30 · Zasláno: 20. 2. 2008, 16:55:10
Zkuste používat nějaký lepší editor... jEdit, pspad
|
||
Téma pokračuje na další straně.
|
0