Kategoriler
mysql hakkında Öylesin Esti Php ve mysql Programlama Dilleri Webmaster yardım

PDO ve mysql işlemleri – [Başlangıç ve orta düzey] : Ekleme, silme, güncelleme, listeleme, bağlanma

PDO: gelişmiş veri tabanı yönetimi eklentisidir. Php nin yeni versiyonları ile hayatımıza girmeye başlayan bu uygulama bir çok veritabanını destekliyor. Böylece veritabanı modeli değiştirmek zorunda kaldığımızda php kodlarımızı silbaştan tekrar değiştirmek zorunda kalmayacağız. Çünkü PDO ile hazırlanan sorgu cümlecikleri desteklenen bütün veritabanı modellerinde geçerli olacak. size sadece başlangıç bağlantı sorgusunuz düzeltmek kalıyor.

PDO’nun desteklediği veri tabanı modelleri:
Cubrid
FreeTDS / Microsoft SQL Server / Sybase
Firebird/Interbase 6
IBM DB2
IBM Informix Dynamic Server
MySQL 3.x/4.x/5.x
Oracle Call Interface
ODBC v3 (IBM DB2, unixODBC and win32 ODBC)
PostgreSQL
SQLite 3 and SQLite 2
Microsoft SQL Server / SQL Azure

Php geliştiricileri artık php ve veritabanı programcılarına PDO yapısına geçmeleri konusunda tavsiyelerde bulunuyorlar. Ciddi anlamda da ilerleyen yıllarda PDO yapısının artık eski sistemlerin yerini alacağını düşünüyorum. Her şekilde öğrenmesi zor ve hantal sorgulardan bizi kurtaran yeni PDO programı Türk gençleri tarafından da bir an önce benimsenmeli ve kullanılmaya başlanmalı.

PDO ilk başlarda size zor gelebilir ancak sonrasında öğrendikçe zevkli olduğunu ve programlamasının kolaylığı ile heycanlandığınızı göreceksiniz. 3-4 ay önce PDO sistemine geçmek istediğimde düzgün bir anlatım bulamamıştım. Henüz 2 hafta falan oldu hobi amaçlı başladığım PDO uygulamasına yönelik tecrübelerimi yeni ve bunu öğrenmek isteyen kişilerle paylaşacağım.

Tavsiye: Bu konuda dökumanlardan çok sizin konuyu ne kadar öğrenmek istediğiniz önemlidir. Bilgisayarınızda bir localhost kurarak test ortamı hazırlayın. Hataları, doğruları test ederek gördüğünüzde öğrenmek dahada kolaylaşacaktır.

PDO konusunda şuan için başlangıç ve orta seviyesindeki konulara yer vereceğim. Aşağıdaki dökumanda yer vermediğim bir çok parametrede olacaktır. bunlara zamanım olduğunda yer vereceğim. Şuan için orta derece bir bilgiye bu dökuman ile ulaşabileceksiniz. Sonrasında zaten kendiliğinden yeteneğiniz artacaktır.

Öncelikle veritabanı bağlantı kod parçacığımızı ele alıp bağlantıyı sorunsuz gerçekleştirelim.

PDO Mysql veri tabanı bağlantısı

	<?php
	$host = "localhost";
	$dbismi = "test"; // Database ismi
	$dbkullanici = "root"; // Database kullanici adi
	$dbsifre = ""; // Kullanici sifresi

	try {
		$dbpdo = new PDO("mysql:host={$host};dbname={$dbismi}", $dbkullanici, $dbsifre, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
		$dbpdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
	} catch (PDOException $e) {
		return 'Baglanti hatasi '. $e->getMessage();
	}
	/* basit select kodu */
	$as = $dbpdo->query('SELECT * FROM galeriler');

	foreach($as as $row) {
	echo $row["ismi"]."<br>";
	}
?>

PDO php’nin yan uygulaması olarak geliyor. bazı sunucularda aktif edilmemiş olabilir. Apacheyi derlerken pdo bölümünüde seçemniz gerekli, bunun yanında mysql ve php ilişiğini sağlayan diğer yan uygulamalarıda seçmeniz gerekli (şuan isimleri aklımda değil :=)). Ayrıca PDO phpnin 5.1.x versiyonu dahil yeni sürümlerinde desteklenmektedir. Eski versiyon php programınız varsa güncellemenizi öneririm..

PDO::QUERY Mysql Select komutu

Select komutunu 2 ayrı başlıkta inceleyeceğiz arkadaşlar. İlki tek veriyi, tabloyu çekerek işlem yapma, diğeri ise birden fazla sonucu foreach yada while ile işleme alma. Yeni başlayanların yada yanlış bilenlerin ve daha hızlı hafif sorgular oluşturabilmeniz için gerekli olan PDO parametrelerinede bildiğim kadarıyla yer vermeye çalışacağım.

1 – Tek veri işleme:

Sorgumuz aşağıdaki gibi olacaktır:

$veri = $dbpdo->query('SELECT * FROM galeriler WHERE id = 3');
$veri = $veri->fetch(PDO::FETCH_ASSOC);

print_r($veri);
/*
Çıktı bu şekilde olur:

Array ( 
[id] => 3 
[ismi] => Backgrounds 
[aciklama] => Background displays can bring your computer screen to life. 
[userid] => 20 
)
*/

echo $veri["ismi"]; /* çıktı: Backgrounds */

Bazı arkadaşlar direk fetch() diğer kullanıyor ancak bu yanlıştır. parantezler arasına PDO parametlerini koyarak size en uygun veri biçimini çekerseniz gereksiz gelecek verilerden ve harcanacak zamandan kurtulursunuz. Bu alanda kullanabileceğiniz PDO parametlerine kısa bir göz atalım:

PDO::FETCH_ASSOC: veriyi stun ismi ile çeker. Örnek:

Array
(
    [ismi] => Backgrounds
    [aciklama] => fisfisda fisfis
)

PDO::FETCH_BOTH: Veriyi karşık çeker, yani hem stun ismiyle hemde sayısal değeri ile karışık iki bölüm işler. Eğer boş bırakırsanız bu kısım default olarak işleme alınacaktır. Eğer sadece stun ismiyle iş yapacaksanız yukarıdaki parametreyi kullanız, aksi taktirde fazladan veri ile belleği şişirmiş oluruz. bu veri her ne kadar küçük olsada çok büyüyecek bir sitede ilerde kendini hissetirmeye başlayacaktır. bu parametre sonucunda oluşacak array diziside bu şekilde:

Array
(
    [ismi] => Backgrounds
    [0] => Backgrounds
    [aciklama] => fisfisda fisfis
    [1] => fisfisda fisfis
)

Sonraki parametreleri tam olarak bilmiyorum ama üzerinden geçmekte fayda var.

