Filed under: Html, Php   by admin

obje ye yönelik kodlamanın biraz anlaşılması için bir örnek :

class.sayfalama.saho.php

PHP Kodu:
<?php
class sayfalama {

public $sayfa;
public
$suan;
public
$geri;
public
$ileri;
public
$ileriDonguArtisi;
public
$ileriDonguLimit;
public
$bitis;
public
$baslangic;
public
$veriSayisi;
public
$sayfaVeriLimiti;
public
$geriLimit;
public
$ileriLimit;
public
$arguman;
public
$dosya;
public
$link;

public $cssWidthDis = "675px";
public
$cssWidthIc = "650px";

public $cssBg = "#fff";
public
$cssColor = "#000";
public
$cssFontSize = "11px/15px";
public
$cssFontFamily = "tahoma";
public
$cssBorderColor = "#eee";

public $cssHoverBg = "#4f9ecd";
public
$cssHoverColor = "#fff";
public
$cssHoverFontSize = "11px/15px";
public
$cssHoverFontFamily = "tahoma";
public
$cssHoverBorderColor = "11px/15px";

function cssWidthIc($string)
{
return
$this->cssWidthIc = $string;
}
function
cssWidthDis($string)
{
return
$this->cssWidthDis = $string;
}
function
cssBg($string)
{
return
$this->cssBg = $string;
}
function
cssColor($string)
{
return
$this->cssColor = $string;
}
function
cssFontSize($string)
{
return
$this->cssFontSize = $string;
}
function
cssFontFamily($string)
{
return
$this->cssFontFamily = $string;
}
function
cssBorderColor($string)
{
return
$this->cssBorderColor = $string;
}
function
cssHoverBg($string)
{
return
$this->cssHoverBg = $string;
}
function
cssHoverColor($string)
{
return
$this->cssHoverColor = $string;
}
function
cssHoverFontSize($string)
{
return
$this->cssHoverFontSize = $string;
}
function
cssHoverFontFamily($string)
{
return
$this->cssHoverFontFamily = $string;
}
function
cssHoverBorderColor($string)
{
return
$this->cssHoverBorderColor = $string;
}
function
css()
{
$html='<style type="text/css">
.sayfalama {
float:left;
width:'
. $this->cssWidthIc . ';
padding-top:5px;
padding-bottom:5px;
margin-left:5px;
display:inline;
}
.syfm {
float:left;
width:'
. $this->cssWidthDis . ';
display:inline;
padding:3px;
background:'
. $this->cssBg . ';
color:'
. $this->cssColor . ';
margin-top:5px;
font:bold '
. $this->cssFontSize . ' "' . $this->cssFontFamily . '";
}
.syfm a #seciliSayfa
{
background:#cc0000;
}
.syfm a{
height:30px;
padding:3px;
background:'
. $this->cssBg . ';
color:'
. $this->cssColor . ';
margin-left:5px;
text-decoration:none;
border:1px solid '
. $this->cssBorderColor . ';
font:bold '
. $this->cssFontSize . ' "' . $this->cssFontFamily . '";
}
.syfm a:hover{
padding:3px;
background:'
. $this->cssHoverBg . ';
color:'
. $this->cssHoverColor . ';
margin-left:5px;
text-decoration:none;
border:1px solid '
. $this->cssHoverBorderColor . ';
font:bold '
. $this->cssHoverFontSize . ' "' . $this->cssHoverFontFamily . '";
}
</style>'
;
return
$html;
}
function
sayiDurum($sayi)
{
if(
substr($sayi,0,1)=='-')
{
return
false;
}
else
{
return
true;
}
}
function
geriLimit($sayi)
{
return
$this->geriLimit = $sayi;
}
function
ileriLimit($sayi)
{
return
$this->ileriLimit = $sayi;
}
function
veriSayisi($sayi)
{
return
$this->veriSayisi = intval($sayi);
}
function
sayfaVeriLimiti($sayi)
{
return
$this->sayfaVeriLimiti = intval($sayi);
}
function
suan($sayi)
{
return
$this->suan = (empty($sayi)) ? 0 : $sayi;
}
function
argumanlar($string)
{
return
$this->arguman = $string;
}
function
dosya($string)
{
return
$this->dosya = $string;
}
function
link()
{
return
$this->link = $this->dosya . "?" . $this->arguman;
}

function sayfa()
{
//try
//{
$this->sayfa = intval($this->veriSayisi / $this->sayfaVeriLimiti);
//    if(!$this->sayfa)
//    {
//        throw new Exception('sıfıra bölünemez');
//    }
//}
//catch (Exception $e) {
//    echo 'Hata: ',  $e->getMessage(), "\n";
//}
return $this->sayfa;
}
function
geri()
{
return
$this->geri = $this->suan - 1;
}
function
ileri()
{
return
$this->ileri = $this->suan + 1;
}
function
ileriDonguArtisi()
{
$this->ileriDonguArtisi = $this->geriLimit - $this->suan;
if(
$this->sayiDurum($this->ileriDonguArtisi))
{
return
$this->ileriDonguLimit = ($this->suan + $this->ileriLimit + $this->ileriDonguArtisi);
}
else
{
return
$this->ileriDonguLimit = ($this->suan + $this->ileriLimit);
}
}
function
bitis()
{
for(
$j=$this->suan;$j<$this->ileriDonguLimit;$j++)
{
if(
$j<$this->sayfa)
{
$temp = $j;
}
else
{
break;
}
}
return
$this->bitis = $temp;
}
function
baslangic()
{

for($k=$this->suan;$k>($this->suan-$this->geriLimit);$k--)
{
if(
$this->sayiDurum($k))
{
$temp = $k;
}
else
{
break;
}
}
return
$this->baslangic = $temp;
}
function
derle()
{
$this->sayfa();
$this->ileri();
$this->geri();
$this->ileriDonguArtisi();
$this->bitis();
$this->baslangic();
$this->link();

$html = null;
$html.= $this->css();
$html.="<div class='temizle'></div>";
$html.='<div class="sayfalama">
<div class="syfm"> Sayfalar:'
;
// buradaki linkleri - link title ve << , >> işaretlerinide class dan ayarlaniblir hale getirecez bir ara

if($this->sayiDurum($this->geri))
{
$html.="<a href='{$this->link}&sayfa=0' title='İlk son sayfaya git'>&laquo;&laquo;</a> ";
$html.="<a href='{$this->link}&sayfa={$this->geri}' title='Bir önceki sayfaya git'>&laquo; Geri</a> ";
}
//echo "basla : {$this->baslangic}<br>Bitiş {$this->bitis}<hr>";

for($i=$this->baslangic;$i<=$this->bitis;$i++)
{
if(
$this->suan == $i)
{
$html.="<a id='seciliSayfa'>".($i+1)."</a>";
}
else
{
$html.="<a href='{$this->link}&sayfa={$i}' title='".($i+1).".Sayfaya git'>".($i+1)."</a> ";
}
}
if(
$this->ileri<$this->sayfa)
{
$html.="<a href='{$this->link}&sayfa={$this->ileri}' title='Bir sonraki sayfaya git'>İleri &raquo;</a> ";
$html.="<a href='{$this->link}&sayfa={$this->sayfa}' title='En son sayfaya git'>&raquo;&raquo;</a> ";
}
$html.="</div>
</div>"
;
return
$html;
}
}
?>

