• 24-07-2024, 20:23:28
    #1
    Merhabalar,
    <?php 
    include('config.php');
    
    $request_uri = $_SERVER['REQUEST_URI'];
    $path = parse_url($request_uri, PHP_URL_PATH);
    
    
    $path = str_replace('-sarki-sozleri', '', $path);
    
    
    $path_parts = explode('/', trim($path, '/'));
    $baslik_url = end($path_parts);
    
    $wisex = ucwords(str_replace('-', ' ', $baslik_url));
    
    $sorgu = $baglanti->prepare("SELECT * FROM sarkilar WHERE baslik LIKE '%$wisex%'");
    $sorgu->execute();
    $sonuc = $sorgu->fetch(); // sorgu çalıştırılıp veriler alınıyor
    ?>
    üstteki kodda $baslik verisi Hande Yener Aci Veriyor olarak geliyor ancak veritabanındaki baslik verisi Hande Yener - Acı Veriyor normalde tüm projelerimde LIKE sql sorgusunda veri geliyordu bu projemde veri gelmiyor nerde hata yapıyorum?
  • 24-07-2024, 20:26:50
    #2
    //%90 Karakter set uyumsuzluğundan kaynaklanıyor diye düşünüyorum LIKE ile eşleştirme yaparken dikkat etmen gerekli buna


    include('config.php');

    $request_uri = $_SERVER['REQUEST_URI'];
    $path = parse_url($request_uri, PHP_URL_PATH);

    $path = str_replace('-sarki-sozleri', '', $path);

    $path_parts = explode('/', trim($path, '/'));
    $baslik_url = end($path_parts);

    $wisex = ucwords(str_replace('-', ' ', $baslik_url));

    $baglanti->exec("SET NAMES 'utf8'");
    $baglanti->exec("SET CHARACTER SET utf8");
    $baglanti->exec("SET COLLATION_CONNECTION = 'utf8_unicode_ci'");

    $sorgu = $baglanti->prepare("SELECT * FROM sarkilar WHERE baslik LIKE :baslik");
    $sorgu->bindValue(':baslik', "%$wisex%");
    $sorgu->execute();

    $sonuc = $sorgu->fetch();

    if ($sonuc) {
    // Veriler bulundu
    print_r($sonuc);
    } else {
    // Veriler bulunamadı
    echo "Veri bulunamadı.";
    }
  • 24-07-2024, 20:27:49
    #3
    LetsDuoLimited adlı üyeden alıntı: mesajı görüntüle
    //%90 Karakter set uyumsuzluğundan kaynaklanıyor diye düşünüyorum LIKE ile eşleştirme yaparken dikkat etmen gerekli buna


    .....
    Maalesef Veri Bulunamadı.
  • 24-07-2024, 20:29:16
    #4
    wisex adlı üyeden alıntı: mesajı görüntüle
    Merhabalar,
    <?php
    include('config.php');
    
    $request_uri = $_SERVER['REQUEST_URI'];
    $path = parse_url($request_uri, PHP_URL_PATH);
    
    
    $path = str_replace('-sarki-sozleri', '', $path);
    
    
    $path_parts = explode('/', trim($path, '/'));
    $baslik_url = end($path_parts);
    
    $wisex = ucwords(str_replace('-', ' ', $baslik_url));
    
    $sorgu = $baglanti->prepare("SELECT * FROM sarkilar WHERE baslik LIKE '%$wisex%'");
    $sorgu->execute();
    $sonuc = $sorgu->fetch(); // sorgu çalıştırılıp veriler alınıyor
    ?>
    üstteki kodda $baslik verisi Hande Yener Aci Veriyor olarak geliyor ancak veritabanındaki baslik verisi Hande Yener - Acı Veriyor normalde tüm projelerimde LIKE sql sorgusunda veri geliyordu bu projemde veri gelmiyor nerde hata yapıyorum?
    <?php
    include('config.php');
    
    $request_uri = $_SERVER['REQUEST_URI'];
    $path = parse_url($request_uri, PHP_URL_PATH);
    
    $path = str_replace('-sarki-sozleri', '', $path);
    
    $path_parts = explode('/', trim($path, '/'));
    $baslik_url = end($path_parts);
    
    $wisex = str_replace('-', ' ', $baslik_url);
    
    // Küçük harfe çevir ve sorguyu güncelle
    $sorgu = $baglanti->prepare("SELECT * FROM sarkilar WHERE LOWER(baslik) LIKE LOWER(?)");
    $sorgu->execute(["%$wisex%"]);
    $sonuc = $sorgu->fetch(); // sorgu çalıştırılıp veriler alınıyor
    ?>
  • 24-07-2024, 20:30:10
    #5
    Kimlik doğrulama veya yönetimden onay bekliyor.
    wisex adlı üyeden alıntı: mesajı görüntüle
    Merhabalar,
    <?php
    include('config.php');
    
    $request_uri = $_SERVER['REQUEST_URI'];
    $path = parse_url($request_uri, PHP_URL_PATH);
    
    
    $path = str_replace('-sarki-sozleri', '', $path);
    
    
    $path_parts = explode('/', trim($path, '/'));
    $baslik_url = end($path_parts);
    
    $wisex = ucwords(str_replace('-', ' ', $baslik_url));
    
    $sorgu = $baglanti->prepare("SELECT * FROM sarkilar WHERE baslik LIKE '%$wisex%'");
    $sorgu->execute();
    $sonuc = $sorgu->fetch(); // sorgu çalıştırılıp veriler alınıyor
    ?>
    üstteki kodda $baslik verisi Hande Yener Aci Veriyor olarak geliyor ancak veritabanındaki baslik verisi Hande Yener - Acı Veriyor normalde tüm projelerimde LIKE sql sorgusunda veri geliyordu bu projemde veri gelmiyor nerde hata yapıyorum?
    Selamlar.

    Veritabanı karakter türü nedir?
    Aci ile Acı aynı şey değildir, aşağıdaki konu denermisiniz?
    <?php 
    include('config.php');
    
    $request_uri = $_SERVER['REQUEST_URI'];
    $path = parse_url($request_uri, PHP_URL_PATH);
    
    $path = str_replace('-sarki-sozleri', '', $path);
    
    $path_parts = explode('/', trim($path, '/'));
    $baslik_url = end($path_parts);
    
    $wisex = ucwords(str_replace('-', ' ', $baslik_url));
    
    // Türkçe karakter dönüşümü
    $search_term = str_replace(
        ['ı', 'ğ', 'ü', 'ş', 'ö', 'ç', 'İ', 'Ğ', 'Ü', 'Ş', 'Ö', 'Ç'],
        ['i', 'g', 'u', 's', 'o', 'c', 'I', 'G', 'U', 'S', 'O', 'C'],
        $wisex
    );
    
    // LIKE sorgusunu daha esnek hale getirme
    $sorgu = $baglanti->prepare("SELECT * FROM sarkilar WHERE REPLACE(REPLACE(LOWER(baslik), 'ı', 'i'), '-', ' ') LIKE :search_term");
    $sorgu->execute(['search_term' => '%' . strtolower($search_term) . '%']);
    $sonuc = $sorgu->fetch();
    
    if ($sonuc) {
        print_r($sonuc);
    } else {
        echo "Sonuç bulunamadı.";
    }
    ?>
  • 24-07-2024, 20:33:14
    #6
    yigitmalik46 adlı üyeden alıntı: mesajı görüntüle
    Amca böyle diyor

    <?php
    include('config.php');
    Sinyor_Ridak adlı üyeden alıntı: mesajı görüntüle
    Selamlar.

    Veritabanı karakter türü nedir?
    Aci ile Acı aynı şey değildir, aşağıdaki konu denermisiniz?
    <?php
    include('config.php');
    maalesef iki kodda çalışmadı

    config.php içeriğim

    <?php
        $host = 'localhost';
        $dbname = '......';
        $username = '........';
        $password = '......,';
        $charset = 'utf8';
        //$collate = 'utf8_unicode_ci';
        $dsn = "mysql:host=$host;dbname=$dbname;charset=$charset";
        $options = [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_PERSISTENT => false,
            PDO::ATTR_EMULATE_PREPARES => false,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            //   PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES $charset COLLATE $collate"
        ];
        try {
            $baglanti = new PDO($dsn, $username, $password, $options);
            $baglanti->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $e) {
            echo 'Bağlantı hatası: ' . $e->getMessage();
            exit;
        }
    ?>
  • 24-07-2024, 20:35:14
    #7
    wisex adlı üyeden alıntı: mesajı görüntüle
    maalesef iki kodda çalışmadı

    config.php içeriğim

    <?php
        $host = 'localhost';
        $dbname = '......';
        $username = '........';
        $password = '......,';
        $charset = 'utf8';
        //$collate = 'utf8_unicode_ci';
        $dsn = "mysql:host=$host;dbname=$dbname;charset=$charset";
        $options = [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_PERSISTENT => false,
            PDO::ATTR_EMULATE_PREPARES => false,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            //   PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES $charset COLLATE $collate"
        ];
        try {
            $baglanti = new PDO($dsn, $username, $password, $options);
            $baglanti->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $e) {
            echo 'Bağlantı hatası: ' . $e->getMessage();
            exit;
        }
    ?>
    Kodda herhangi bir problem görünmüyor.

    <?php 
    include('config.php');
    
    // Debug fonksiyonu
    function debug($data) {
        echo "<pre>";
        print_r($data);
        echo "</pre>";
    }
    
    $request_uri = $_SERVER['REQUEST_URI'];
    $path = parse_url($request_uri, PHP_URL_PATH);
    
    $path = str_replace('-sarki-sozleri', '', $path);
    
    $path_parts = explode('/', trim($path, '/'));
    $baslik_url = end($path_parts);
    
    $wisex = ucwords(str_replace('-', ' ', $baslik_url));
    
    // Debug: Gelen değeri kontrol et
    debug("Aranan değer: " . $wisex);
    
    // Türkçe karakter dönüşümü
    function replaceTurkishChars($str) {
        $str = str_replace(
            ['ı', 'ğ', 'ü', 'ş', 'ö', 'ç', 'İ', 'Ğ', 'Ü', 'Ş', 'Ö', 'Ç'],
            ['i', 'g', 'u', 's', 'o', 'c', 'I', 'G', 'U', 'S', 'O', 'C'],
            $str
        );
        return $str;
    }
    
    $search_term = replaceTurkishChars($wisex);
    
    // Debug: Dönüştürülmüş değeri kontrol et
    debug("Dönüştürülmüş değer: " . $search_term);
    
    // LIKE sorgusunu daha esnek hale getirme
    $sql = "SELECT * FROM sarkilar WHERE REPLACE(REPLACE(LOWER(baslik), 'ı', 'i'), '-', ' ') LIKE :search_term";
    $sorgu = $baglanti->prepare($sql);
    $sorgu->execute(['search_term' => '%' . strtolower($search_term) . '%']);
    
    // Debug: SQL sorgusunu ve parametreleri kontrol et
    debug("SQL Sorgusu: " . $sql);
    debug("Arama terimi: %" . strtolower($search_term) . "%");
    
    $sonuc = $sorgu->fetchAll();
    
    // Debug: Sonuçları kontrol et
    if ($sonuc) {
        debug("Bulunan sonuçlar:");
        debug($sonuc);
    } else {
        echo "Sonuç bulunamadı.";
        // Tüm şarkıları listele
        $allSongs = $baglanti->query("SELECT baslik FROM sarkilar LIMIT 10")->fetchAll(PDO::FETCH_COLUMN);
        debug("Veritabanındaki ilk 10 şarkı:");
        debug($allSongs);
    }
    
    // Karakter seti kontrolü
    $charsetQuery = $baglanti->query("SHOW VARIABLES LIKE 'character_set%'")->fetchAll(PDO::FETCH_KEY_PAIR);
    debug("Veritabanı karakter seti ayarları:");
    debug($charsetQuery);
    ?>
    Çıkan sonucu paylaşırmısınız, telegram varsa ordan da görüşebiliriz.
  • 24-07-2024, 20:37:08
    #8
    Sinyor_Ridak adlı üyeden alıntı: mesajı görüntüle
    Kodda herhangi bir problem görünmüyor.

    <?php
    include('config.php');
    
    // Debug fonksiyonu
    function debug($data) {
        echo "<pre>";
        print_r($data);
        echo "</pre>";
    }
    Çıkan sonucu paylaşırmısınız, telegram varsa ordan da görüşebiliriz.
    <pre>Aranan değer: Hande Yener Aci Veriyor</pre><pre>Dönüştürülmüş değer: Hande Yener Aci Veriyor</pre><pre>SQL Sorgusu: SELECT * FROM sarkilar WHERE REPLACE(REPLACE(LOWER(baslik), 'ı', 'i'), '-', ' ') LIKE :search_term</pre><pre>Arama terimi: %hande yener aci veriyor%</pre>Sonuç bulunamadı.<pre>Veritabanındaki ilk 10 şarkı:</pre><pre>Array
    (
        [0] => Sagopa Kajmer - 366.Gün
        [1] => Hande Yener - Acı Veriyor
    )
    </pre><pre>Veritabanı karakter seti ayarları:</pre><pre>Array
    (
        [character_set_client] => utf8mb3
        [character_set_connection] => utf8mb3
        [character_set_database] => utf8mb4
        [character_set_filesystem] => binary
        [character_set_results] => utf8mb3
        [character_set_server] => utf8mb4
        [character_set_system] => utf8mb3
        [character_sets_dir] => /usr/share/mysql-8.0/charsets/
    )
    </pre>
  • 24-07-2024, 20:38:10
    #9
    config.php
    <?php
    $host = 'localhost';
    $dbname = 'your_database_name'; // Veritabanı adınızı buraya yazın
    $username = 'your_username'; // Kullanıcı adınızı buraya yazın
    $password = 'your_password'; // Şifrenizi buraya yazın
    $charset = 'utf8';
    $collate = 'utf8_unicode_ci'; // Collation ayarını ekleyebilirsiniz

    $dsn = "mysql:host=$host;dbname=$dbname;charset=$charset" ;
    $options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_PERSISTENT => false,
    PDO::ATTR_EMULATE_PREPARES => false,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES $charset COLLATE $collate"
    ];

    try {
    $baglanti = new PDO($dsn, $username, $password, $options);
    $baglanti->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
    echo 'Bağlantı hatası: ' . $e->getMessage();
    exit;
    }
    ———————————————-
    PHP sayfası
    <?php
    include('config.php');

    $request_uri = $_SERVER['REQUEST_URI'];
    $path = parse_url($request_uri, PHP_URL_PATH);

    $path = str_replace('-sarki-sozleri', '', $path);


    $path_parts = explode('/', trim($path, '/'));
    $baslik_url = end($path_parts);


    $wisex = str_replace('-', ' ', $baslik_url);


    $sorgu = $baglanti->prepare("SELECT * FROM sarkilar WHERE LOWER(baslik) LIKE LOWER(?)");
    $sorgu->execute(["%$wisex%"]);

    $sonuc = $sorgu->fetch();

    if ($sonuc) {
    // Sonuç varsa işle
    print_r($sonuc);
    } else {
    echo "Sonuç bulunamadı.";
    }
    ?>