PDO::FETCH_LAZY: Sonuçları array yerine PDORow Object yöntemi ile listeliyor, sorgu parametresinide queryString ismine atıyor. php.netdeki açıkmalası: Her özelliğin bir sütun ismine denk düştüğü bir anonim nesne olarak. Örnek çıktı aşağıdaki gibidir:

PDORow Object ( 
[queryString] => SELECT * FROM galeriler WHERE id = :gaid 
[id] => 3 
[ismi] => Backgrounds 
[aciklama] => Background displays can bring your computer screen to life. 
[userid] => 20 
)

PDO::FETCH_OBJ: Sonuçları stdClass Object şeklinde listeliyor, php.net deki açıklaması: Her özelliğin bir sütun ismine denk düştüğü bir anonim nesne olarak. Örnek çıktı aşağıdaki gibidir:

stdClass Object ( 
[id] => 3 
[ismi] => Backgrounds 
[aciklama] => Background displays can bring your computer screen to life.
[userid] => 20 
)

Ben genelde sorgularımı stun ismine göre çekiyorum. Böylece kafam karışmıyor ama uygulamanıza hangisi uygunsa ona görede diğer parametreleri kullanabilirsiniz. Yeni başlayanlar ve basit işlemler için kullanacak arkadaşlar için ilk parametreyi yani PDO:FETCH_ASSOC‘u öneririm.

PDO::FETCH_COLUMN: Select kısmında belirlenen sütunda bulunan bütün veriyi sayı dizgesi ile listeler. Eğer select kısmında ön tanımlı bir değer yoksa (*), birden fazla varsa ilk kolonu ele alarak listeleme yapar. Örnek dönen sonuç aşağıdaki gibidir:

Array (
[0] => mehmet cavus 
[1] => Anime 
[2] => Backgrounds 
[3] => Cars 
[4] => Colors 
[5] => Families 
[6] => Fashion 
[7] => Funny 
[8] => Just for Fun 
[9] => Love
)

PDO::FETCH_GROUP: Verileri belirlenen ilk sütuna göre gruplandırarak işlem yapar. Tek başına kullanıldığında ikinci tablonun isminin altına birde sayısal değeri ile ikinci veriyi ekler. sadece isim değerini alması için aynı parametreyi PDO::FETCH_ASSOC ile kullanmanızı öneriyorum yanı bu şekilde: PDO::FETCH_ASSOC|PDO::FETCH_GROUP

Bu parametreninde sonuçları örnekteki gibi olur:

Array (

[Anime] => Array ( 
[0] => Array ( 
[aciklama] => Search through all your favorite anime characters. 
) 
) 

[Backgrounds] => Array ( 
[0] => Array ( 
[aciklama] => Background displays can bring your computer screen to life. 
) 
) 

[Cars] => Array ( 
[0] => Array ( 
[aciklama] => Make a pit stop to check out everything about cars. 
) 
) 

[Colors] => Array ( 
[0] => Array ( 
[aciklama] => Search through unique images from all the colors of the rainbow… 
) 
) 

[Families] => Array ( 
[0] => Array ( 
[aciklama] => They are the cornerstones of our lives. Celebrate your family here. 
) 
)

)

PDO::FETCH_UNIQUE – Select alanındaki ilk tabloyu baz alarak benzersiz içerikleri listeler. Eski mysql de distintc ile aynı verileri eleyip sadece birini alıyorduk. PDO uygulamasında da işimizi kolaylaştıracak FETCH_UNIQUE parametresini kullanacağız. Yanlış hatırlamıyorsam PDO daki benzersiz kayıt parametresinin eskisine nazaran çok daha kullanışlı oluyor. Çünkü distinct de sadece belirtilen benzersiz kayıtları çekeceğimiz sütununa ait verileri alabiliyorduk. PDO daki bu parametre ile benzersiz kayıtları alacağımız sütun haricinde diğer sütunlarıda kolaylıkla çekebiliyoruz. Bu parametrenin yanında yine PDO::FETCH_ASSOC parametresiyle beraber kullanımı önereceğim, böylece sadece sayısal dizgeleri çekmeden hafif sonuçlar elde edebiliriz. Bu parametre örneğide aşağıdaki gibi olur:

PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE parametrelerinin sonuçları:

array (size=51)
  'mehmet cavus' => 
    array (size=3)
      'aciklama' => string 'hhhh demi aciklamasi yeni buda..' (length=32)
      'id' => string '1' (length=1)
      'userid' => string '645' (length=3)
  'Anime' => 
    array (size=3)
      'aciklama' => string 'Search through all your favorite anime characters.' (length=50)
      'id' => string '2' (length=1)
      'userid' => string '20' (length=2)
  'Backgrounds' => 
    array (size=3)
      'aciklama' => string 'Background displays can bring your computer screen to life.' (length=59)
      'id' => string '3' (length=1)
      'userid' => string '20' (length=2)
  'Cars' => 
    array (size=3)
      'aciklama' => string 'Make a pit stop to check out everything about cars. ' (length=52)
      'id' => string '4' (length=1)
      'userid' => string '20' (length=2)

2 – Birden fazla veriyi çekme:
Yukarıdaki işlemleri anladıysanız bu kısmı çok kolayca kavrayacaksınız diye düşünüyorum, çünkü fazla bir ayrıntı yok. yukarıdaki sorgu kodumuzdan sadece fetch() kısmını fetchAll() olarak değiştirerek çoklu veri çekimleri için kullanacağız. Sonrasında çektiğimiz veriyi foreach yada while ile işleyebiliriz.

$veri1 = $dbpdo->query('SELECT * FROM galeriler');

print_r($veri1->fetchAll(PDO::FETCH_ASSOC));

Bu işlem sonunda ekrana tahmin edebileceğiniz gibi galeriler tablosundaki bütün veriler çekilecektir. Bunları foreach ile kolayca işleyebiliriz:

$veri1 = $dbpdo->query('SELECT * FROM galeriler');

$sonuc = $veri1->fetchAll(PDO::FETCH_ASSOC);

foreach($sonuc as $cek){

echo $cek["ismi"]."<br>";

}

Basit query ile select yöntemini işledik arkadaşlar. Daha profesyonel kullanım için PDO da bir çok fonksiyon bulunmakta. Şimdi size PDO da en çok sevdiğim ve bence eski mysql sorgularını bir daha kullanmamanıza neden olacak parametre: prepare

Detaylı prepare konusuna geçmeden önce hızlı şekilde silme,ekleme,güncelleme kodumuzu yazmak istiyorum. fonksiyonun adı exec(). Extra tanımlamalara gerek kalmadan hızlıaca işlemlerinizi yapmaya olanak veriyor. Bir kaç örnek vererek sizi bilgilendirip sonrada bunların daha detaylısı ve profesyonel yapıda olanı prepare kullanımına geçeceğim:

PDO::EXEC – Hızlı Veri silme

$sorgumuz = $dbpdo->exec("delete from galeriler where id = 235");

