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
Php fonksiyonlari

Php ile dosya okutma, yazdırma, değiştirme, silme (.txt .rtf vs)

html-php-code-revArkadaşlar Bu konu hakkında sorular olduğunu gördüm ve sizle şimdi paylaşacağım bilgileri paylaşmak istedim…. PHP’de yukarıda ele aldığımız include ve require komutları ve biraz sonra değineceğimiz dosya okutma ve yazdırma işlemleri dolayısıyla bir dosyanın varlığı veya yokluğu, ya da bir dosyaya ait sandığımız ismin bid klasöre ait olması, programımızın sağlıklı işleyebilmesi açısından büyük önem taşır. PHP bu amaçla bize bir kaç kullanıma hazır fonksiyon sağlıyor. Burada kısaca bu fonksiyonlara ve nasıl kullanıldıklarına değinelim: Dosya var mı? file_exits() Bir dosyanın var olup olmadığını denetleyen bu fonksiyon, dosya varsa true/doğru, yoksa false/yanlış sonucunu verir. Örnek:

if ( file_exits ( “bir_dosya.txt” ) ) print (”Dosya var!”);

Dosya yoksa, program “Dosya var!” yazmadan yoluna devam edecektir. Dosya mı, dizin mi? is_file() ve is_dir() Kimi zaman klasörler de tıpkı dosyalar gibi adlandırılabilir. Bir dizinde gördüğümüz ismin gerçekten bir dosyaya ait olup olmadığını bu fonksiyonla sınarız. Sınama doğru, yani isim bir dosyaya ait ise fonksiyon true/doğru, değilse false/yanlış sonuç verir. Örnek:

if ( is_file ( “bir_dosya.txt” ) ) print (”Bu bir dosyadır!”);

İsim bir dosyaya ait değilse program “Bu bir dosyadır!” yazmadan yoluna devam edecektir. Sınamayı ismin bir klasöre ait ait olup olmadığına bakrarak da yaparız. Bu durumda is_dir() fonksiyonunu kullanırız. isim bir dizine aitse fonksiyon true/doğru, değilse false/yanlış sonuç verir. Örnek:

if ( is_dir ( “/bir_isim” ) ) print (”Bu bir dizindir!”);

İsim bir dizine ait değilse program “Bu bir dizindir!” yazmadan yoluna devam edecektir. Dosya okunabilir mi? is_readable() Programda kullanmaya karar vermeden önce bir dosyanın erişilebilir ve PHP tarafından okunabilir olup olmadığını sınayan bu fonksiyon, dosya okunabilir ise true/doğru, değilse false/yanlış sonuç verir. Örnek:

if ( is_readable ( “bir_dosya.txt” ) ) print (”Bu dosya okunabilir!”);

Dosya okunabilir değilse program “Bu dosya okunabilir!” yazmadan yoluna devam edecektir. (Unix ortamında varlığını görebildiğimiz her dosyanın okuma izni bulunmayabilir.) Dosya yazılabilir mi? is_writable() Programda kullanmaya karar vermeden önce bir dosyanın yazılabilir olup olmadığını sınayan bu fonksiyon, dosya yazılabilir ise true/doğru, değilse false/yanlış sonuç verir. Örnek:

if ( is_writable ( “bir_dosya.txt” ) ) print (”Bu dosyaya yazılabilir!”);

Dosya yazılabilir değilse program “Bu dosyaya yazılabilir!” yazmadan yoluna devam edecektir. (Unix ortamında varlığını görebildiğimiz hatta okuyabildiğimiz her dosyanın yazma izni bulunmayabilir.) Dosya çalıştırılabilir mi? is_executable() PHP programında kimi zaman sunucunun kullanmamıza izin verdiği haricî programları çalıştırız; PHP programımızın düzgün işlemesi bu harici programa bağlı olabilir. Böyle bir programı çalıştırmaya karar vermeden önce bir dosyanın çalıştırılabilir olup olmadığını sınayan bu fonksiyon, dosya çalıştırılabilir ise true/doğru, değilse false/yanlış sonuç verir. Örnek:

