My SQL İle İlgili Bir Soru
-
Selam arkadaşlar,
Küçük bir sorum olacak, yardımcı olursanız memnun olurum, Sorum şu
İl ve ilçe tablolarım var, ben bu tablolardaki il isimlerini türkçe karakterlerini değiştirerek seo isimli stuna yazdırmak istiyorum,
Örnek:
İl adı - Seo
İSTANBUL - istanbul
ÇANAKKALE - canakkale
AĞRI - agri
gibi, bunu sql sorgu ile yapabilir miyim yoksa php ile mi yapmam lazım. teşekkrüler.
-
direkt bu şekilde db'de hallet hocam.
DELIMITER $$ CREATE FUNCTION TurkceKarakterKaldir(txt text) RETURNS text DETERMINISTIC BEGIN set txt = replace(txt,"Ğ","G"); set txt = replace(txt,"ğ","g"); set txt = replace(txt,"Ü","U"); set txt = replace(txt,"ü","u"); set txt = replace(txt,"Ş","S"); set txt = replace(txt,"ş","s"); set txt = replace(txt,"İ","I"); set txt = replace(txt,"ı","i"); set txt = replace(txt,"Ö","O"); set txt = replace(txt,"ö","o"); set txt = replace(txt,"Ç","C"); set txt = replace(txt,"ç","c"); return lower(txt); END$$ DELIMITER ; UPDATE sehir SET seo_ad = TurkceKarakterKaldir(ad) -
saybirs bunu yazdı
DELIMITER $$ CREATE FUNCTION TurkceKarakterKaldir(txt text) RETURNS text DETERMINISTIC BEGIN set txt = replace(txt,"Ğ","G"); set txt = replace(txt,"ğ","g"); set txt = replace(txt,"Ü","U"); set txt = replace(txt,"ü","u"); set txt = replace(txt,"Ş","S"); set txt = replace(txt,"ş","s"); set txt = replace(txt,"İ","I"); set txt = replace(txt,"ı","i"); set txt = replace(txt,"Ö","O"); set txt = replace(txt,"ö","o"); set txt = replace(txt,"Ç","C"); set txt = replace(txt,"ç","c"); return lower(txt); END$$ DELIMITER ; UPDATE sehir SET seo_ad = TurkceKarakterKaldir(ad)
Teşekkürler hocam il adını TurkceKarakterKaldir(il_adi) diye yazdım ama olmadı
Şu şekilde php ile çözdüm
try { $db = new PDO("mysql:host=localhost;dbname=db_adir;charset=utf8", "dbkullanici", "sifre"); } catch ( PDOException $e ){ print $e->getMessage(); } function replace_tr($text) { $text = trim($text); $search = array('Ç','ç','Ğ','ğ','ı','İ','Ö','ö','Ş','ş','Ü','ü',' '); $replace = array('c','c','g','g','i','i','o','o','s','s','u','u','-'); $new_text = str_replace($search,$replace,$text); return $new_text; } $query = $db->query("SELECT * FROM sehir", PDO::FETCH_ASSOC); if ( $query->rowCount() ){ foreach( $query as $row ){ $degis_id = $row['sehir_id']; $degis_ad = strtolower(replace_tr($row['il_adi'])); $queryg = $db->prepare("UPDATE sehir SET slug = :yeni_ad WHERE sehir_id = :eski_id"); $update = $queryg->execute(array( "yeni_ad" => $degis_ad, "eski_id" => $degis_id )); if ( $update ){ print "güncelleme başarılı!"; } } }
-
ilk function'ı çalıştır hocam, sonrasında
UPDATE sehir SET seo_ad = TurkceKarakterKaldir(ad) sorgusunu çalıştır.
sehir tablosuda bu şekilde kendine göre revize edersin hocam.
id ad seo_ad 1 Adana NULL 2 Ankara NULL 3 Eskişehir NULL 4 Bursa NULL 5 Çanakkale NULL 6 Denizli NULL 7 Mardin NULL 8 Gümüşhane NULL 10 Ağrı NULL