echo $sorgumuz; /*etkilenen satir sayisini verir - 1 ise silinmistir :) */

PDO::EXEC – Hızlı Veri güncelleme

$sorgumuz = $dbpdo->exec("update galeriler set ismi = 'mehmet cavus' where id = 1");

echo $sorgumuz; /*etkilenen satir sayisini verir - 1 ise silinmistir :) */

PDO::EXEC – Hızlı Veri ekleme

$sorgumuz = $dbpdo->exec("insert into galeriler(ismi) values('mehmet cavus yemenli')");

echo $sorgumuz; /*etkilenen satir sayisini verir - 1 ise silinmistir :) */

PDO::prepare:

Standart açıklama yerine kendi tecrübelerimi ve test sonuçlarımı paylaşacağım arkadaşlar. Büyük bir projeniz varsa yada aynı sorgunu sadece where alanındaki parametresi değişiyor diye 5-6 kere kullanmak zorunda kalıyorsanız, prepare komutu işlerinizi çok kolaylaştıracak hemde iş yükü zamanınızı çok düşürecek. Fazla kafa karıştırmadan bir kaç örnekle prepare kullanımını daha iyi anlamanıza vesile olayım.

PDO::PREPARE parametresini açıkmak için size bir örnek kod hazırladım:

$veri = $dbpdo->prepare('SELECT * FROM galeriler WHERE userid = :userid');

$veri->bindValue(':userid', 2, PDO::PARAM_INT); 
$veri->execute();
print_r($veri->fetchAll(PDO::FETCH_ASSOC)); /* userid 2 olan butun tabloları çeker */

echo "<hr>";

$veri->bindValue(':userid', 3, PDO::PARAM_INT);
$veri->execute();
print_r($veri->fetch(PDO::FETCH_ASSOC)); /* userid 3 olan ilk tabloyu (tek) çeker */

echo "<hr>";

$veri->bindValue(':userid', 20, PDO::PARAM_INT);
$veri->execute();
print_r($veri->fetchAll(PDO::FETCH_ASSOC)); /* userid 20 olan butun tabloları çeker */

/* her işlem ayrı ayrı çalışır, üstdeki ile bir bağı yoktur.. */

Yukarıdaki göreceğiniz gibi sadece bir sorgu cümlesi hazırladık ve alt tarafta 3 ayrı birbirinden farklı sonuç listeledik. Kafanız karışmasın arkadaşlar. alt alta yazdığınız her yeni kural üstdeki yani bir önceki kural ile alakası yoktur. Yaptığınız her execute() bir üstünde belirttiğiniz bindValue() parametresindeki kuralı işler. Böylece tek sorgu ile bir tablodaki 3 üyenin galerilerini ister birini, istersenizde hepsini ayrı ayrı çekmiş olduk.

Bunun bize getireceği kolaylıklar neler derseniz: Aynı anda tek bir sorgu cümlesini kullanarak güncelleme, silme, yada veri çekme yapabilirsiniz birdenf azla. Bu mantık işi, kullanabileceğiniz alanlar tamimiyle hayal gücünüze bağlı..

PDO::PREPARE komutu ile sadece veri çekme işi değil, silme, ekleme, güncelleme işlemleride yapabiliriz. PDO daki en iyi alanlardan birisi güvenlik uygulamalarınıda beraberinde kullanarak sistemimizi güven altına alabiliriz.

PDO::PREPARE ile veri ekleme:

Birden fazla yönetmi bulunmakla beraber kullanım alanınıza göre özelleştirebilirsiniz arkadaşlar.. İlk göstereceğim kullanım uygulamanın en kolayı olacak.

$yeniisim = "yeni galeri ismi";
$yeniaciklama = "galeri aciklamasi yeni buda..";

$sorgumuz = $dbpdo->prepare("INSERT INTO galeriler(ismi,aciklama) VALUES(:ismi,:aciklama)");

$sorgumuz->execute(array(':ismi' => $yeniisim, ':aciklama' => $yeniaciklama));

$etkilenen_veri_sayisi = $sorgumuz->rowCount();

echo $etkilenen_veri_sayisi;

Yukarıdaki sorguyu çalıştırdığınızda veritabanına yeni veri ekleyecektir ve geri olarak rowCount() parametresi ilede etkilenen yada eklenen veri sayısını verecektir bize.

Yukarıdaki veri ekleme yönetminin biraz farklı olanı ise sorguda soru işareti kullanabileceğimiz ve array kısmınıda sırakı değişkenler olarak atayabileceğimiz yöntem. Burda değişkenlerin sırasına dikkat edin, sırayla soru işaretlerinin olduğu yerlere atanmaktadır..

$yeniisim = "en yeni galeri ismi";
$yeniaciklama = "en galeri aciklamasi yeni buda..";

$sorgumuz = $dbpdo->prepare("INSERT INTO galeriler(ismi,aciklama) VALUES(?,?)");

$sorgumuz->execute(array($yeniisim, $yeniaciklama));

$etkilenen_veri_sayisi = $sorgumuz->rowCount();

echo $etkilenen_veri_sayisi;

İşi biraz daha büyütüp eklenecek veri güvenliğini en ideal şekilde kontrol edecek aşağıdaki gibi bir işlem yapabilirsiniz:

$yeniisim = "fyeni galeri ismi";
$yeniaciklama = "ggaleri aciklamasi yeni buda..";

$sorgumuz = $dbpdo->prepare("INSERT INTO galeriler(ismi,aciklama,userid) VALUES(:ismi,:aciklama,:userid)");

$sorgumuz->bindValue(':ismi', $yeniisim, PDO::PARAM_STR);
$sorgumuz->bindValue(':aciklama', $yeniaciklama, PDO::PARAM_STR);
$sorgumuz->bindValue(':userid', 24, PDO::PARAM_INT);

$sorgumuz->execute();

$etkilenen_veri_sayisi = $sorgumuz->rowCount();

echo $etkilenen_veri_sayisi;

Ekleyeceğiniz her veriyi sorguya ekledikten sonra bindValue() paremetresi ilede eklenecek veriyi hazırlıyoruz. Son olarak execute() fonksiyonunu çalıştırdığımızda işlem çalışmaya başlauacak ve altda etkilenen satır sayısını verecektir..

PDO – Eklenen son verinin ID2sini alma:
INSERT işleminden sonra eklenen veriye ait ID’yi almak zorunda olabilirsiniz. Bu gibi durumlarda Aşağıdaki değişken bize eklenen son verinin ID’sini verecektir..

$sorgumuz = $dbpdo->exec("insert into galeriler(ismi) values('mehmet cavus yemenli')");

echo $sorgumuz . "<br>"; /*etkilenen satir sayisini verir - 1 ise silinmistir :) */
echo $dbpdo->lastInsertId(); /* Eklenen son verinin ID si. */

