• 13-04-2008, 23:48:42
    #1
    Üyeliği durduruldu
    Veritabanı Sınıfı

    Açıklama:
    Yaptığım çalışmalarda kullanmak için yazmış olduğum bir projeden bağımsız veritabanı objem var.Temel özellikleri, bağlantı açmak-kapamak, sorgu göndermek-karşılamak, hafızayı temizlemek, işlem ve hata logları tutmak gibi şeyler.En büyük avantajı ise bir işlem yaparken
    $sorgu = @mysql_query('SELECT alan FROM tablo') or die('Hata');
    şeklinde degilde
    $vt->sql_sorgu('SELECT alan FROM tablo');
    ifadesinin yetiyor olması, nesne tabanlı olduğu için siz bunu yapınca zaten hata oluşursa gerekeni yapıyor ve tüm sorguları ayrı bir log dosyasında tutuyor.İncelemenizi tavsiye ederim.Yalnız şöyle birşeyde ekledim sorgu loglarını tutarken, sorgu cümlesinin yanında $sorgu değerinide kaydettirdiğim için log dosyasına bakınca resource id #2 gibi bir ifade gozüküyor.silecektim ama hoş duruyo dedim kalsın bari.

    <?php 
    /* 
      Veritabanı Nesnesi 
      ----------------------- 
      Dosya: [INC]veritabani.php 
      Yazan: Pan <panie@gamebox.net> 
      Tarih: 13 Temmuz 2004 
      İşlev: Çok fonksiyonlu veritabanı nesnesi. 
    */ 
    
    ### Veritabanı değişkenleri ve ayarları ### 
    $vt['alan'] = 'localhost';     // Veritabanının çalıştığı alan 
    $vt['yonetici'] = 'root';     // Veritabanı yöneticisinin kullanıcı adı 
    $vt['yonetici_sifre'] = '';     // Veritabanı yöneticisinin şifresi 
    $vt['kullan_vt'] = 'deneme';     // Kullanılacak veritabanı adı 
    $vt['hata_log'] = '../loglar/vt_hata.log';     // Hata kayıtlarının tutulacağı dosya 
    $vt['islem_log'] = '../loglar/vt_islem.log';     // Veritabanına yapılan sorguların tutulacağı dosya 
    $sql['varsayilan_satir'] = 0;     // Sorgudan tek satır çekilirken, satır belirtilmezse, varsayılan olarak kullanılacak satır numarası 
    $sql['varsayilan_sutun'] = 'id';     // Yukarıdakinin, numara değilde, sütun olan hali 
    
    ### Veritabanı Nesnesi ### 
    class Veritabani { 
        # Nesne Değişkenleri # 
        var $vt_baglanti;     // Veritabanı bağlantısı yapıldıktan sonra, bağlantı numarası bu değişkene atanır 
        var $vt_secim;     // Veritabanı seçimi yapıldıktan sonra, dönen değer buraya atanır 
        var $tarih;     // Nesne çağrıldığı andaki tarihi tutar 
        var $dosya;     // Şuanda üzerinde çalışılan dosya yolu ve ismini tutar 
        var $sonsorgu;     // Son yapılan SQL sorgusunu tutar 
        # Nesne Fonksiyonları # 
        function Veritabani() {     // Nesne çağrıldığında dosya ile ilgili belirlemeleri yapar 
            $this->tarih = date('d/m/Y H:i'); 
            $this->dosya = __FILE__; 
        } 
        function vt_baglan() {     // Veritabanı bağlantısı sağlar ve kullanılacak veritabanını seçer 
            global $vt; 
            if (!$vt['baglanti'] = @mysql_connect($vt['alan'], $vt['yonetici'], $vt['yonetici_sifre'])) { 
                $this->vt_hata(mysql_errno(), mysql_error()); 
            } 
            if (!$vt['secim'] = @mysql_select_db($vt['kullan_vt'])) { 
                $this->vt_hata(mysql_errno(), mysql_error()); 
            } 
            $this->vt_baglanti = $vt['baglanti']; 
            $this->vt_secim = $vt['secim']; 
            return $this->vt_baglanti; 
        } 
        function vt_kapat() { 
            if (!$kapat = @mysql_close($this->vt_baglanti)) { 
                $this->vt_hata(mysql_errno(), mysql_error()); 
            } 
            return $kapat; 
        } 
        function vt_hata($hatano, $hata) {     // Veritabanı hata raporu tutar ve bunları dosyada saklar 
            global $vt; 
            $hata_mesaj = "Hata Tarihi: <".$this->tarih.">\r\nHatalı Dosya: <".$this->dosya.">\r\nHata No: <$hatano>\r\nHata: <$hata>\r\n--------------------------------------------\r\n"; 
            $hatalog_dt = @fopen($vt['hata_log'], 'a+'); 
            if ($hatalog_kaydet = @fputs($hatalog_dt, $hata_mesaj)) { 
                $donen_deger = 1; 
            } else { 
                $donen_deger = 0; 
            } 
            @fclose($hatalog_dt); 
            $mesaj_goster = '<h1>Veritabanı Hatası</h1> 
            <p>Üzgünüz, servislerimizde bir veritabanı hatası oluştu, hata site yöneticisine bildirildi.<br /> 
            Lütfen siteye, daha sonra tekrar geliniz, teşekkür ederiz.</p>'; 
            die($mesaj_goster); 
            return $donen_deger; 
        } 
        function vt_log($sorgu_cumle, $sorgu) {     // Veritabanına yapılan sorguların raporunu tutar 
            global $vt; 
            $log_kayit = "İşlem Tarihi: <".$this->tarih.">\r\nİşlem Yapılan Dosya: <".$this->dosya.">\r\nSorgu Cümlesi: <$sorgu_cumle>\r\nSorgudan Dönen Değer: <$sorgu>\r\n--------------------------------------------\r\n"; 
            $log_dt = @fopen($vt['islem_log'], 'a+'); 
            if ($log_kaydet = @fputs($log_dt, $log_kayit)) { 
                $donen_deger = 1; 
            } else { 
                $donen_deger = 0; 
            } 
            @fclose($log_dt); 
            return $donen_deger; 
        } 
        function vt_hafiza($sorgu = '') {      // Sorgudan dönen veri varsa, bunlar için hafıza ayrılır, nu fonksiyon o hafizayı boşaltır 
            if ($sorgu == '') { 
                $sorgu = $this->sonsorgu; 
            } 
            if (!$temizle = @mysql_free_result($sorgu)) { 
                $this->vt_hata(mysql_errno(), mysql_error()); 
            } 
            $this->sonsorgu = NULL; 
            return $temizle; 
        } 
        function sql_sorgu($sorgu_cumle) {     // Veritabanına, SQL sorgusu gönderir 
            if(!$sorgu = @mysql_query($sorgu_cumle)) { 
                $this->vt_hata(mysql_errno(), mysql_error()); 
            } 
            $this->vt_log($sorgu_cumle, $sorgu); 
            $this->sonsorgu = $sorgu; 
            return $sorgu; 
        } 
        function sql_satircek($sorgu = '', $satir = '', $sutun = '') {     // Yapılan sorgudan dönen değeri tek satır olarak alır (bkz: mysql_result()) 
            global $sql; 
            if ($sorgu == '') $sorgu = $this->sonsorgu; 
            if ($satir == '') $satir = $sql['varsayilan_satir']; 
            if ($sutun == '') $sutun = $sql['varsayilan_sutun']; 
            if (!$satircek = @mysql_result($sorgu, $satir, $sutun)) { 
                $this->vt_hata(mysql_errno(), mysql_error()); 
            } 
            return $satircek; 
        } 
        function sql_toplamkayit($sorgu = '') {     // Bir sorgudan dönen toplam kayıt sayısını verir 
            if ($sorgu == '') $sorgu = $this->sonsorgu; 
            if (!$toplamkayit = @mysql_num_rows($sorgu)) { 
                vt_hata(mysql_errno(), mysql_error()); 
            } 
            return $toplamkayit; 
        } 
    } 
    
    ### Nesne Testi ### 
    $Vt = new Veritabani; 
    $Vt-> vt_baglan(); 
    $Vt-> sql_sorgu('SELECT isim FROM personeller LIMIT 1'); 
    $satir = $Vt-> sql_satircek('', '', 'isim'); 
    $Vt-> vt_hafiza(); 
    $Vt-> vt_kapat(); 
    echo $satir; 
    ?>
  • 13-04-2008, 23:50:08
    #2
    Üyeliği durduruldu
    Dizi Görüntüle
    Tek boyutlu bir diziyi alarak onu bir tablo içerisinde görüntüler. Bunu geliştirip db'den çekilen verileri'de tablolayabiliriz.
    Prototip
    boş dizi_goruntule(veri dizi)

    <? 
      function dizi_goruntule($veri){ 
         echo "<table border=1>"; 
         reset($veri); 
         $deger = current($veri); 
         while ($deger){ 
            echo "<tr><td>$deger</td></tr>\n"; 
            $deger = next($veri); 
            } 
         echo "</table>"; 
        } 
    ?>
    Örnek

    <?
    $dizim = array("satır 1","satır 2","satır 3");
    dizi_goruntule($dizim);
    ?>

    Bu listelemeleri, fonksiyon icerisinde bir <option>...</option> seklinde ya da <a href...> seklinde hazirlayabiliriz ihtiyacimiza gore. Form elemaninda listeletmek, yahut link olarak kullanmak icin.

    Ornek:

    <?php
    dizinlistele("./listelenecek_dizin");
    ?>
  • 13-04-2008, 23:50:50
    #3
    Üyeliği durduruldu
    Dizin Listeleme Fonksiyonu:
    Yolu verilen bir dizin icerisinde yer alan dizinleri listelemek icin kullanilabilir.
    function dizinlistele($yol) { 
        $dizinac = opendir($yol); 
        while ( gettype ($dizin = readdir($dizinac) ) != boolean ) { 
            if ( is_dir("$yol/$dizin") ) { 
                if ( ($dizin != ".") AND ($dizin != "..") ) { 
                    echo (ucwords($dizin)."<br>"); 
                } 
            } 
        } 
        closedir ($dizinac); 
    }


    Bu listelenen dosyalari, fonksiyon icerisinde bir <option>...</option> seklinde ya da <a href...> seklinde hazirlayabiliriz ihtiyacimiza gore. Form elemaninda listeletmek, yahut link olarak kullanmak icin.

    Ornek:
    PHP Kodu:
    <?php 
    dosyalistele("./listelenecek_dizin"); 
    ?>
    Not: Dizin listelemeden pek farki olmadigi icin, yazmada tereddut ettim. O sebeple, @HunTER; gereksizse kaldirabiliriz bu mesaji.

    Not 2: Bu dosya listelemenin daha komplike olanlari mevcut, fakat ben bunu yazip kullandigim icin bunu aktarmayi uygun gordum. Uzanti, yapi ya da farkli kontrolleri yapan fonksiyonlar daha kullanisli olabilir.

    Kolay Gelsin...
  • 13-04-2008, 23:55:21
    #4
    Üyeliği durduruldu
    E-Mail Kontrol Fonksiyonu
    Değişkende yer alan mail adresinin standartlara uyup uymadığını kontrol eder.

    function mail_kontrol($email) { 
    if (!eregi ("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}$", $email)) 
    die ("E-Mail Adresiniz Geçersiz"); 
    }
    Örnek :

    <? 
    $ilk_mail = "kafayi7m@hotmail.com"; 
    mail_kontrol($ilk_mail); 
    // hiçbir hata vermez 
    
    $ikinci_mail = "hebele_hubele"; 
    mail_kontrol($ikinci_mail); 
    // hata verir 
    ?>
  • 13-04-2008, 23:56:24
    #5
    Üyeliği durduruldu
    Dizindeki dosyaları drop down listede göstermek.


    <select name="stu_photo" class="select"> 
    <option>Resim seçiniz</option> 
    <? 
      if($dir = @opendir("d:/wwwroot/t-diagno/images/photos")){ 
         while (($file = readdir($dir)) !== false){ 
            if($file != ".." && $file != "."){ 
               $filelist[] = $file; 
               } 
            } 
         closedir($dir); 
         } 
      asort($filelist); 
      while (list ($key, $val) = each ($filelist)){ 
         echo = "<option value=\"" . $val . "\">" . $val . "</option>"; 
         } 
    ?> 
    </select>
    Editör Notu: Dızını degıstırmek ıcın koddakı "d:/wwwroot/t-diagno/images/photos" ıfadesını duzenleyebılırsınız.
  • 13-04-2008, 23:56:57
    #6
    Üyeliği durduruldu
    Dizindeki Dosyaları Alfabetik Olarak Listeleyen Kod Bloğu

    Belli bir klasörde bulunan dosyalarımızı listelettirdiğimizde, alfabetik sıraya göre değilde o dosyaların oluşturulma yahut değiştirilme tarihine göre listeleme yapılır. Aşağıdaki kod bloğu yardımıyla alfabetik sıralama yapabiliriz.

    <? 
    $dizi    = array(); // yeni ve boş bir dizi değişkeni tanımlıyoruz. 
    $dizin    = "D:\mp3"; // hangi dizinin dosyaları listelenecek? 
    $ac    = opendir($dizin); 
    
    echo("<h2>$dizin Dizinindeki Tüm Dosyalar</h2>"); 
    
    # bütün dosyaları dizi değişkenine atıyoruz. bu işlemi yaparken, 
    # bir üst dizini temsil eden "." ve ".." değerlerini bir if deyimi 
    # yardımıyla dizi haricinde tutuyoruz. 
    while($x=readdir($ac)) { 
        if ($x != "." && $x != "..") { 
            $dizi[] = $x; 
        } 
    } 
    
    sort($dizi); // dosyaları alfabetik sıraya alıyoruz. 
    
    echo("<table border=0>"); 
    
    # dosya listesini basit bir foreach ile ekrana basıyoruz. 
    foreach($dizi as $x => $y) { 
        echo("<tr><td><b>$x.<b></td><td>$y</td></tr>"); 
    } 
    
    echo("</table><br>"); 
    echo("toplam dosya: "); 
    echo "<b>".count($dizi)."</b>"; // toplam dosya sayısını basıyoruz. 
    
    closedir($ac); 
    ?>
  • 13-04-2008, 23:57:36
    #7
    Üyeliği durduruldu
    Yazıyı Kısaltmak
    Verilen parametreler doğrultusunda yazıyı kısaltır.
    Not: $son degıskenı duzenlenebılıyor olayisiyla link vermek yerine "..." da yazabilirsiniz.
    # varsayimsal uzunluk 40  
    # Varsayımsal  son  <a href=dokuman.php?id=4545> ...devamı</a> 
    function kisalt($kelime,$uzunluk ="40",$son = "  <a href=dokuman.php?id=4545> ...devamı</a>"){ 
       $kelime_uzunlugu = strlen($kelime); 
       if (strlen($kelime) > $uzunluk) { 
          $yeni_kelime = substr($kelime ,1,$uzunluk); 
          $yeni_kelime .= $son; 
          } 
       elseif(strlen($kelime)  ==  $uzunluk or strlen($kelime)  < $uzunluk ){ 
          $yeni_kelime = $kelime; 
          } 
       return $yeni_kelime; 
       }
  • 13-04-2008, 23:58:30
    #8
    Üyeliği durduruldu
    Yukardaki çok ayrıntılı olan kod

    buda benden bir ornek..


    <?php  
    $veritabani = mysql_connect(localhost,kullaniciadi,sifre);  
    if ( ! $veritabani ) die ("MySQL ile veri bağlantısı kurulamıyor!"); 
    mysql_select_db(tablo , $veritabani) or die ("Veritabanına ulaşılamıyor!" . mysql_error() ); 
    $tablo = ("select * from tablo where 1"); 
    $calis = mysql_db_query("satir","$tablo"); 
        while($calistir = mysql_fetch_object($calis)) 
    //mysql objesini getir 
        { 
    
    echo $calistir->sutun; 
    //getirdigin mysql objesini ekrana yaz!  
    exit; 
        
                    } 
    
    ?>
  • 14-04-2008, 00:00:52
    #9
    Üyeliği durduruldu
    Kolay Tarih Alma
    function tarih($cesit=1) { 
        # 1 => 1 Temmuz 2004 
        # 2 => 1 Temmuz 2004, Cuma 
        # 3 => 01/07/2004 
        # 4 => 01.07.2004 
        # 5 => 2004-07-01 
        $d_gun = array('Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'); 
        $d_ay  = array('','Ocak','Şubat','Mart','Nisan','Mayıs','Haziran','Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'); 
        $gun_1 = date("j"); // 1  - 31 
        $gun_2 = date("d"); // 01 - 31 
        $ay_1  = date("n"); // 1  - 12 
        $ay_2  = date("m"); // 01 - 12 
        $yil   = date("Y"); // 2004 
        $gun_h = date("w"); // 0 - 6 
        if     ( $cesit == 1 ) { return $gun_1.' '.$d_ay[$ay_1].' '.$yil; } 
        elseif ( $cesit == 2 ) { return $gun_1.' '.$d_ay[$ay_1].' '.$yil.', '.$d_gun[$gun_h]; } 
        elseif ( $cesit == 3 ) { return date("d/m/Y"); } 
        elseif ( $cesit == 4 ) { return date("d.m.Y"); } 
        elseif ( $cesit == 5 ) { return date("Y-m-d"); } 
        # Eklenebilir... 
        else { return 0; }     
    }
    Örnek kullanım:

    $tarih = tarih(3);
    TR KARAKTERLER İÇİN ÇEVİRGEÇ
    Ne işe yarar: tartışılır...

    function cevir ($girdi,$dil) { 
        $dizi_tr = array('ı','ğ','ü','ş','İ','ö','ç','Ğ','Ü','Ş','Ö','Ç'); 
        $dizi_en = array('i;tr','g;tr','u;tr','s;tr','I;tr','o;tr','c;tr','G;tr','U;tr','S;tr','O;tr','C;tr'); 
        if ( $dil == "TR"     ) { $girdi = str_replace($dizi_en,$dizi_tr,$girdi); return $girdi; } 
        elseif ( $dil == "EN" ) { $girdi = str_replace($dizi_tr,$dizi_en,$girdi); return $girdi; } 
        else { return 0; } 
    }
    Örnek Kullanım:

    TR -> EN

    $degisken = "Ömer bak camın diminde atsineği var.Haydi yiyelim."; 
    $degisken = cevir($degisken,"EN"); 
    # echo $degisken; yazildigindaki ciktiyi yazdirmayin simdi 
    # İslemin tersi  $degisken = cevir($degisken,"TR"); şeklinde yapılabilir.