Galibarda

Veysel Bozdoğanoğlu

Archive for the ‘mysql’ Category

mysql de verinin bir kısmı çekmek – SUBSTR()

without comments

Özellikle WordPress gibi sistemler, veri tabanında bulunun uzun uzun yazıların bir kısmını özet olarak gösterirler. Veritabanınaki tüm veriyi çekip bunu php ile kırpmak ta mümkün tabi . Eğer veri uzunsa bu ciddi performans kaybına sebep olacaktır.

Gelelim mysql de verinin bir kısmını almamızı sağlayan fonksiyona

SUBSTR(tabloadi, baslangicKarakter, bitisKarekter)

sitemde kullandığım örnek bir sql sorgusu şu şekile

$sql =”SELECT `galibarda_gonderiId`,`galibarda_gonderiYazarId`,`galibarda_gonderiBaslik`,
`galibarda_gonderiUrl`,SUBSTR( `galibarda_gonderiIcerik` , 1, 10 )FROM `galibarda_gonderi` “.’ WHERE ‘.ONEK.”gonderiTuru = ‘”.$gonderiTuru.”‘ ” ;

bu kod gonderilerin icerik sutunundan 1 den 10 uncu karaktere kadar olan kısmını alıyor..

Diğer bazı Mysql Fonksiyonları ise şu şekilde

Tablo kaynak : http://turgaysahtiyan.com/

Function Açıklama Kullanım Sonuç
ASCII Verilen karakterin ascii karşılığını verir. ASCII(‘D’) 68
CHAR Verilen ascii kodun char karşılığını verir. CHAR(68) D
CHARINDEX Verilen ilk string in ikinci string de ki başlama posizyonunu verir. Bulamazsa 0 döndürür. CHARINDEX(‘turgay’, ‘Naber turgay sahtiyan’) 7
LEFT Verilen string in baştan verilen karakter kadar olan kısmını döndürür. LEFT(‘turgay’,2) tu
LEN Verilen string in uzunluğunu verir. LEN(‘turgay’) 6
LOWER Verilen string i küçük harflere döndürür. LOWER(‘TuRGaY’) turgay
LTRIM Verilen string in solunda ki boşlukları siler. LTRIM(‘  turgay’) turgay
REPLACE String değiştirmek için kullanılır. REPLACE(‘turgay’,'rg’,'aa’) tuaaay
REPLICATE Verilen string i verdiğiniz sayı kadar yanyana yazar. REPLICATE(’1′,3) 111
REVERSE Verilen string i ters çevirir. REVERSE(‘turgay’) yagrut
RIGHT Verilen string in sondan verilen karakter kadar olan kısmını döndürür. RIGHT(‘turgay’,2) ay
RTRIM Verilen string in sağında ki boşlukları siler. LTRIM(‘turgay  ‘) turgay
SPACE Verilen sayı kadar boşluk karakteri döndürür. ‘turgay’+ space(2)+ ‘sahtiyan’ turgay  sahtiyan
STR Verilen double sayıyı string e dönüştürmeye yarar. 3 parametresi vardır.1.double sayı,2.string in toplam uzunluğu,3.decimal kısmın uzunluğu STR(123.45, 6, 1) 123.5
STUFF 2. parametre de verilen sayı kadar kısmı 1.string den siler ve onun yerine 2.string i ekler. STUFF(‘turgay’, 2, 3, ‘sahtiyan’) tsahtiyanay
SUBSTRING Verilen string den belli bir kısmı almaya yarar. SUBSTRING(‘turgay’, 2, 3) urg
UPPER Verilen string i büyük harflere döndürür. UPPER(‘TuRGaY’) TURGAY

Ayrıca mysql string fonksiyonları
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

Written by waycell

Aralık 6th, 2011 at 12:10 am

Posted in mysql

php mysql türkçe karakter sorunu

without comments

En son söylemem gerekeni en başta söyleyim. Bu makaleyi okuyorsanız muhtemelen benim aşağıda anlatacağım ayarları yapmış ve hala sonuç alamamışsınızdır. Aslında ne php nin ne de mysql in türkçe karekter sorunu yok.  Ayarları yaptınız ve hala düzelmediyse sorun editorunuz kodlama biçimindedir. Bu sorunu çözmek içik kullandığınız metin editorunun varsayılan kodlamasının utf-8 withou BOM yada türkçesi bom suz utf-8 olarak ayarladığınızdan emin olun. Bom suz ayarlayın ki, ilerde bir de çerez-oturum sorunu yaşamayasınız diye.

Gelelim ayarlara..

1-)Browser ayarı..

Bu ayar aslında en basittidir. web siteniz html kodlarına

<meta content=”text/html; charset=utf-8″ http-equiv=”content-Type”>

2-)Mysql Ayarı

a-)Öncelikle mysql de veritabanı oluştururken mysql in karakter setini UTF-8_general_ci yapın.

php Mysql Türkçe Karekter Sorunu

php Mysql Türkçe Karekter Sorunu

 
b-)Klasik bir php mysql bağlantı kodu şu şekildedir

mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("Could not connect: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    printf("ID: %s  Name: %s", $row["id"], $row["name"]);
}

mysql_free_result($result);

 

bu kodun select_db kısmından sonra yani veritabanı tablo adı seçildikten sonra aşağıdaki kodu ekleyin

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");

Şu şekilde görünmeli

mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("Could not connect: " . mysql_error());
mysql_select_db("mydb");
//sonradan eklenen kodlar
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    printf("ID: %s  Name: %s", $row["id"], $row["name"]);
}

mysql_free_result($result);

Tüm bunları uyguladım ama hala sorun yaşıyorum diyorsanız makalenin en başına geri dönüp metin editorunuzle ilgili ayarları yapın.
Eğer aynı anda benim gibi birden fazla editor kullanıyorsanız muhtemelen yine sorun yaşayacaksınız.
Kolay gelsin.

Written by waycell

Aralık 5th, 2011 at 11:52 pm

Posted in mysql,PHP