uygulaması :

PHP Kodu:
/// sayfalama yapılıyor
// $kriter burada id='{$_GET['id']}' veya baslik like '%{$_GET['kelime']}%' gibi kriter belirtebilirsiniz.
$were = empty($kriter) ? "where {$kriter}": null;
$saySql = mysql_query("select count(id) from tablo $were"); // sayım yapılıyor
list($veriSayisi) = mysql_fetch_row($saySql);// değişkene atanıyor
include_once"class.sayfalama.php";/// sdosya çağırılıyor
$sayfala = new sayfalama();/// sayfalama nesnesi tanımlanıyor
$sayfala->veriSayisi($veriSayisi);// max veri sayısı belirtiliyor
$sayfala->sayfaVeriLimiti(27);// 1 sayfada gözükecke veri limiti
$sayfala->ileriLimit(8);// örneğin 15. sayfada ilerilimit 8 yapılırsa aşağı barda 23 e kadar olan bir listeleme yapılır
$sayfala->geriLimit(6);// örneğin 15. sayfada gerilimit 6 yapılırsa aşağı barda 9 e kadar olan bir listeleme yapılır
$sayfala->suan($_GET['sayfa']);// şuan kaçıncı sayfada olduğu saptanıyor bununla
eğer şuanki sayfa ise link vermiyoruz tekrar dan farklı belirteçlerde kullanılabilir
$sayfala
->argumanlar("bolum={$_GET['bolum']}&obje={$_GET['obje']}&kelime={$_GET['kelime']}");// burada get le verilen argümanlar konuyor bunun yerine başka türlü nasıl yapacağınızı aşağıdaki notta bulabilirsiniz
$sayfala->dosya("index.php");// sayfalama linkinin verileceği sayfa
echo $sayfala->derle();// tanımlamaların hepsi derlenip ekrana yazdırılıyor
//// sayfalama bitiyor