if ( is_executable ( “bir_dosya” ) ) print (”Bu dosya çalıştırılabilir!”);

Dosya çalıştırılabilir bir program değilse PHP programı “Bu dosya çalıştırılabilir!” yazmadan yoluna devam edecektir. (Unix ortamında varlığını görebildiğimiz her pprogram dosyasının çalıştırma izni bulunmayabilir.) Dosya boyutu: filesize() Adını verdiğimiz dosyanın boyutunu byte olarak bildirir: Örnek:

print (”Dosyanın boyutu:”); print filesize( “bir_dosya.txt” );

Dosyaya son erişim tarihi: fileadate(), filemtime() ve filectime() Adını verdiğimiz dosyaya son erişim tarihini bildirir. ne var ki bu bilgi Unix’in “epoch” biçimindedir: Örnek:

print (”Dosyanın son erişim tarihi:”); $dosya_tarihi = fileadate( “bir_dosya.txt” ); print ( ” $dosya_tarihi ” );

Eğer bu dosyanın son erişim tarihi 28 Temmuz 2008, Cuma 24:00:00 ise, PHP, Browser penceresine 964731600 yazacaktır. Bu komutun ürettiği bilgiyi, date() fonksiyonu ile anlaşılabilir hale getirebiliriz:

print (”Dosyanın son erişim tarihi:”); $dosya_tarihi = fileadate( “bir_dosya.txt” ); print date(”D d M Y G:i:s H”, $dosya_tarihi );

Bu kez PHP Browser penceresine 28 Jul 2008 242:00:00 00 yazdıracaktır. Tarih verilerinin date() fonksiyonu ile biçimlendirilmesini daha sonra ayrıntılı ele alacağız. filemtime(), bir dosyanın son değiştirildiği tarihi; filectime(), ise oluşturulduğu tarihi, yine Unix Epoch biçiminde bildirir; bu verinin anlaşılır biçimde görüntülenmesi için PHP’nin date() fonksiyonu kullanılır. Dosyalar oluşturma ve silme PHP ile yapabileceğimiz önemli dosya işlemlerinin başında olmayan bir dosyayı oluşturmak ve olan bir dosyayı silmek gelir. PHP’nin dosya oluşturma komutu touch() fonksiyonudur. Bu fonksiyona oluşturulmasıın istediğimiz dosyanın adını vermemiz gerekir. Örnek:

$dosya_dizin = "/inetpub/wwwroot/"; touch ("$dosya_dizin/yeni_belge.txt"); print ("yeni_belge adlı bir dosya oluşturuldu!"); ?>

Bu programı kişisel Web sunucuda denerken yeni dosyanın oluşturulacağı dizin olarak “/” işaretiyle sadece kökdizini belirtirseniz, dosya C: diskinde kökdizinde oluşturulur. Bu programı gerçek sunucuda çalıştırabilmek için yazma/okuma izni bulunan ve Web sunucunun erişebileceği bir dizinin adını vermeniz gerekir. Örneğin:

$dosya_dizin = "/wwwroot/mycgiserver.com/members/uNhM13Qnm/"; touch ("$dosya_dizin/yeni_belge.txt"); print ("yeni_belge adlı bir dosya oluşturuldu!"); ?>

Bu komutla oluşturacağınız dosya içi boş bir metin dosyası olacaktır. Eğer belirttiğiniz dizinde bu adı taşıyan bir dosya varsa, PHP dosyanın içeriğine dokunmayacak, fakat dosyanın erişim ve değişim tarihlerini değiştirecektir. PHP ile mevcut bir dosyayı silmek için unlink() fonksiyonunu kullanırız. Bu fonksiyon da silinecek dosyanın adı ile birlikte yolunu ister. Örnek:

