Jump to content
php.lv forumi

Meklēšana pēc lielajiem/mazajiem latviešu burtiem


freak

Recommended Posts

Man ir DB, kur dati glabājas utf8_general_ci kodingā.

 

Problēma tāda, ka veicot meklēšanu šajā DB, neatrod, ja meklē pēc lielajiem, burtiem, ja tas ir latviešu burts ar garumzīmi vai mikstinājuma zīmi (Ā, Ē

Š, Ķ)

 

Piemēram, ja DB ir vārds Čiekurs un meklē čiekurs, tad neatrod!

Ja ir Lapsa un meklē lapsa, tad atrod.

 

Kā šo novērst?

Link to comment
Share on other sites

utf8_latvian_ci

 

no! tas ir vēlams, bet nebija svarīgi

 

1) php failu, kurā tev ir tas SELECT, saglabā kā UTF-8 bez BOM (sameklē savā koda redaktorā pie "save as", kur var norādīt faila kodējumu)

 

2) uzreiz, kad izveido savienojumu un izvēlies db, izsauc

mysql_query('SET NAMES utf8');

tikai pēc tam izpildi SELECT, un ja tajā tabulā patiešām būs utf8 dati, tad arī lielie/mazie lv burti selektēsies pareizi

 

kr4 simple example

function dbconn($sSrv, $sDb, $sUsr, $sPw) {  // inicializē mysql connection
@mysql_connect($sSrv, $sUsr, $sPw) or exit('<b>mysql_connect() error ' . mysql_errno() . ':</b> ' . mysql_error());
mysql_select_db($sDb) or exit('<b>mysql_select_db() error ' . mysql_errno() . ':</b> ' . mysql_error());
go('SET NAMES utf8');
}
function go($sSql) {  // izpilda mysql query
$h = mysql_query($sSql) or exit('<b>mysql_query() error ' . mysql_errno() . ':</b> ' . mysql_error() . '<br /><b>query:</b> ' . substr($sSql, 0, 1000));
return $h;
}
function qs($s) {return is_null($s) ? 'NULL' : "'" . mysql_real_escape_string($s) . "'";}  // query str - sagatavo tekstu (any string) ievietošanai mysql query

function esql($sSql) {  // echo sql & its returned data
echo $sSql . '<br />';
$h = go($sSql);
while ($r = mysql_fetch_row($h)) echo implode(' | ', $r) . '<br />';
echo '<br />';
}

dbconn('localhost', 'test', 'root', '123');

go('DROP TABLE IF EXISTS t');
go('CREATE TABLE t (s varchar(20)) ENGINE=MyISAM COLLATE=utf8_general_ci');
go('INSERT t (s) VALUES (' . qs('asdf') . '),(' . qs('āšņ') . '),(' . qs('Čiekurs') . ')');

esql('SELECT * FROM t WHERE s LIKE ' . qs('Ā%'));
esql('SELECT * FROM t WHERE s LIKE ' . qs('č%'));

sel_lv_1265722895.png

Edited by 2easy
Link to comment
Share on other sites

vai vsp case sensitive arī ir?

izmēģināju utf8_general un utf8_general_cs, bet tie fail ;)

 

btw, nupat googlē ierakstīju "mysql like", un php.lv forums bija jau 4. rezultātā! baigi labais google reitings :)) laikam labi seo speciālisti te ir piestrādājuši ^^

Edited by 2easy
Link to comment
Share on other sites

  • 3 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...