Arama butonu
Bu konudaki kullanıcılar: 1 misafir
7
Cevap
820
Tıklama
0
Öne Çıkarma
pdo ile tablo da listeleme yaparken Türkçe harf listeleme sorunu ?
T
8 yıl
Binbaşı
Konu Sahibi

merhaba

utf8-genaral-ci ile tabloları oluşturdum.. sorunsuz Türkçe ekleme-düzeltme yapıyorum... buraya kadar bişi yok.. ama iş table ile listeleme yaptırmak istediğimde
A dan sonra Ş-İ-Ü-Ö-Ç sonrasında B listeniyor
bağlantı olarak

$DB_host = "localhost";
$DB_user = "root";
$DB_pass = "";
$DB_name = "portal";

try
{
$DBcon = new PDO("mysql:host={$DB_host};dbname={$DB_name}",$DB_user,$DB_pass);
$DBcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
echo "ERROR : ".$e->getMessage();
}


bu şekilde kullandığımda hem kayıt hemde listelerken sorun çıkmıyor... ama bu bağlantıya utf-8 i nereye eklersem ekleyim listelerken sorun çıkıyor.

listeleme kodumda şu şekilde

<?php
$stmt = $DBcon->prepare("SELECT * FROM arac00 where arac_act='1' ORDER BY arac_adi asc");
$stmt->execute();
?>
<center>
<table width="600px">
<tr class="tablobaslik">
<th title="Aracın Plakası">Araç Plakası</th>
<th title="Aracı Kullanan Şöför Adı" height="20px">Araç Şöförü</th>
<th title="Hareket Tipleri" width="80px">İşlem</th>
</tr>