$dosya_dizin = "/wwwroot/mycgiserver.com/members/uNhM13Qnm/"; unlink ("$dosya_dizin/yeni_belge.txt"); print ("yeni_belge adlı dosya silindi!"); ?>

Dosyaya yazma ve ek yapma: fwrite() ve fputs() Bir dosyaya yazma veya ek yapma, PHP açısından aynı işlemdir; sadece dosyaların açılışında fark vardır. Hatırlayacaksınız, bir dosyayı yazmak amacıyla açmak için:

$dosya = fopen( “bir_dosya.txt” , ‘w’ ) or die (”Dosya açılamıyor!”) ;

ek amacıyla açmak için ise

$dosya = fopen( “bir_dosya.txt” , ‘a’ ) or die (”Dosya açılamıyor!”) ;

kodunu yazmamız gerekir. Dana sonra yapılacak yazma ve ekleme işlemlerinin farkı, ‘w’ parametresi ile açılan dosyaya yazma işlemi en başından başlar ve devam eder; ‘a’ parametresi ile açaılan dosyaya yazma işlemi ise en sondan başlar ve devam eder. PHP’nin bir dosyaya metin yazdırma fonksiyonları olan fwrite() ve fputs() aynı biçimde yazılır ve aynı işlevi yerine getirirler; aralarında kesinlikle fark yoktur. Örnek:

$dosya_adi = "/inetpub/wwwroot/bir_dosya.txt"; $dosya = fopen ($dosya_adi , ‘w’) or die ("Dosya açılamadı!"); $metin = "Bu satır dosyaya yazılacak: Merhaba Dünya!n"; fwrite ( $dosya , $metin ) ; fputs ( $dosya , "Bu satır ise sonradan eklenecekn" ) ; fclose ($dosya); ?>

Bu programı çalıştırdığınızda, bir_dosya.txt adlı dosyada mevcut bütün içerik silenecek ve yerini $metin değişkeninin içerdiği “Bu satır dosyaya yazılacak: Merhaba Dünya!” yazısı ile “Bu satır ise sonradan eklenecek” cümlesi alacaktır. Her iki metnin sonunda da yeni satır işareti bulunduğuna dikkat edin. Bu programda dosya açma kıomutundaki ‘w’ parametresini siler, yerine ‘a’ yazarsanız, bu metinlerin dosyanın içeriğine eklendiğini görebilirsiniz. Kullanımdaki dosyayı kilitleyin! Web sunucusundaki dosyalarımızla sadece bir kişi işlem yapıyor olsa idi, bir sorun olmazdı; ne var ki, bir Web sitesine aynı anda birden fazla kişi eriyebilir ve dosyalarla işlem yapan programları çalıştırıyor olabilir. Bu, PHP’nin dosya işlemlerine engel olabilir. Bu sebeple, işlem için açacağımız bir dosyayı, önce kilitlemek yerinde bir önlem sayılır. Bunu, flock() fonsiyonu ile yaparız; bu fonksiyona kilitlemek istediğimiz dosyanın işaret değişkeninin adını ve kilit türünü belirten endeks sayısını parametre olarak yazarız. Örnek:

$dosya_adi = "/inetpub/wwwroot/bir_dosya.txt"; $dosya = fopen ($dosya_adi , ‘w’) or die ("Dosya açılamadı!"); flock ( $dosya , 2); // dosyayı kilitle $metin = "Bu satır dosyaya yazılacak: Merhaba Dünya!n"; fwrite ( $dosya , $metin ) ; fputs ( $dosya , "Bu satır ise sonradan eklenecekn" ) ; flock ( $dosya , 3); //dosyayı kilidini aç fclose ($dosya); ?>