not :
$sayfala->argumanlar(”bolum={$_GET['bolum']}&obje={$_GET['obje']}&kelime={$_GET['kelime']}”);
yerine
$argumanlar = array();
foreach($_GET as $key=>$val) $argumanlar[] = “{$key}={$val}”;
$argumans = implode(’&’,$argumanlar);
$sayfala->argumanlar($argumans);

gibi bir uygulama yapılabilir
css içerisine katmayadabiliriz ama renkleri vs
$sayfala->cssBorderColor(’#000000′);
gibi gibi yöntemlerle düzenleyebiliyorsunuz
ayrıca sayfalama.css gibi bir dosyayı sürekli sürekli yanında taşımamak için ben bu türlü kullanmaktayım

input u class olarak çağırmak için bir örnek :
class.html.saho.php

PHP Kodu:

class input
{
private
$name;
private
$id = false;
private
$value;
private
$type = "text";
private
$text = false;
private
$class_ = "none";

public function __construct($name)
{
$this->name = $name;
}

function name($string)
{
$this->name = $string;
}
function
id($string)
{
$this->id = $string;
}
function
type($string)
{
$this->type = $string;
}
function
value($string)
{
$this->value = $string;
}
function
text($string)
{
$this->text = $string;
}
function
class_($string)
{
$this->class_ = "class='{$string}'";
}
function
derle()
{
if(
$this->id == false)
{
$this->id = $this->name;
}

$html="<input type='{$this->type}' name='{$this->name}' value='{$this->value}' id='{$this->id}' />";
if(
$this->text != false)
{
$html.="<label for='{$this->id}' {$this->class_}>{$this->text}</label>";
}

return $html;
}

kullanımı için :
[php]
include_once”class.html.saho.php”;
$input = new input(’kelime’);
$input->value($_GET['kelime']);
echo $input->derle();
gibi bir yöntemle
ekrana input yazdırabilirsiniz
diğer özellikler inide ->id,size,type belirtebilirsiniz ayrıca
$input->text(’kelime giriniz:’);
gibi bir text parametreside gönderirseniz yeni bir label de oluşturacaktır bu sayede
kelime giriniz: yazısına tıkladıklarında kelime input una otomatik focus lanacaklardır
bu örnekleri artırmak mümkün örneğin son input oluşturma örneğimiz objeye yönelik olmasaydı nasıl olurdu?
şöyle olur du :

PHP Kodu:
function input($name,$type,$id,$value,$ex=null) {
$html = "<input type='{$type}' name='{$name}' value='{$value}' id='{$id}' {$ex} />";
return
$html;
}
echo
input('saho','type','idcik','valuecik','...');

gibi biraz daha karışık gibi duruyor name,type,id argüman sıralamasını ezbere bilmeniz gerekiyor kodlarınızı bir başkası kullanmak istediğinde öğrenmesi gerekebiliyor bu az satırlı bir kod kümesi bunun büyük bir proje olan halini düşündüğünüzde objye yönelik yazımın kod sade temizliğinin olduğuna anlışabilir olduğu , ekip olarak çalışıldığında anlaşılması ve kullanılması daha kolay olduğu gözükebiliyor
bir kaç örnek vermek istedim oop konusunda forumda oldukça fazla yazdık arama yaparak o konularada ulaşabilirsiniz.

not: eksikler olabilir örneğin sayfalama classı nı ilk önce function halinde yapmıştım baktım çok karışık oldu alel acele class a dökmüşüm eksiklerim olabilirm mükemmel değiliz en nihayetinde , alel acele paylaşma sebebimde msn den sürekli 1-2 arkadaş rahatsız edip oop hakkında birşeyler soruyorlar bu sebeple foruma ve blog yazayım herkez öğrensin dedim

Posted on: 30 Mar 2009

Son 1 kaç gün hakkında

Filed under: Salata   by admin

son bir kaç gündür yoğun iş temposu üstüne gelen aöf sınavlarını son 10-15 güne sıkıştırmamla gözlerim ve vücüdüm birazcık iflas bayrağını çekti bilgisayar başında çok duramıyordum 1-2 saat duruyorum 4-5 saat dinlendirmem gerekiyor ve bu ortamda işlerin yetişmemesi , ders konularının bitmemesi artan migren atakları bilgisayar başına çok oturmama kararı aldım 4-5-6 gündür pek yoktum şuan iyi gibi aöf üniteleride bitmek üzere işlerde hep ufak tefek eksik gedik kalmış konumda sıfırdan yaptığım hiç birşey yok bu sebeple yakın zamanda biteceği müjdesini vererek özürlerimi iletiyorum ; anlayşınız için teşekkürler
(işler bu kadar sıkışık olmasa türkiye – ispanya maçına gidecektim ama iş ve sınavdan dolayı oda iptal oldu :( )
iyi çalışmalar

Posted on: 29 Mar 2009

Komik & kısa diyaloglar :/

Filed under: Salata   by admin

İnternet’te rastladığım ilginç diyaloglar :)

Ne münasebet
Ablam evlenmeden önce saatlerce odamıza kapanır, sigara ve kahve ikilisi eşliğinde sırlarımızı dökerdik. Böyle anlardan birinde, kısık sesle “Müzik açalım mı? Babam yan odada, bizi dinliyor olabilir.” dedim. Yan odadan gelen ve hala hatırladığımızda bizi kahkahalara boğan ses: “Ne dinleyecem sizi beee!”
Read More

Filed under: Salata   by admin

çok aşırı işim var + sınavlar var o sebeple msn e de girmiyorum ve kodlarla uğraşıyorum ama yaşıyorum :)

Posted on: 10 Mar 2009

ya array_map yetmezse :)