PDO::PREPARE fonksiyonu ile silme, ekleme, güncelleme gibi işlemleride yukarıdaki gibi yapabiliyornuz. Konuyu anladığınızı düşünüyorum prepare kısmında fazla detaya girmeden kısa kısa örneklerle bilgilerimizi pekiştirelim.

PDO::PREPARE – Tablodaki verileri Güncelleme:

PDO da farkeden tek şey mysql standart fonksiyonları yerine PDO class yapısını ve ek olarak ekleyeceğimiz verileri ayrı bir alanda işleyerek yapmamızdır. Bunun güvenilirliği konusunda tecrübem yok ancak yapı itibari ile bunun hazırlanmış olduğunu düşünüyorum. Örnek bir veri güncelleme yapısı:

$yeniisim = "fyeni galeri ismi";
$yeniaciklama = "ggaleri aciklamasi yeni buda..";

$sorgumuz = $dbpdo->prepare("update galeriler set ismi = :ismi ,aciklama= :aciklama,userid=:userid WHERE id = :id");

$sorgumuz->bindValue(':ismi', $yeniisim, PDO::PARAM_STR);
$sorgumuz->bindValue(':aciklama', $yeniaciklama, PDO::PARAM_STR);
$sorgumuz->bindValue(':userid', 241, PDO::PARAM_INT);
$sorgumuz->bindValue(':id', 1, PDO::PARAM_INT);

$sorgumuz->execute();

$etkilenen_veri_sayisi = $sorgumuz->rowCount();

echo $etkilenen_veri_sayisi;

Bu alandaki veri güncelleme yöntemlerini aşağıda sırasıyla veriyorum:

2. Farklı yöntem:

$yeniisim = "yenidir daaa";
$yeniaciklama = "demi aciklamasi yeni buda..";

$sorgumuz = $dbpdo->prepare("update galeriler set ismi = :ismi ,aciklama= :aciklama,userid=:userid WHERE id = :id");

$sorgumuz->execute(array(':ismi' => $yeniisim, ':aciklama' => $yeniaciklama,':userid' => 542, ':id' => 1));

$etkilenen_veri_sayisi = $sorgumuz->rowCount();

echo $etkilenen_veri_sayisi;

3. Farklı yöntem:

$yeniisim = "Baska yenidir daaa";
$yeniaciklama = "baska demi aciklamasi yeni buda..";

$sorgumuz = $dbpdo->prepare("update galeriler set ismi = ? ,aciklama= ?,userid=? WHERE id = ?");

$sorgumuz->execute(array($yeniisim, $yeniaciklama,542, 1));

$etkilenen_veri_sayisi = $sorgumuz->rowCount();

echo $etkilenen_veri_sayisi;

4. Farklı yöntem: Standart değişkenleri sorgu içinde belirtmek, ancak kullanışlı değil, yukarıdaki yöntemlerden birini tercih etmenizi öneririm:

$yeniisim = "gggg yenidir daaa";
$yeniaciklama = "hhhh demi aciklamasi yeni buda..";

$sorgumuz = $dbpdo->prepare("update galeriler set ismi = '".$yeniisim."' ,aciklama= '".$yeniaciklama."', userid='645' WHERE id = '1'");

$sorgumuz->execute();

$etkilenen_veri_sayisi = $sorgumuz->rowCount();

echo $etkilenen_veri_sayisi;

PDO::PREPARE – Tablo silmek

Tablo silmek prepare ile çok kolay, ayrıca bu fonksiyonun ilk başlarda anlattığım özelliği ile aynı anda birden fazla farklı tabloyu silebiliyoruz. bunu yaparken sorguğu defalarca değiştirmemize gerek kalmıyor. Küçük bir mantık yürütmek gerekirse toplu olarak silmek istediğiniz yada sitenizde bu özelliği eklemek istediğiniz alana gelen veriyi sadece foreach alanında execute kullanarak kodlama kalabalığı yapmadan halledebiliriz. Ben küçük bir mantık yürüttüm, ihtiyaçlara göre hayal gücümüz dahada farklı yorumlar bulacaktır.

ÖRnek bir tablo silme kodu:

$sorgumuz = $dbpdo->prepare("delete from galeriler where id = :id");

$sorgumuz->bindValue(':id', 240 , PDO::PARAM_INT);

$sorgumuz->execute();

$etkilenen_veri_sayisi = $sorgumuz->rowCount();

echo $etkilenen_veri_sayisi;

id si 240 olan tablo tarih oldu şuanda… Kodlamada bir kaç ekleme yaparak aynı anda bir kaç tabloyu silebiliriz. sorgu cümlesini değiştirmeden:

$sorgumuz = $dbpdo->prepare("delete from galeriler where id = :id");

$sorgumuz->bindValue(':id', 240 , PDO::PARAM_INT);
$sorgumuz->execute();

$sorgumuz->bindValue(':id', 230 , PDO::PARAM_INT);
$sorgumuz->execute();

$sorgumuz->bindValue(':id', 220 , PDO::PARAM_INT);
$sorgumuz->execute();

$sorgumuz->bindValue(':id', 210 , PDO::PARAM_INT);
$sorgumuz->execute();

$etkilenen_veri_sayisi = $sorgumuz->rowCount(); //son sorgu icin bilgi verecektir, her execute den sonra eklerseniz o islem içinde bilgi verir..

echo $etkilenen_veri_sayisi;

Bir başka veri silme kodu. değişkenleri direk execute() parametresine ekleriz:

$sorgumuz = $dbpdo->prepare("delete from galeriler where id = :id");

$sorgumuz->execute(array(':id' => 239));

$etkilenen_veri_sayisi = $sorgumuz->rowCount();

echo $etkilenen_veri_sayisi;

Buda diğer bir basit veri silme kodumuz:

$sorgumuz = $dbpdo->prepare("delete from galeriler where id = ?");

$sorgumuz->execute(array(238));

$etkilenen_veri_sayisi = $sorgumuz->rowCount();

echo $etkilenen_veri_sayisi;

Sormak istediklerinizi yada önerilerinizi konu altından yorum atabilirsiniz. Bu konuda yeni dökumanları zaman içerisinde tekrar yazacağım. Türk geliştiricilerinin PDO sistemine geçmesini şiddetle öneriyorum. Gelecek herzaman yeni teknolojilere çabuk atapde olabilenlerin olacaktır.

Sağlıcakla kalın..

Kategoriler
Webmaster yardım

Wamp Server: php curl sorununa çözüm {Windows 7 – 64 bit işletim sistemleri için}

Localhost olarak wamp serveri tercih ediyorum ve son dönemde karşılatığım php versiyonu ve işletim sistemimin 64 bit olmasından kaynaklı curl sorunun çözümü için ilerde karşılaşabilecekler için yardım etmek istiyorum. sorun büyük değil aşağıdaki php_curl eklentisi için gerekli olan dosyayı indirip wamp’ın kurulu olduğu dizinde php eklentileri klasörünün içine yüklemeniz yeterli…

