Şimdi Ara

pdo ile tablo da listeleme yaparken Türkçe harf listeleme sorunu ?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
9
Cevap
0
Favori
750
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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







  • 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ı >
  • 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ı >
  • 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ı >




  • 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ı >




  • 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ı >




  • 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ı >
  • 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ı >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.