Bu fonksiyon ile kullanabileceğimiz endeks parametreleri şunlardır: 1 Paylaşım Diğer proseslerin dosyayı paylaşmalarına imkan verir 2 Tam Diğer proseslerin dosyaile işlem yapmasına engel olur 3 Serbest Dosyanın 1 veya 2 olan kilidini kaldırır Bir dosya, herhangi bir PHP programı tarafından kilitlendiği anda, aynı dsyayı daha sonra kilitlemeye kalkan diğer programlar kendilerinden önce konulmuş kilide saygı gösterirler.

Kaynak: Ceviz.net / RoCaLL

Kategoriler
Php ve mysql

php mysql islemleri – ekleme, silme, duzenleme, listeleme !!

php2ek5arkadaslar bunu uzun zamandir yapmak istiyordum php konusunda

kendini gelistirmek isteyen arkadaslar icin guzel bir dokuman olacak eminim.. oncelikle dokuman su ana kadarki son sistemlerde denenmistir ve sorun gorulmemistir, (php 5 …), kullandigim vista sisteminde de denedim, localde yani.. dokuman gelistirilmeye acik, sorun olursa konu altinda yorum yazarak yardim alabilirsiniz.

aragida anlatilan kodlar kullanilarak gelistirilmeye baslanan bir veb sitesi ve temasi demosu:
Demo silinmistir :s
Yukaridaki demo’nun Kaynak dosyalari download:
http://www.kuaza.com/kuaza-tema-arsivi-f193/php-islemlerini-yapabilen-yeni-tema-50-bitti-t2244.html

yukaridaki link kuaza tema arsivi icin hazirlanan bir iceriktir, gelistirilmeye devam edilmektedir..
gorus ve onerilerinizi yazabilirsiniz..

simdi gel gelelim okumanimizin baslangicina oncelikle kendimize bir veritabani olusturuyoruz ve asagidaki bilgileri veri tabanindan olusturdugumuz veritabanina yukluyoruz..


CREATE TABLE `not_defteri` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `baslik` varchar(255) NOT NULL,
  `aciklama` varchar(255) NOT NULL,
  `resim` varchar(255) NOT NULL,
  `ekleyen` varchar(255) NOT NULL,
  `tarih` varchar(255) NOT NULL,
  `k_site` varchar(255) NOT NULL,
  `k_url` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=67 ;


— Tablo döküm verisi `not_defteri`

INSERT INTO `not_defteri` (`id`, `baslik`, `aciklama`, `resim`, `ekleyen`, `tarih`, `k_site`, `k_url`) VALUES
(1, ‘maffay’, ‘maffay hakkinda hersey :)’, ‘resim.png’, ‘kuaza’, ‘2008’, ‘site 1’, ‘kuaza.com’),
(2, ‘baba nerdesin soyle’, ‘Bu site paylaşılan dosyaları içerisinde barındırmamaktadır,
dosyalar farklı kaynaklardan derlenip paylasılmaktadır ve sorumlulukları
tamamen kaynaklarına aittir.Hak sahibinin talebi durumunda paylasımlar
derhal sitemizden kaldırılacaktır.
Sitede verilen lin’, ‘http://www.kuaza.com/out/i45812_kk.jpg ‘, ‘pala’, ‘2009’,
‘bir kuaza olusumudur :)’, ‘kuaza.com’),
(3, ‘Baslik 3’, ‘Modern Kristallitler’, ‘resim.png’, ‘kuaza’, ‘2008’, ‘site 3’, ‘kuaza.com’),
(4, ‘Baslik 4’, ‘Masa Lambalari’, ‘resim.png’, ‘kuaza’, ‘2008’, ‘site 4’, ‘kuaza.com’),
(5, ‘Baslik 5’, ‘Aplikler’, ‘resim.png’, ‘kuaza’, ‘2008’, ‘site 5’, ‘kuaza.com’),
(48, ‘ne basligi’, ‘dfgdfgdfgdfgdfg’, ‘sdfsdfsd’, ‘fsdf’, ‘sdfsd’, ‘fsdf’, ‘sdfsd’),
(47, ‘kuaza.net php dersleri’, ‘aciklama icin zaman yok be guzelim’,
‘http://www.kuaza.com/out/i45657_image0011hk3rq3fb2iswp2.jpg’, ‘maffay61’,
’11-2-2008′, ‘ucretsiz resim yukleyin’, ‘kuaza.com’),
(66, ‘Sonuçları şşüü’, ‘Sonuçları şşüü’, ‘Sonuçları şşüü’, ‘Sonuçları şşüü’,
‘Sonuçları şşüü’, ‘Sonuçları şşüü’,
‘Sonuçları şşüü’);

 