Kategoriler
Güncel Haberler Günlük hayat Webmaster yardım Wordpress

WordPress 3.5 “Elvin” resmi versiyonu yayınlandı.

Hoşgeldin WordPress 3.5 “Elvin”

WordPress’in bir süredir üzerinde çalıştığı 3.5 versiyonu bugün itibari ile yayınlandı. “Elvin” takma adı ile yayınlanan bu versiyonda bir çok yenilik yapıldı. Bunların en başında standart temanın değiştirilmesi ve upload arayüzünün komple yenilenmesi geliyor..

Media upload arayüzü

about-media

Eski hantal yapısından kurtulan upload alanı her işlemi hızlı ve pratik şekilde yapabilir konuma getirildi ve bunun yanında yeniliklerde oldu. Sürükle bırak upload yapısı, galeriler ve yüklenen resimlerin ulaşılması kolaylaştırıldı. Upload alanında nerde olursanız olun, yeni bir dosya yüklemek istediğinizde sürükle bırak yöntemi ile resimlerinizi yüklemeye devam edebiliyorsunuz. Bence yeni geliştirmeler çok iyi ve yerinde olmuş..

Yüklenen birden fazla resmi tek tek yazı içine ekleme zahmetinden de kurtuluyoruz ayrıca. bu versiyondan sonra en sevdiğim kolaylıklardan birisi olan yazıya eklemek istediğin resimleri seçme özelliği ile artık tek seferde bir çok resmi yazı içine kolaylıkla ekleyebileceğiz.

Yeni default tema: Twenty Twelve

about-twenty-twelve

WordPress yeni default teması Twenty Twelve olarak belirlendi. Daha esnek, daha hızlı ve bir çok uygulamada en iyi görüntüyü sunuyor. Bunların arasında akıllı telafonlar, tablet bilgisayarlarda tabiki bulunuyor…

Yüksek çözünürlüklü bilgisayarlarda daha güçlü (Retina-Ready (HiDPI) Admin)

about-retina

Yeni versiyonla wordpress’in admin arayüzüde dahil yeni nesil retina teknolojisine sahip bilgisayarlarda daha net ve berrak görünecek..

Yeni renk yönetimi

Canlı izleme alanında yada temaların renklerini düzenlemek için kullanılan fonksiyonda yenilik yapılarak renk düzenleme bölümlerini iyileştirmişler. Bu öncekine nazaran daha kullanışlı oldu, çünkü istediğimiz rengi tutturmak bayağı zor oluyordu…

TinyMCE, jQuery, jQuery UI ve SimplePie son versiyonlara güncellendi

WordPress yazı editörü olarak kullanılan TinyMCE son versiyona güncellendi bunun yanında jquery ve SimplePie uygulamalarıda güncellenerek stabil versiyonlara yükseltildi..

****

Genel olarak bir kaç özelliğinden bahsediyorum bu yeni versiyonun ancak bir çok alanda ciddi yenilikler yapıldı. Bunlara sorgu ve fonksiyon alanlarındakilerde dahil. Yeni nesil dokunmatik erkanlı uygulamalar içinde yenilikler barındıran son versiyon teknolojiyi takip edenler içinde nimetler sunuyor diyebiliriz.

Ayrıca bir önceki versiyonda bulunan özel alan ekleme sorunuda giderilmiş…

Şimdilik bu kadar kendisi hakkında yeniliklere ara ara yer vereceğim…

Kategoriler
Webmaster yardım Wordpress

WordPress – Kullanmadığınız cache eklentilerini kaldırın!

Küçük ve kısa bir bilgilendirme olacka arkadaşlar. Sisteminizde kullandığınız süper cache, total cache yada benzeri eklentileri çoğu zaman kurup sonrada pasif hale getiriyoruz. Bu durum çok yanlış sonuçlara neden olmaktadır. Şiddetle kullanılmayan eklentilerin, özellikle bu eklentiler file cache yada sql cache kategorisine giriyorsa.

Siz cache eklentilerini pasif yaparsınız ancak eklentinin daha önce yerleştirdiği dosyalar yüzünden hala sisteminiz cache dosyalarını göstermeye devam edecektir. Bu ayarlar başta wp-config.php ye eklenenlerde dahil olmak üzere .htccess dosyasına eklenenler yüzünden olabilmektedir. Bu aslında ileri düzey bir sorun değil ancak bu sorunun ortaya çıkması ihtimal durumlardan biriside nginx ve benzeri proxy programlarının cache özelliğinden yararlandığımızda olabilmektedir. Yani sisteminizde nginx varsa pasif duran cache eklentileriniz tehlike yaratabilir.

Eğer pasif eklentileri ilerde kullanmayı düşünüyorum diyor ve silmeye çekiniyorsanız küçük bir kontrol sonrasında sorun olmadığını teyit ettikten sonra aynı şekilde devam edersiniz.

Öncelikle giriş yapmış iseniz çıkıs yapın ve sitenize öyle bakın. Eğer herhangi bir eskiye dönme yada yaptığınız bir değişikliğin olmadığını farkederseniz o zaman eklentileri komple kaldırırsınız. Bunun haricinde sorun olmadığında aynen güvenle devam edebilirsiniz.

Başıma gelen bir olay yüzünden bu yazıyı yazıyorum: kuaza.com sitemde kuazahaber son versiyon temayı kullanıyordum. Bir gün arkadaşımın bilgisayarından girdiğimde sitede orjinal tema görünüyordu. Şaşırtıcı değilmi. Eve gelince yeni tema, başka bir yerde de eski tema görünüyor :D

Bunun üzerine sorunu anlama çalışırken bütün eklentileri pasif yapıp tekrar denedim ama sonuç aynıydı. Sonra farkettim ki bir bilgisayarda üye girişi yapmışım diğerinde ise misafir konumundayım. Kendi bilgisayarımda üye çıkışı yaptığımda eski temanın bende de göründüğünü farkettim ve bunun akabinde cache eklentilerinin bu tarz bir özelliği aklıma geldi. Direk sadece cache eklentisini pasif yapıp üye girişi yaptığımda başarılı oldum.

Bunun kullanılmayan eklentilerin ne kadar zararlı olabileceğini anlatmak istedim. Seyir halinde sağdan devam…

Kategoriler
Webmaster yardım

Adsense reklam boyutunu Ekrana göre ayarlama [Otomatik]

Yeni nesil teknolojinin gelişmesiyle görsel anlamda sitelerinde duyarlı konuma gelmesi kaçınılmazdı. Bu detaylı bir konu aslında ama daha sonra detaylıca değineceğim. Şimdi ise duyarlı tasarımlarınız için adsense reklamlarının boyutunu otomatik olarak değiştirmeyi anlatacağım.

