Programlama Konusu

Aşağıda sayfanızdaki flash dosyasının boyutlarını değiştiren javascript dosyası bulunmakta.  IE5.5, IE6, IE7, IE8, Firefox 3, Opera 10, Safari 4, Chrome 3 programlarında test edildi.

Kullanım

Düzgün çalışması için flash’ı sayfanıza yerleÅŸtirirken kullanıdığınız html <object> etiketine id vermeniz gerekiyor. Daha sonra fonksiyonları çağırırken kullanacağımız ‘id’ bu olacak. Örnek:

<object  id=”flashid” height=”500″ width=”650″
classid=”CLSID:D27CDB6E-AE6D-11cf-96B8-444553540000″
codebase=”http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0″>

</object>

  • Boyut deÄŸiÅŸtirme:
    flashResizer.resize(genislik, yukseklik,’flashid‘);
  • Büyütme:
    flashResizer.zoomin(’flashid‘);
  • Küçültme:
    flashResizer.zoomout(’flashid‘;

Kod

var flashResizer = {
    ZOOM_IN:1,ZOOM_OUT:-1,
    fo:null,ZOOM_FACTOR:0.1,
    findObj:function(_foid){if(_foid==undefined || _foid==null){return this.fo;} this.fo=null;if (window.document[_foid]) this.fo=window.document[_foid];else if (navigator.appName.indexOf("Microsoft Internet")==-1){if (document.embeds && document.embeds[_foid]) this.fo = document.embeds[_foid];}else this.fo = document.getElementById(_foid);return this.fo;},
    resize:function(_w,_h,_foid){if(this.findObj(_foid)){this.fo.width=_w;this.fo.height=_h;}return this;},
    zoom:function(_d,_f){if(this.findObj(_f)){var zf=1+_d*this.ZOOM_FACTOR;this.resize(this.fo.width*zf,this.fo.height*zf);}return this;},
    zoomin:function(_f){this.zoom(this.ZOOM_IN,_f);},
    zoomout:function(_f){this.zoom(this.ZOOM_OUT, _f);}
}

(daha fazla…)

Youtube’da ya da kullanıcıların yorumlarının yayınlandığı pek çok yerde görmüşsünüzdür: yorumun yazılış tarihi, 12 Ekim 2009, 12:24 gibi net bir tarih olarak deÄŸil de aradan geçen süre bazında (2 gün önce, 5 yıl önce, vb…) gösterilir.

AÅŸağıdaki bu iÅŸi türkçe olarak yapan bir PHP fonksiyonu bulunmakta. PHP’de bulunan strtotime fonksiyonunun kabul ettiÄŸi her türlü tarih deÄŸerini girdi olarak kullanabilirsiniz. Bu da veritabanınızdan aldığınız tarihi çok büyük ihtimalle direkt olarak kullanabileceÄŸiniz anlamına gelir. Fonksiyonun kullanım ÅŸekli, başındaki açıklama satırlarında mevcuttur.

Tarihi türkçe olarak doÄŸrudan ‘12 Ekim 2009′, ‘07-AÄŸustos-2008, Cumartesi’ gibi ÅŸekillerde yazdırmak istiyorsanız PHP ile Türkçe Tarih Gösterimi-Çevrimi baÅŸlıklı yazıya gözatmanız daha doÄŸru olur.

/**
 * verilen tarihler arasında geçen süreyi "1 gün önce", "2 hafta önce" gibi
 * günlük kullanım'a uygun kolay anlaşılır bir şekle çevirir. Normal kullanımda
 * o anki tarih baz alınır.
 * İstenirse ikinci parametre kullanılarak, girilen iki tarih arasındaki
 * fark alınabilir.
 * Örnek Kullanım (şu anki tarihi 2009-08-25 13:00:00 olarak kabul edersek):
 *      echo "çıktı: ".cicitarih("2009-08-23 12:05:14"); // çıktı: 2 gün önce
 *      echo "çıktı: ".cicitarih("2009-04-23 10:00:00"); // çıktı: 4 ay önce
 *      echo "çıktı: ".cicitarih("2009-04-23 10:00:00", "2009-05-24 11:00");
 *                                                       //çıktı: 1 ay önce
 * @author gudubeth.net
 * @param str $tarih    hesabın yapılacağı tarih. strtotime fonksiyonu
 *                      tarafından kulanılabilecek her türlü string değerini
 *                      alabilir.
 *                      bkz: http://www.php.net/manual/tr/function.strtotime.php
 * @param str $simdi    boş bırakılırsa, o anki saat baz alınır.
 *                      formatı $tarih alanında olduğı gibidir.
 * @return str
 */
function cicitarih($tarih, $simdi=null){
 
    //aradan geçen süreyi bul
    if(!$simdi) $simdi=time();
    $sure=$simdi-strtotime($tarih);
 
    //eğer geçen süre negatif ise boş metin döndür.
    if($sure&lt;0) return "";
 
    //dönüş metninin oluşturulduğu yer
    //3600: 60*60, yani 1 saat;
    //86400: 60*60*24 yani 1 gün demektir.
    if($sure&lt;60)return round($sure)." saniye önce";
    else if($sure<3600) return round($sure/60)." dakika önce";
    else if($sure<86400) return round($sure/(3600))." saat önce";
    else if($sure<86400*7) return round($sure/(86400))." gün önce";
    else if($sure<86400*30) return round($sure/(86400*7))." hafta önce";
    else if($sure<86400*365) return round($sure/(86400*30))." ay önce";
    else  return round($sure/(86400*365))." yıl önce";
}

Flash kullanarak bir site yaptınız ve bu flash’ın içerisine bir haber bölümü ya da ona benzer, flash dışından güncellenebilecek bir metin eklemek istiyosunuz ama nasıl yapacağınızı bilmiyorsunuz? O zaman bu yazı tam size göre.

Laf kalabalığından hoşlanmayanlar için: bu yazının en altındaki linkten ya da hemen buradan flash, XML, PHP, MySQL dosyalarından oluşan kullanıma hazır bir örneği indirebilirsiniz.

Flash ile dinamik haberler yapımı ekran görüntüsü

Åžimdi dinamik haberleri nasıl yapacağınızı anlatayım. Gerçekten kolay olacak. Yukarıdaki resim zaten herÅŸeyi gösteriyor. Bir flash dökümanı açın. İçine bir text alanı yaratın. Farklı bir ‘layout’ kullanmıyorsanız programın alt kısmındaki properties kısmında bu text alanının tipini “Static Text” yerine “Dynamic Text” yapın. Bu bölümün hemen altındaki alana text alanımızın ismini “newsText” olarak girin. Tamam. Åžimdi saÄŸ tarafta “Single Line” yazan seçeneÄŸi “Multi Line” yapın. Onun da sağında yer alan 3 küçük ikondan ortada yer alan <a> ikonuna tıklayıp haber metninin içerisine HTML kullanılmasına izin verin. Eer scrollbar yani kaydırma çubuÄŸu istiyorsanız CTRL+F7′ye basarak Components penceresini açın. Burada alt taraflarda bir yerlerde UIScrollBar isminde bir Component var. Onu tutup, text alanımızın üstüne çekin.

Son olarak aşağıdaki actionScript kodunu flash dosyanıza ekleyin. news.xml dosyasını da aynı dizine koymayı unutmayın.

PHP ve MySQL dosyaları için yazının devamına bakmanız gerekecek.

(daha fazla…)

Kategoriler: Programlama
Tags: , , , ,
devam et >

Başlık pek açıklayıcı olmadı aslında. Direkt olarak örnekle açıklayayım olayı:
Mesela bir ürün tablonuz var. Ürünleri kategorilerine göre listelemek istiyorsunuz. Bununla da yetinmeyip sayfa başına en fazla 20 tane ürün bulunacak şekilde sayfalama yapmak istiyorsunuz. Temel bilgilere sahip bir yazılımcının tercih edeceği yöntem şuna benzer birşey olur:

Öncelikle sayfalamayı yapabilmek için bu kategorideki toplam ürün sayısını bulmanız gerekir. Bunu şu sorguyla yaparsınız:
SELECT count(id) AS data_count FROM urunler WHERE kategori_id=’3′

Sonra da göstereceğiniz ürünleri
SELECT * FROM urunler WHERE kategori_id=’3′ LIMIT 0,20
sorgusu ile alıp listeleme iÅŸlemini yaparsınız. Sonraki sayfalarda satır sayısını tekrar tekrar hesaplamak istemiyorsanız bulduÄŸunuz satır sayısını ‘SESSION’ ya da ‘COOKIE’ kullanarak saklayabilirsiniz. Bu iÅŸlemlerdeki sorun aynı sorguyu biraz deÄŸiÅŸtirerek iki kere yazmanız gerekmesidir. Bu zaman zaman sıkıntı yaratabilir.

MySQL insanları 4. versiyonu çıkarmadan önce oturmuşlar, bu işlemleri tek seferde yapabilmemiz için SQL_CALC_FOUND_ROWS diye birşey yapmışlar.
(daha fazla…)

Kategoriler: Programlama
Tags: , ,
devam et >

Tomcat, JSP, MySQL kullanarak web sitesi yapmaya çalışırken malum Türkçe karakterleri sağlıklı bir şekilde görüntüleyebilmek ne yazık ki problemli bir iş. Yeterince tecrübeli ya da en azından şanslı değilseniz orada burada bir ton ayar yapmak gerekecektir. Bu yazıda Tomcat, HTML, JSP, MySQL için yapmanız gereken ayarları yazdım.
Çözümde karakter seti olarak ISO-8859-9 gibi setler yerine UTF-8 kullanılmıştır.

(daha fazla…)

Kategoriler: Programlama
Tags: , , , ,
devam et >