sonrasinda baglanti bilgilerimizi iceren sayfamizi hazirlayalim…

baglan.php


<?PHP

$conn mysql_connect("localhost""root""");

if (!$conn) {
    echo 
"Unable to connect to DB: " mysql_error();
    exit;
}
  
if (!
mysql_select_db("deneme")) {
    echo 
"Unable to select mydbname: " mysql_error();
    exit;
}
mysql_query ("SET NAMES ‘latin5’ ");
?>

 

bu yukaidaki bilgileri kendinize gore gerekli yerlerini duzenleyin.. veri tabanina baglantimiz basarili olacaktir, sonrasinda ilk sayfamiz listeleme sayfamiz olsun, index sayfasinda veritabanimizdan gelen bilgileri listeleyelim..

k_index.php


<?PHP
require_once(‘baglan.php’);
?>
<table width="800px">
<tr>
<td bgcolor="gray">Sira</td>
<td bgcolor="gray">baslik</td>
<td bgcolor="gray">aciklama</td>
<td bgcolor="gray">resim</td>
<td bgcolor="gray">ekleyen</td>
<td bgcolor="gray">tarih</td>
<td bgcolor="gray">Site</td>
</tr>
<?php

$sql "SELECT id as id, baslik, aciklama, resim, ekleyen, tarih, k_site, k_url 
    FROM   not_defteri
    WHERE  id"
;

$result mysql_query($sql);

if (!$result) {
    echo 
"Could not successfully run query ($sql) from DB: " mysql_error();
    exit;
}

if (mysql_num_rows($result) == 0) {
    echo 
"No rows found, nothing to print so am exiting";
    exit;
}

// While a row of data exists, put that row in $row as an associative array
// Note: If you’re expecting just one row, no need to use a loop
// Note: If you put extract($row); inside the following loop, you’ll
//    then create $userid, $fullname, and $userstatus

while ($row mysql_fetch_assoc($result)) {
    

$id=$row[‘id’];
$baslik=$row[‘baslik’];
$aciklama=$row[‘aciklama’];
$resim=$row[‘resim’];
$ekleyen=$row[‘ekleyen’];
$tarih=$row[‘tarih’];
$k_site=$row[‘k_site’];
$k_url=$row[‘k_url’];

?>

<tr><td><?php echo "$id"?></td>
<td> <?php echo "$baslik"?></td>

<td> <?php echo "$aciklama"?></td>
<td> <a href="<?php echo "$resim"?>" /> Resmi gormek icin tiklayin</a></td>
<td> <?php echo "$ekleyen"?></td>
<td> <?php echo "$tarih"?></td>
<td> <a href="http://<?php echo "$k_url"?>"><?php echo "$k_site"?></a></td>

<?php 

}

mysql_free_result($result);
?>
</tr>
</table>

 

yukaridaki listeleme sayfasina dikkat ederseniz oncelikle baglan.php sayfasini sayfamiza cagirdik sonrasinda gelen bilgileri degiskenlere atadik, ve alt tarafindaki tablolara yansittik..

simdide ekleme silme ve duzenleme sayfamizi yapalim..

k_islem.php