Neden?

Adsense reklamları sabit genişliktedir. Ancak duyarlı bir tasarımınız varsa ki bu girilen aparatın (iphone, ipad, mac) ekranına göre optimize olur, daralır ve tasarımı en iyi şekilde korurayarak kullanıcıya gösterir. Ancak sabit genişliği olan reklamların bu duyarlılığı algılaması zordur. Bunun içinde tasarımı bozmayacak şekilde adsense reklamlarını tarayıcının genişliğine göre gösterelim.

Nasıl?

Adsense kodunuzu aşağıdaki gibi düzenleyin. Renkli kısımlar değiştirmeniz gereken alanlardır..

<script type="text/javascript">
    google_ad_client = "ca-publisher-id";
    if (window.innerWidth >= 800) {
        google_ad_slot = "ad-unit-1";
        google_ad_width = 728;
        google_ad_height = 60;
    } else if (window.innerWidth < 400) {
        google_ad_slot = "ad-unit-2";
        google_ad_width = 300;
        google_ad_height = 250;
    } else {
        google_ad_slot = "ad-unit-3";
        google_ad_width = 468;
        google_ad_height = 60;
    }
</script>
<script type="text/javascript" 
 src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

3 Farklı reklam boyutu reklam hazırlayın ve kodlarını kaydedin. Sonrada yukarıdaki reklam kodlarına boyutlarına göre ekleyin.

 

Kategoriler
Php uygulamalari Php ve mysql Webmaster yardım

Php ile sql cache uygulamasi: Sisteminizi rahatlatin, sitenizi hizlandirin!

Sql cache, file cache ile nerdeyse ayni mantiga sahip bir php cache uygulamasidir. Tek farki sql cache verileri disk uzerinde degil mysql tablolarinda tutmasidir. Bunun file cache’ye gore bir cok artilarinin oldugunu dusunuyorum. Cunku bazi olumsuz durumlar file cache yapisinin iyi sekilde calisamamasina neden oluyor. Ornegin kullandiginiz hostun yada sunucunun disk yapisinin veya yazma hizinin dusuk olmasi cache sirasinda yavaslamalar ve optimasyon sorunlari yasamasina neden olur. Ozellikle SATA diskler uzerinde bu biraz daha gozle gorulur derecede kendini hissettirmektedir. SSD ve sas disk yapilari file cache icin en uygun olanlari ancak bunun eksikliginde sizlere sql cacheyi tavsiye edecegim. Mysql yapisi hizli islem yapmaya cok musait, file cacheden daha hizli ve aktif sekilde kullanim alani yaratir size.

Normalde localhostda sql cache yazisi icin denemeler ve testler yapiyordum, bunun icin bir kalip hazirladim, bu kalibi kullanarak birden fazla alan icin cache olusturabilirsiniz. Hazirladigim kalipda sadece cache alinacak alanin ismi ve cachede bekletilecegi suresini girmeniz yeterli olacak. Ve cache alinacak alanida belirttikten sonra hic ellemeden zamani geldiginde o bolum kendini guncellemis olacak. Mantik olarak cache alinan alanin ne kadar cachede kalacagi ve ne kadar ayni sorgunun gosterilecegini belirtebiliyoruz. boylece cache almadan onceki 50,100lerce sorguyu tek sorguya indirgemis olacagiz.

Uygulama iki bolumden olusuyor:

1: Fonksiyon bolumu, sizin duzenlemenize gerek olmayan bolum.

2: Cache icin kullanacaginiz kalip kod yigini.

Anlatima baslarken bunun biraz karisik gelebilecegini ancak mantik yuruttugunuzde gayet basarili bir calisma oldugunu anlayacaksiniz. Ayni tarz sistemi ayri tablo acmadan, sadece hazirladigim kod yiginini kullanarak wordpress de de istediginiz alani (buyuk sorguya neden olan yerleri) cache ye alabileceksiniz ki bu wordpress icin olan dokumani bir sonraki yazimda yazacagim.

Oncelikle kodu uygulayacaginiz sayfada mysql baglantisinin saglanmis olmasi gerekli, eger mysql baglantisi saglanmamis ve yeni basliyorsaniz asagidaki mysql baglanma kod yapisini kullanabilirsiniz, tabi oncesinde bu islem icin database olusturmaniz gerekli, yada var olan databaseye baglanti acmaniz gerekli asagidaki kod ile:

$conn = mysql_connect("localhost", "KULLANICI", "SIFRE");

if (!$conn) {
echo "baglantida sorun var: " . mysql_error();
exit;
}

if (!mysql_select_db("DATABASE")) {
echo "kullanilamiyor bu database: " . mysql_error();
exit;
}

Kendinize gore duzenlemeyi unutmayin.

Bu islemin hemen ardindan cache verilerini tutacagimiz tablomuzu mevcut databasemize eklememiz gerekli. Asagidaki kodu phpmyadmin den sorgu kismindan uygulayin:

CREATE TABLE IF NOT EXISTS kuaza_sqlcache (

id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
cache_ismi varchar(64) NOT NULL DEFAULT '',
cache_icerik longtext NOT NULL,
cache_zamani varchar(30) NOT NULL DEFAULT '',
cache_suresi int(10) NOT NULL DEFAULT '60',
PRIMARY KEY (id),
UNIQUE KEY cache_ismi (cache_ismi)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

Sorguladiginiz bu tabloya cache alanlari icin bize gerekli olan bilgileri kaydedecegiz, ve tekrar sonrasinda ekrana yazdiracagiz.

Simdi sira fonksiyonlarimiza geldi. Normalde fonksiyonlari kullanmamistim testlere ilk basladigimda, ancak hem kolaylik saglamasi hemde yeni arkadaslarin fonksiyonla olan baglarini guclendirmek adina boyle bir yol sectim. Hemde cache alacagimiz kalip kod yigini daha temiz ve sade bir duruma geldi. yinede bunu yazdigima bakmayin, anlayanlar icin basit, anlamayanlar icin biraz fazla gorunebilir :)

Bu fonksiyonlari ister ayri sayfadan, istersenizde cache alacaginiz sayfada bir yere ekleyin. Eger coklu bir sistemde calisiyorsaniz her sayfaya include ettiginiz belli dosyalariniz vardir, bu include ettiginiz dosyanin icerisine eklemeniz daha mantikli olacaktir.

/* Cache kontrol alani, buradan once kontrol yaptirip, sonrasinda gerekli islemlere baslayacagiz. */
function c_cachekontrol($cacheismi,$bilgiiste=""){
$sorgu=mysql_query("select cache_ismi,cache_icerik,cache_zamani,cache_suresi from kuaza_sqlcache where cache_ismi = '$cacheismi'");
$bilgi = mysql_fetch_array($sorgu);
if($bilgi > 0)
{
if($bilgiiste == "cache_zamani"){
return $bilgi["cache_zamani"];
}elseif($bilgiiste == "cache_suresi"){
return $bilgi["cache_suresi"];
}elseif($bilgiiste == "cache_icerik"){
return $bilgi["cache_icerik"];
}
}else{
return "tabloyok";
}
}