Filed under: Salata   by admin

bir arrayınız var örneğin bu $_POST olsun bundan gelen tüm verileri htmltaglarını escape etmek istiyorsunuz mesala bu yapan fonksiyon html de htmlspecialchars ve htmlentities fakat entities latin5 i yani türkçe yi desteklemiyordu 15-20 ay önce hatırladığım kadarıyla :D o sebeple biz genelde htmlspecialchars kullanıyoruz.
htmlspecialchars ın temelinde de
$string = str_replace(array(’<','>‘) , array(’&lt;’,'&gt;’), $string);
bu şekilde gidiyor ” bunuda "o; yapıyor falan filan
function htmlkacisi($string)
{
$string = str_replace(array(’<','>‘) , array(’&lt;’,'&gt;’), $string);
return $string;
}
ile
htmlspecialchars in html tag larını değiştirmiş şekli gibi düşünebilirsiniz. ama tabi liste sadece < > dan ibaret değil biraz daha uzun ” ‘ vs. replace işlemleri de var :)

herneyse asıl konumuza dönecek olursak;
az önce birşeyler yazarken array altına bir array daha geldi error verdi işin temeline inmeyi severim hazıra konmak yerine temelden yapmak her zaman iyidir. Bu da ksü de tuğrul diye bir hocamız var dı bildiğin for döngüsü durur iken sınavda if else ve goto komutları ile qbasic de for döngüsü yazdırmıştı hatırladığım kadarıyla bölümde tek ben yapmıştım :D
şimdi iç içe array da şöyle bir sonuc varsa örneğin
post içeriği
array(
[saho] => <b>akca</b>
)
gibi bir veri olsa buna
$_POST = array_map(’htmlspecialchars’,$_POST);
gibi bir kullanımda sonra çıktısı
array(
[saho] => &lt;b&gt;akca&lt;/b&gt;
)
gibi olacaktır ama verimiz aşağıdaki gibiyse
array (
[saho] => array (
[0] => akca
[1] => php
[2] => mysql
)
)
array içeriğine işlem yapamayıp bir error mesajıyla bunu süsleyecektir php onun yerine şöyle yapar isek
Çözüm : 1 ( ilerisi için yetersiz )
function array_map($callback,$veri)
{
foreach ($veri as $key=>$val)
{
$don = array();
if ( is_array($val) )
{
foreach ($val as $key2=>$val2)
{
$don[$key][$key2] = $callback($val2);
}
}
else
{
$don [$key]= $callback($val);
}
}
return $don;
}

burada array ı alıyor içeriğini döndürüyor o sırada içeriği array değilse direk callback ile çağırdığımız daha önceden tanımlı bir fonksiyonu işliyor ve döndürüyor geri sonucu eğer array ise onun içeriğinde foreach ile
döndürüyor ve sonucu yazıyor. Fakat bu biraz yetersiz iç içe 2 değilde 3 array olursa o zaman problem yaratabilir :D güç bu ama biz bunu full otomatik yapmak için şöyle yapıyoruz
Çözüm 2: ( budur :D )
function array_map($callback,$veri)
{
$don = array();
foreach ($veri as $key=>$val)
{
if ( is_array($val) )
{
$don[$key] = saho::array_map($callback,$val);
}
else
{
$don[$key] = $callback($val);
}
}
return $don;
}

burada ise gelen array foreach ile dönderiyor döngü içerisinde array mı değil mi denetimi yapıyor array değilse direk callback fonksiyonuna tabi tutuyor veriyi ve $don arrayına aktarıyor eğer array ise tekrar fonksiyona gönderiyor herşey baştan başlıyor veriye bakıyor arraymı değil mi array sa yine başa dönüyor yine foreach ile tarıyor array değilse fonksiyona tabi tutup sonucu $don array ına yansıtıyor. Anlamadıysan ben karışık yazmadım bu fonksiyon çalışırken aynı fonksiyonu tekrar çağırmak zaten karışık bir iş kasma al kullan :D
eksik değinmediğim şeyler olabilri yazabilirsiniz.
iyi günlerde kullanmanız dileğiyle :p

Not : ben kendi class ım içerisinde kullandığım için direk array_map adıyla yeni fonksiyon oluşturdum class içerisine siz kullanırken aşağıdaki gibi kullanabilirsiniz :d
function saho_array_map($callback,$veri)
{
$don = array();
foreach ($veri as $key=>$val)
{
if ( is_array($val) )
{
$don[$key] = saho_array_map($callback,$val);
}
else
{
$don[$key] = $callback($val);
}
}
return $don;
}

Posted on: 09 Mar 2009

bahar geldi

Filed under: Salata   by admin

baharrr geldii haluluya :D
geçen bahar ki temamı aktif ettim bende
1 haftaya baya rahatlıcam ama
sınavlar gelmiş olacak sonra öbür sınav sonra öbür sınav
sonrada öbür sınav tahmini olark 5 sınava girecem bu sene
yazılım biraz arka planda kalkca türkçe matematik fen olacak gibi hayat :D
neyse bol bir vakitte mesala haftaya yazarım hadi sayanora :D

not: blog u kapanan adresi değişen yeni blog açan varsa bana bildirsinde linkleride güncelleyeyim

not2: dankek mağma ne güzel bi$iymis

not 3: niye bu sunucu satanların hepsinin alt nickinde ödeme yapmayanların hesabı kapatılacaktır yazıyor bu kadar para ödemeyen mi var ? :D

not4: herkez vefasızsın aramıyorsun sormuyorsun diye dert yakınıyor , hepiniz aklımdasınız öpüyorum ; malum hayat şartları . Son günlerde hayatımdan çıkardığım 3-4 kişi var onlar haricinde kiler aklımda :D

Posted on: 05 Mar 2009

hastayım :S

Filed under: Salata   by admin

hastayım pek online olamıyorum bir halsizlik var dün akşam 6 da yattım sabah 6 olmuş 12 saattir uyuyorum ama hala yorgunum.
toplu herkeze anlatmak yerine yine blog a yazdım.
sayanora…