<style type="text/css">
<!–
.style1 {
    color: #FF8040;
    font-weight: bold;
}
–>
</style>
<form action="k_ekle.php" method="POST">
<table width="439" border="0">
  <tr>
    <td width="53" height="32"><span class="style1">Bolumler</span></td>
    <td width="370">&nbsp;<span class="style1">Doldurulmasi Zorunlu Alanlar</span></td>
  </tr>
  <tr>
    <td>Baslik</td>
    <td><input name="baslik" type="text"/ size="60"></td>
  </tr>
  <tr>
    <td>aciklama</td>
    <td><textarea name="aciklama" rows="10" cols="45"></textarea></td>
  </tr>
  <tr>
    <td>Resim</td>
    <td><input name="resim" type="text"/ size="60"></td>
  </tr>
  <tr>
    <td>Ekleyen</td>
    <td><input name="ekleyen" type="text"/ size="60"></td>
  </tr>
  <tr>
    <td>Tarih</td>
    <td><input name="tarih" type="text"/ size="60"></td>
  </tr>
  <tr>
    <td>Site ismi</td>
    <td><input name="k_site" type="text"/ size="60"></td>
  </tr>
  <tr>
    <td>Site url</td>
    <td><input name="k_url" type="text"/ size="60"></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input type="submit" value="Ekle"/></td>
  </tr>
</table>
</form>
<table width="0">
<tr>
<td bgcolor="gray">Sira</td>
<td bgcolor="gray">baslik</td>
<td bgcolor="gray">aciklama</td>
<td bgcolor="gray">resim</td>
<td bgcolor="gray">ekleyen</td>
<td bgcolor="gray">tarih</td>
<td bgcolor="gray">Site</td>
<td colspan="2" bgcolor="gray">islem</td>
</tr>

<?PHP
require_once(‘baglan.php’);

$sql "SELECT id as id, baslik, aciklama, resim, ekleyen, tarih, k_site, k_url 
    FROM   not_defteri
    WHERE  id"
;

$result mysql_query($sql);

if (!$result) {
    echo 
"Could not successfully run query ($sql) from DB: " mysql_error();
    exit;
}

if (mysql_num_rows($result) == 0) {
    echo 
"No rows found, nothing to print so am exiting";
    exit;
}

while ($row mysql_fetch_assoc($result)) {
    

$id=$row[‘id’];
$baslik=$row[‘baslik’];
$aciklama=$row[‘aciklama’];
$resim=$row[‘resim’];
$ekleyen=$row[‘ekleyen’];
$tarih=$row[‘tarih’];
$k_site=$row[‘k_site’];
$k_url=$row[‘k_url’];

?>

<tr><td><?php echo "$id"?></td>
<td> <?php echo "$baslik"?></td>

<td> <?php echo "$aciklama"?></td>
<td> <a href="<?php echo "$resim"?>" /> Resmi gormek icin tiklayin</a></td>
<td> <?php echo "$ekleyen"?></td>
<td> <?php echo "$tarih"?></td>
<td> <a href="http://<?php echo "$k_url"?>"><?php echo "$k_site"?></a></td>
<td> <a href="k_duzenle.php?id=<?php echo "$id"?>">Duzenle</a></td>
<td> <a href="k_sil.php?id=<?php echo "$id"?>">Sil</a></td>
<?php 

}

mysql_free_result($result);
?>
</tr>
</table>

 

yukaridaki islem sayfamizda da oncelikle ekleme bolumu yaptik ve hemen altinada veritabanindaki bilgileri listeleyerek duzenleme ve silme alanlari ekledik, bu sekilde listelenen bilgileri duzenleme ve silme linklerini kullanarak islem yapabilecegiz..

———-
Listelemeyi Sondan Baslayarak yapmak icin asagidakileri uygulamaniz yeterlidir:

Bunu

butun

kodlarinizda,

k_index.php

icin ve

k_islem.php

icinde kullanabilirsiniz.

 

listeleme islemini sondan baslayarak yapmak icin bu komutu kullanacagiz:

ORDER by id DESC

yani listeleme sayfamiz olan

k_islem.php