/* eger mysql tablomuz yoksa yeni tablo ve cache alinan kodlari tabloya yazdiracagiz,
boylece sonraki calistirmamizda bu kaydettigimiz tablodan cache alinacak.
*/
function c_yenicacheac($cacheismi,$cacheicerik,$cachesuresi="60"){
$alhepsini = $cacheicerik;
$zaman = time();
$yeniekle = mysql_query("INSERT INTO kuaza_sqlcache
(cache_ismi, cache_icerik, cache_zamani, cache_suresi)
VALUES ('$cacheismi', '$alhepsini', '$zaman','$cachesuresi')");
/*
Bu alanida sorgunun gerceklesip gerceklesmedini arka planda yani kullanici arayuzunde gostermeden ekrana basiyoruz.
Bunu gormek icin kaynak kod kismina bakmaniz yeterli olacaktir.
*/
if($yeniekle) {
return "";
} else {
return "";
}
}

/* Eger cache suresi belirledigimizden eski ise bu alan ilede varolan cache alanini guncelliyoruz. */
function c_cacheguncelle($cacheismi,$cacheicerik,$cachesuresi="60"){
$alhepsini = $cacheicerik;
$zaman = time();
$guncelle = mysql_query("UPDATE kuaza_sqlcache SET cache_icerik = '$alhepsini', cache_zamani = '$zaman', cache_suresi = '$cachesuresi' WHERE cache_ismi = '$cacheismi'");
/*
Bu alanida sorgunun gerceklesip gerceklesmedini arka planda yani kullanici arayuzunde gostermeden ekrana basiyoruz.
Bunu gormek icin kaynak kod kismina bakmaniz yeterli olacaktir.
*/
if($guncelle) {
return "";
} else {
return "";
}
}

Kod icerisinde ki alanlari anlayabileceginiz sekilde yorumlamaya calistim.

Simdi ise en can alici noktaya geldik diyebilirim. Cache almamizda bize en cok yardimci olacak alanlardan birisi, kalip kod yigini alanina geldik. Bunu sisteminize entegre etmeyi basardiginiz,da sonraki uygulamalarda zorluk cekmeyeceginize eminim. Bir kere yapan, sonraki eklemelerde zorlanmayacaktir.

Kod icerisinde gerekli aciklamalari yaptim, ancak sonrasinda da olayi daha iyi kavrayabilmeniz icin onemli bolumleri detayli sekilde yazacagim:

/*
cacheye alacaginiz bolum icin bir isim girin, 
boylece birden fazla alani cache alacaginizda farkli isimlerle 
yeni alanlar acabilirsiniz.
*/
$cacheismi = "cachedeneme4"; 

/*
Cacheye aldiginiz kodlarin ne SIKLIKLA yenilenecegini,
guncellenecegini buradan belirtebilirsiniz. Dakika cinsinden bir sayi girmeniz yeterli.
5 = 5 dakika, 60 = 1 saat.
*/
$cachesuresi = "160";

/*belirledigimiz cache ismini kontrol ettiriyoruz, varsa sonraki islemlere geciyoruz, yoksa yeni alan girip cache bolumu olusturuyoruz.*/
$bilgi = c_cachekontrol($cacheismi);

/* if ile daha once cache tablosunun acilip acilmadigini kontrol ediyoruz, eger tablo var ise sonraki adima geciyoruz. */
if($bilgi != "tabloyok"){

/* Buradan bize yardimci olacak cache zamanini ve belirlediginiz suresini aliyoruz. */
$db_cache_zamani = c_cachekontrol($cacheismi,"cache_zamani");
$db_cache_suresi = c_cachekontrol($cacheismi,"cache_suresi");

$cachetime = 60 * $db_cache_suresi; // 60 ile belirledigimiz cache suresini carparak suanki zamandan cikartacagiz, bir sonraki adimda.

/* 
if ile cachelenen icerigin zamanini hesapliyoruz ve 
daha once belirttigimiz dakikadan daha az ise (yani cache zamani icerisinde ise) cache zamani, 
direk cacheli alani ekrana yazdiriyoruz.
*/
if (time() - $cachetime < $db_cache_zamani) {

# cache belirttigimiz zaman icerisinde ise ekrana bastiriyoruz. Boylece tek sorguda hersey halletmis olduk.
echo unserialize(base64_decode(c_cachekontrol($cacheismi,"cache_icerik")));
echo "";
}else{
/*Eger cachenin suresi belirledigimiz dakikayi asmis ise, 
o zaman burdan yeniden normal kodlarimizi calistiriyoruz ve 
cache alanini guncellemesini sagliyoruz. */
ob_start();




// Cachelenecek kodlar ve sorgular alani (aynisi)





/* Ekrana basilan alanin kodlarini html alarak, var olan tabloyu yeniden guncelliyoruz. */
 echo c_cacheguncelle($cacheismi,base64_encode(serialize(ob_get_contents())),$cachesuresi); 
 
 ob_end_flush();
 }
 /* Zaman kontrol if fonksiyonu alani bitti, daha once actigimiz ve 
 tablo var yok kontrolu yaptigimiz if icin else alanina geciyoruz
 */

 }else{
 /* Eger sql cache alaninda belirledigimiz isimde bir cache alani yoksa, 
 buradan kodlarin html yapisini alarak yeni cache alanini ekliyoruz. 
 */
 ob_start();




// Cachelenecek kodlar ve sorgular alani (aynisi)





/* Alinan html kodlari yeni eklenecek tablomuza ekliyoruz. */
 echo c_yenicacheac($cacheismi,base64_encode(serialize(ob_get_contents())),$cachesuresi); 

 ob_end_flush();
 }
 /* Ve gerekli if kontrolleri bitti, yaptigimiz sorgu sayilari 1000 ken 2 oldu, hayirli olsun :) */

Kodlarin icerisinde butun alanlarin ne islem ve ne fonksiyon gorevi gordugunu belirttim.

Yinede unutmamaniz gereken kalip kod yigini alanindaki “Cachelenecek kodlar ve sorgular alani (aynisi)” kismi ikiside ayni olacak, yani bu alana cache alinmasini istediginiz sorgularinizi, kodlarinizi girmeniz gerekli. Genelde yuksek soegular oluyor, 50,60 sorgu gibi, o zaman buradaki uygulama ile sorgu sayisi 2 ye kadar dusecektir. Boylece gerek acilislarda olsun, gereksede sonraki sayfa gezintilerinde sitenizde gozle gorulur hizlanma olacaktir. bunun yaninda sunucunuzu yada hostunuzu rahatlatmasida cabasi :)