<?php
if($stmt->rowCount() > 0)
{
while($row=$stmt->FETCH(PDO::FETCH_ASSOC))
{
?>
<tr>
<td width="150"><center><?php print($row['arac_plaka']); ?></center></td>
<td><?php print($row['arac_adi']); ?></td>


diye gidiyoru...
istediğim şu... küçük veya büyük harf olarak kullandığımız şekilde sıralamayı yaptırmak için kodu düzeltebilir misiniz ?

extra sorum....
tüm kayıt-update işleminde ilk harfi Türkçe büyük gerisi Türkçe küçük harf için örnek varmı ?

acemi olduğum için yapacağınız açıklamayı nasıl kullanacağımı bilememe durumu çok yüksek. kod üzerinde düzletme yaparak yardımcı olmanızı tercih ederim

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



G
7 yıl
Teğmen

listelerken şunu kullan
iconv("ISO-8859-1", "UTF-8", $text);

veritabanındaki listeli latin1_swedish_ci yap. gerisi zaten otomatik olarak düzelir. ha bir de html dosyanın içerisindeki charset kısmını iso veya windows-1254 yap.



< Bu ileti DH mobil uygulamasından atıldı >

V
7 yıl
Onbaşı

En üste şu php kodunu yazıp dener misiniz.



header('Content-Type: text/html; charset=utf-8');





İlk harf büyütmek için ucfirst ve ucwords fonksiyonlarını kullanabilirsiniz





echo ucfirst('alper naber'); //Alper naber yazar

echo ucwords('alper naber'); //Alper Naber yazar

echo strtoupper('alper naber'); //ALPER NABER yazar

echo strtolower('Alper NABER'); // alper naber yazar



< Bu ileti mobil sürüm kullanılarak atıldı >

T
7 yıl
Binbaşı
Konu Sahibi

bu konuyu okuyan ve destek olan herkese çok teşekkür ederim.. umarım benim gibi benzer sorunları yaşayanlara çare olur

öncelikle sanal pc de xampp ile bir host yapısı kullanım kişisel ihtiyaçlarım için kod yazmaya.. daha da doğrusu başkasının yazdıklarını kendime modifiye etmeye çalıştığımı tekrarlayım... çok fazla destek alamasam da devam ediyorum

sorunu dün itibari ile çözdüm ama ....
öncelik... my.ini dosyanız içindeki

## UTF 8 Settings
init-connect='SET NAMES utf8'
collation_server=utf8_general_ci
character_set_server=utf8
#skip-character-set-client-handshake
#character_sets-dir="/xampp/mysql/share/charsets"

satırı bulun... default ayarlarında bu değerler maalesef kapalı idi ve ben 3 satırı aktif ettim ama ne işe yaradıklarını doğrusunu söylemek gerekiyor ise bilmiyorum... son 2 si ne işe yarıyor onu da bilmiyorum ama sonuç alınca dokunmadım

bunu da netde dolaşırken bir arkadaşımızın şu ifadesinden yola çıktım....
ü harfi birçok dilde mevcut.. ama her dil de sırası farklı.. dolayısı ile utf8-general_ci ile sorunsuz görüntüleme yaparken...... sorunsuz sıralama olmaz.. çünkü almanca da Türkçe de ve isveçce gibi dillerde farklı yer alır...
yani sıralama yapacak ve yaptıracak arkadaşlar array ile sorunu çözmek yerine maalesef
mysql deki db dil değerini latin5_turkish seçmesi gerekiyor.. aksi halde sıralama sorunu veya fonksiyonlar kullanmak gerekebiliyor.. kesin öyledir demiyorum.. sonuçda coder değilim.
ama ben db yi ve tablo yu latin5 e çevirince işlem sorunu gitti.. latin1_swedish_ci yapsa idim ülkemize özel olan bazı harflerin sıralaması doğru olur mu bilmiyorum ama sonuçda latin5 ile sonucu doğru aldım... denemedim... o ülkenin kod sıralaması farklı diye düşünerek... yinede çok teşekkür ederim paylaşımın için....

eski kayıtlar... maalesef .... eski kayıtlar bozuluyor... eğer kendiniz kod yazıp döngü ile utf8 den latin5 e update yaptırabilirseniz ne ala.. benim gibi acemi iseniz... sil baştan....

bu arada... @vona70 arkadaşım.. db ve dil ile uğraşırken deneyemedim... malum...

Türk koderlarından rica ediyorum....
lütfen acemiler için temel örnekleri source olarak paylaşın
ve benim gibi acemilerin sorusuna var olan kodu düzelterek yardımcı olun.
herkes ekmek derdinde.. sizin mesleğiniz o ama herşey için sürekli birelerine .....

ben 3-5 tane farklı örneği alıp birleştirmeye değiştirmeye çalışıyorum ve üzülerek belirtiyorum.. bu örnekleri aldığım insan lar %90 itibari ile hintliler oluyor...
ülkemizde paylaşım... hatta soruya cevap yazan sayısı da oldukça az bile değil.. yok seviyesinde

mesleğinizde başarılar...



< Bu ileti DH mobil uygulamasından atıldı >

F
7 yıl
Yüzbaşı

my.ini dosyasi yerine su sekilde de bu sorunu cozebilirsin;



$dbHandle = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf8", $dbUser, $dbPass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));


Bu sorunun Mysqli api icin cozumu;

$con = mysqli_connect(veritabani baglanti bilgileriniz);

mysqli_set_charset($con, "utf8");


Onemli nokta veritabanini olustururken karakter set ve collationu utf8_general_ci olarak belirlemek.


https://dev.mysql.com/doc/refman/5.7/en/charset-database.html


Phpmyadminde veya komut satirinda mysqle baglandiktan sonra asagidaki sql sorgusuyla veritabani olusturun.


CREATE DATABASE veritabani_adi CHARACTER SET utf8 COLLATE utf8_general_ci;


Bunu yapmayi unuttuysaniz sonradan tekrar ayarlayabilirsiniz.


ALTER DATABASE veritabani_adi CHARACTER SET utf8 COLLATE utf8_general_ci;

Veritabanini utf8 olarak ayarladiktan sonra, mevcut tablolariniza da bu islemi uygulamaniz gerekli.


ALTER TABLE tablo_adi CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;


Eğer fazla sayida tablonuz varsa, bu degisikligi phpmyadminden sql sorgusu ile degil de arayüz araciligiyla yaparsaniz, phpmyadmin size butun tablolari da utf8 yapiyim mi abi? Diye soruyor olmasi lazim. Bu sekilde hatirliyorum.





< Bu mesaj bu kişi tarafından değiştirildi FunctionDie -- 8 Mart 2018; 12:25:21 >

< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
T
7 yıl
Binbaşı
Konu Sahibi

quote:

Orijinalden alıntı: NoSky

my.ini dosyasi yerine su sekilde de bu sorunu cozebilirsin;



$dbHandle = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf8", $dbUser, $dbPass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));


Bu sorunun Mysqli api icin cozumu;

$con = mysqli_connect(veritabani baglanti bilgileriniz);

mysqli_set_charset($con, "utf8");


Onemli nokta veritabanini olustururken karakter set ve collationu utf8_general_ci olarak belirlemek.


https://dev.mysql.com/doc/refman/5.7/en/charset-database.html


Phpmyadminde veya komut satirinda mysqle baglandiktan sonra asagidaki sql sorgusuyla veritabani olusturun.


CREATE DATABASE veritabani_adi CHARACTER SET utf8 COLLATE utf8_general_ci;


Bunu yapmayi unuttuysaniz sonradan tekrar ayarlayabilirsiniz.


ALTER DATABASE veritabani_adi CHARACTER SET utf8 COLLATE utf8_general_ci;

Veritabanini utf8 olarak ayarladiktan sonra, mevcut tablolariniza da bu islemi uygulamaniz gerekli.


ALTER TABLE tablo_adi CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;


Eğer fazla sayida tablonuz varsa, bu degisikligi phpmyadminden sql sorgusu ile degil de arayüz araciligiyla yaparsaniz, phpmyadmin size butun tablolari da utf8 yapiyim mi abi? Diye soruyor olmasi lazim. Bu sekilde hatirliyorum.

arkadaşım

tabloları oluştururken de field tanımlarında da baktığımda zaten sorun yok idi utf8 için
Türkçe harf yazma ve kayıt da sorunum yok idi...
sorun... verileri sıralama yaparken oldu... dolayısı ile A dan sonra Ş harfinin gelmesini engelleyemedim... çareyi de yukarda bahsettiğim şekilde buldum

maalesef alternatif bir yol bulamadığım için bu şekilde şimdilik tercihimdir... alter table ile utf8 leri latin5 e çevirmeyi denemedim... belki kayıtları sıfırlamak ile uğraşmak gerekemez idi ....



< Bu ileti DH mobil uygulamasından atıldı >

S
7 yıl
Onbaşı

bu seferlik gerek yok demişsiniz, ancak ileriki çalışmalarınızda eğer bir çok dil kullanacaksanız utf8_general_ci seçmenizde fayda var, böylece Almanca mı girmişler, Arapça mı diye bir derdiniz kalmaz



< Bu ileti DH mobil uygulamasından atıldı >
Bu mesaja 1 cevap geldi.
T
7 yıl
Binbaşı
Konu Sahibi

quote:

Orijinalden alıntı: SelcAdmirer

bu seferlik gerek yok demişsiniz, ancak ileriki çalışmalarınızda eğer bir çok dil kullanacaksanız utf8_general_ci seçmenizde fayda var, böylece Almanca mı girmişler, Arapça mı diye bir derdiniz kalmaz

utf8 artık günümüzün bir vaz geçilmezi sizde haklısınız

utf8 seçiminde her dil kaydı ve okunması sorunsuz gelebiliyor.. ama benim gibi asc ve desc yapanların bu durumu array sız çözme durumu var ise örnek ile paylaşmanız mümkün mü ?

son dönemde birçok forumda sizin gibi utf8 olarak öneri çok fazla... ama sıralama durumu nasıl yapılır ?



< Bu ileti DH mobil uygulamasından atıldı >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.