, sizinkini bilmiyorum herneyse, bu sekildeki kodlari:


$sql "SELECT id as id, baslik, aciklama, resim, ekleyen, tarih, k_site, k_url 
    FROM   not_defteri
    WHERE  id"
;     

bu sekilde degistirecegiz:

$sql "SELECT id as id, baslik, aciklama, resim, ekleyen, tarih, k_site, k_url 
    FROM   not_defteri
    ORDER by id DESC"
;     

yani sorgu sonundaki

WHERE id

degerine bununla degistirdigimizde :

ORDER by id DESC

Siralamayi sondan baslatarak yaptirmis oluyoruz…

——–

ama once eklemek istedigimiz bilgilerin gidecegi ve veritabanina eklenmesini saglayan sayfamizi olusturmaya..

k_ekle.php


<?PHP
require_once(‘baglan.php’);
?>

<?php

# güvenli form ç?kt?lar?
$baslik  strip_tags(htmlspecialchars(mysql_real_escape_string

($_POST["baslik"])));
$aciklama strip_tags(htmlspecialchars(mysql_real_escape_string
($_POST["aciklama"])));
$resim  strip_tags(htmlspecialchars(mysql_real_escape_string
($_POST["resim"])));
$ekleyen strip_tags(htmlspecialchars(mysql_real_escape_string
($_POST["ekleyen"])));
$tarih strip_tags(htmlspecialchars(mysql_real_escape_string
($_POST["tarih"])));
$k_site strip_tags(htmlspecialchars(mysql_real_escape_string
($_POST["k_site"])));
$k_url strip_tags(htmlspecialchars(mysql_real_escape_string
($_POST["k_url"])));

if(($baslik=="") or ($aciklama=="") or ($resim=="") or ($ekleyen=="") or ($tarih=="") or
 (
$k_site=="") or ($k_url=="")){
echo 
"Lutfen bos alan birakmayiniz<br />
<a href=’k_islem.php’>Tekrar Denemek icin geri donebilirsiniz</a>"
;
}else{

# kay?t sorgusu
$query mysql_query("INSERT INTO not_defteri 
(baslik,aciklama,resim,ekleyen,tarih,k_site,k_url) 
VALUES (‘$baslik’,’$aciklama’,’$resim’,’$ekleyen’,’$tarih’,’$k_site’,’$k_url’)"
);

# kontrol ediliyor
if($query) {
echo 
"kayit tamam";
echo 
"<br /><a href=’k_islem.php’>
geriye donerek islemlere devam edebilirsiniz</a>"
;
} else {
echo 
"kayit tamamlanamadi <br />
<a href=’k_islem.php’>Tekrar Denemek icin geri donebilirsiniz</a>"
;

}
}
?>

 

gordugunuz gibi ilk basta gelen verinin guvenirliligini kontrol ettik, ve ilerde gelebilecek aciklaara karsi veritabanina eklenen bilgileri sinadik..

 

sira geldi duzenleme sayfamizin yapimina gelen veriyi duzenlemek icin yukaridaki sayfada(k_islem.php) listeledigimiz veritabani id lerine duzenle linki eklemistirk, bu duzenle linkine tikladiktan sonra duzenleme yapacagimiz sayfayi olusturalim..

k_duzenle.php


<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
</head><?PHP
require_once(‘baglan.php’);
?>

   <?php 

# Once bilgileri al
$id=(int)$_GET[‘id’];

$sorgu=mysql_query("select * from not_defteri where id=’$id’");
$bilgi mysql_fetch_array($sorgu); 

echo ‘<form method="POST" action="k_baglan_duzenle.php">
<table width="439" border="0">
  <tr>
    <td width="53" height="32"><span class="style1">Bolumler</span></td>
    <td width="370">&nbsp;<span class="style1">Doldurulmasi Zorunlu Alanlar</span></td>
  </tr>
<input type="hidden" name="id" value="’
.$id.‘">
  <tr>
    <td>Baslik</td>
    <td><input name="baslik" value="’
.$bilgi[baslik].‘" type="text"/ size="60"></td>
  </tr>
  <tr>
    <td>aciklama</td>
    <td><textarea name="aciklama" rows="10" cols="45">’
.$bilgi[aciklama].

</textarea></td>
  </tr>
  <tr>
    <td>Resim</td>
    <td><input name="resim" value="’
.$bilgi[resim].‘" type="text"/ size="60"></td>
  </tr>
  <tr>
    <td>Ekleyen</td>
    <td><input name="ekleyen" value="’
.$bilgi[ekleyen].‘" type="text"/ size="60"></td>
  </tr>
  <tr>
    <td>Tarih</td>
    <td><input name="tarih" value="’
.$bilgi[tarih].‘" type="text"/ size="60"></td>
  </tr>
  <tr>
    <td>Site ismi</td>
    <td><input name="k_site" value="’
.$bilgi[k_site].‘" type="text"/ size="60"></td>
  </tr>
  <tr>
    <td>Site url</td>
    <td><input name="k_url" value="’
.$bilgi[k_url].‘" type="text"/ size="60"></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input type="submit" value="Ekle"/></td>
  </tr>
</table>
</form>’
;  ?> 
</html>

 

en basa yazdigimiz html karakter seti komutu veritabanindan gelen tr karakterli bilgilerin bozuk cikmamasini saglamak ;;

sonrasinda k_islem.php sayfasindan gelen id yi get metoduyla aldik ve o id deki bilgileri listeledik..

listeleme isleminden sonra yaptigimiz degisikliklerin veritabanina kaydedilmesi icin bize bir de bu bilgilerin yollandigi update sayfasi lazim, gelin simdi bunu yapalim..

k_baglan_duzenle.php


  <?PHP
require_once(‘baglan.php’);
?>
<?php
$id
=$_POST["id"];
$baslik=$_POST["baslik"];
$aciklama=$_POST["aciklama"];
$ekleyen=$_POST["ekleyen"];
$resim=$_POST["resim"];
$tarih=$_POST["tarih"];
$k_site=$_POST["k_site"];
$k_url=$_POST["k_url"];

$guncelle=mysql_query("update not_defteri SET 

baslik=’$baslik’,aciklama=’$aciklama’,
ekleyen=’$ekleyen’,resim=’$resim’,tarih=’$tarih’,k_site=’$k_site’,
k_url=’$k_url’ where id=’$id’");

if($guncelle) {

echo "guncelleme basarili oldu<br />
<a href=’k_islem.php’>geriye donerek islemlere devam edebilirsiniz</a>"
;
}else{
echo 
"guncelleme basarisiz oldu";
}
?>

bir ocneki sayfamizdan k_duzenle.php sayfamizdan yani gelen bilgileri degiskenlere atadik, ve sonrasinda update komutunu kullanarak veritabanina eklettirdik..

duzenleme sayfamizda bitmistir simdi gelelim silme sayfamiza..

daha once k_islem.php sayfasindan sil linki eklemistik, buna tiklayarak sil komutunu yapmamiz icin bize gerekli olan son sayfada,

 

k_sil.php


<?php
require_once(‘baglan.php’);

$id=$_GET["id"];
echo 
"$id";
$sil=mysql_query("delete from not_defteri where id=’$id’");
if(
$sil){
echo 
"silme islemi basarili";
}else{
echo 
"silme islemi basarisiz";
}
?>

yukaridaki komutlada get metoduyla gelen id yi degiskene atadik ve degiskeni delete kodu kullanarak veritabanindan sildik..

islem bu kadar arkadaslar, sorulariniz olursa cekinmeyin sorun..

vista kullaniyorum localhostta sorunsuz bir sekilde calisiyor, sizde denemelerini yapmak icin yukaridaki dokumanlari kullanabilirsiniz..