Bu uygulamanin faydasi bir tek mysql sorgularinda olmuyor arkadaslar, sistemi zorlayacak php sorgularinda veya fonksiyonlarinda da cache alma islemi uygulandigi icin ciddi derecede sisteminizi rahatlatacaktir.

Sitenizin hizlanacaginida hesaba katarsaniz hem kullanici sitenize girdiginde keyifli zaman gecirir, hemde arama motorlari icin cazip bir alan haline gelir. Guncellik konusuna deginmiyorum, orasi size bagli. Ancak hic bir kullanici, siz bile bir sayfanin acilmasini 5 saniye beklemek istemezsiniz :)

Uygulamayi gelistirmeye yetecek zamanim olursa el atar arada bir yenilikler eklemeye calisirim, bunun haricinde gelistirme amacli kodlari kullanacak arkadaslara simdiden basarilar diliyorum. Anlamadiginiz bir yer olursa konu altindan yorum ile beni uykumdan edip, pc basina cagirabilirsiniz.

Sevgiyle kalin, bol kodlu gunler :)

Kategoriler
Faydalı Bilgiler Vbulletin Webmaster yardım

Vbulletin üye olurken soru sorma!

Vbulletin siteniz varsa genelde botlarla ve reklam yazilimlariyla basiniz beladadir demektir. bunlar hergun sitenize binlerce sahte uye eklerler ve her istediklerinde de bu sahte uyeler yardimi ile forumlara konu acip reklam yaparlar. Bunlari temizlemek cogu zaman zor olur, cunku hergun acilan konu sayisi gittikce artar. Bu sorundan kurtulmanin yolu ya guvenlik resmi uygulamasini daha zor hale getirmek yada botlarin gecemeyecegi bir soru sormak. Soru sorarak botlari kolayca ekarte edebilirsiniz, bunun icin asagidaki adimlari takip edin:

1-)admin panel
2-)vbulletin seçenekler sekmesi
3-)Doğrulama Sistemi Yönetimi
4-)Question & Answer Verification işaretle
5-)Kayıt
6-)Add New Question
7-)soru yaz cevap yaz
8-)kayıt et

Doğrulama Sistemi Yönetimi soru ekleme – 1:

Doğrulama Sistemi Yönetimi soru ekleme – 2:

Ben suanda reCAPTCHA Doğrulama sistemini kullaniyorum, daha yeni basladim, ilerleyen zamanlarda etkisi hakkinda bu konu altina yorum duserim :)

Kategoriler
Faydalı Bilgiler Php uygulamalari Webmaster yardım

PHP hatalarını görme – hata kodlarını sayfaya yazdırma!

Php programcısı iseniz bunları mutlaka elinizin altında bir yere koymanız gerek, çünkü çoğu serverda yada hoştda hata kodlarının gösterimi php.ini ayar dosyasından kapatılmıştır. Bunun nedeni güvenlik amaçlıdır, böylece sitemiz hata verdiğinde kötü niyetli kişiler dosya isimlerini, sunucudaki yerini v.s göremez. Ancak kodlama işi ile uğraşan arkadaşlar için bu iyi bir konu değil. çünkü çoğu zaman gözümüzden atladığımız bir şey olur ve onu bulmak için hatanın nerde olduğunu görmemiz gerek. İsde aşağıdaki kodlarda bize bunu sağlayacak.

Php de çalıştığınız dosyanın en başına işinize yarayan kodu ekleyerek hata aldığınızda bu hataların neden kaynaklandığını görebilirsiniz.

Tüm raporları kapatır

error_reporting(0);

Basit hataları gösterir

error_reporting(E_ERROR | E_WARNING | E_PARSE);

E_NOTICE kullanarak gereksiz hata mesajlarından kurtuluruz

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

E_NOTICE harici tüm hataları gösterir. Bu ayar varsayılandır, php.ini dosyasında yer alabilir

error_reporting(E_ALL ^ E_NOTICE);

Tüm PHP hatalarını gösterir (yeni)

error_reporting(E_ALL);

Tüm PHP hatalarını gösterir

error_reporting(-1);

error_reporting(E_ALL); ile aynı görev

ini_set('error_reporting', E_ALL);

Anlamadiginiz yerde sorabilirsiniz :)

Kategoriler
Javascript / DHTML / Ajax JQuery Webmaster yardım

JQuery Metin Efektleri (5 tane) – 1

Hayatimiza girdiginden beri bizi bir cok sekilde sasirtan jquery, artik her sitede olmaz olmazlardan biri haline geldi. Gerek gorsel acidan, gerekse islevsel olarak bizlere cok fazla sey kattigini dusunuyorum. Bundan sonra gordugum ve hosuma giden jquery uygulamalarini seri halinde 5er 10ar paylasacagim. Serinin ilki icin simdiden hayirli olsun :)

1 – jQuery Textarea Sayaç Eklentisi [Son Sürüm 2]

Bu eklenti ile textarea alanina girilen kelimeleri, karakterleri kolayca saydirabiliyorsunuz. Cok basit ve kolayca sitelerinize uyarlayabileceginiz bir eklenti.

DEMO » Download » Kaynak »

2 – JQuery kullanarak Yaziya Metin Efekti vermek

Jquery ile yazilarinizin acilirken daktilo ile yaziliyor gibi gosterebilirsiniz. ister hizli ister yavas, bunlari kontrol etmek icin elementlerde mevcut.

DEMO » Download » Kaynak »

3 – JQuery Photoshop efektleri vermek


Photoshop olmadan bile, sadece küçük bir kod yazarak metin efektleri yapabilirsiniz.

DEMO » Download » Kaynak »

4 – JQuery Metin sifreleme (ROT-13), matrix effekti, yavas yavas acilma efekti


Bir cok uygulamayi icinde barindiran bir uygulama. matrix filmini bilenler icin diyorum ordaki yazilarin acilmasi tarzi efekt verebiliyorsunuz yazilariniza. bunun yaninda hizli ve kolay sekilde ROT-13 sifrelemesi yapabiliyorsunuz. Daktilo yazilari seklinde yazilariniz yavas yavas acilabiliyor, bunun gibi bir kac efekt daha mevcut, demoyu inceleyerek sizde gorebilirsiniz.

DEMO » Download » Kaynak »

5 – JQuery Metinlere soluk efekti vermek

Yazilariniza asagiya dogru soluklasan efektler verebilirsiniz, boylece onemli bilgileri en ustde belirgin sekilde on plana cikarabilirsiniz.

DEMO » Download » Kaynak »

Kategoriler
Faydalı Bilgiler SSH üzerine Webmaster yardım

Ssh de mysql sorgularını görme!

ssh ekraninda mysql programinin yaptigi sorgulari ve hangi tablonun sorgu yaptigini gormek icin asagidaki kodu kullanalim:

watch -n1 "mysqladmin processlist"

Ornek resim: