PHP – PDO Kullanan SQLite ile Basit CRUD İşlemleri
Bu derste PDO Kullanarak SQLite’a Veri Ekleyeceğiz. PHP’yi kullanarak, kullanıcının komut dosyasıyla doğrudan etkileşimde bulunmasına ve sözdizimini öğrenmesi için kolayca izin verebilirsiniz. SQLite, kendi kendine yeten ve işlemsel bir SQL veritabanı motorunu uygulayan süreç içi bir kütüphanedir. SQLite genellikle verdiğiniz hafıza miktarını arttırır. Bu nedenle geliştiricilerin çoğu, uygulamaları için veritabanı altyapısı olarak SQLite kullanmaktadır. Öyleyse kodlamayı yapalım …
Öncelikle, PHP’de SQLite 3’ü etkinleştireceğiz.
1. localhost sunucu klasörü XAMPP, vb’yi açın ve php.ini dosyasını bulun.
2. php.ini dosyasını açın ve satırdaki noktalı virgülleri kaldırarak sqlite3’ü etkinleştirin.
3. Değişiklikleri kaydedin ve Sunucuyu Yeniden Başlatın.
Veritabanı bağlantısı ve tablo oluşturma oluşturma
[baglanti.php]
Her hangi bir metin düzenleyicinizi açın (notepad ++, vb..). Sonra sadece aşağıdaki kodu kopyalayıp yapıştırın ve sonra baglanti.php olarak adlandırın.
1 2 3 4 5 6 7 8 9 10 11 12 | <?php $db = new PDO("sqlite:".__DIR__."/veritabani.sql"); $sorgu="CREATE TABLE IF NOT EXISTS `uye`( ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, ad TEXT, soyad TEXT, adres TEXT, tarih TEXT)"; $db->exec($sorgu); |
Arayüz Oluşturma
Arayüz oluşturmak için çok fazla CSS ve sınıf kullanmak yerine hazır CSS bir kütüphane olan bootstrap kütüphanesini kullandım. Tasarım mobile duyarlı olarak da güzel bir görünüm almış oldu. Bootstrap kütüphanesini projeye CDN olarak eklemek için aşağıdaki kodları <head></head>
arasına yapıştırın.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <!-- Optional theme --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <!-- Latest compiled and minified JavaScript --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> |
[index.html]
Arayüzde üye ekleme butonu, üyelerin listelendiği tablo ve gizli olarak üye eklemek yada üye güncellemek için modallar mevcut. Öncelikle aşağıdaki kodların tamamını kopyalayıp index.html adında bir dosyaya kaydedin. Sonra kodları parçalayarak açıklamaya devam edelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | <?php require("baglanti.php"); /*uye tablosundaki tüm kayıtları çekme sorgusu*/ $sql = 'SELECT * FROM uye ORDER BY ad'; $kayitlar=$db->query($sql); ?> <!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title> Tasarım Kodlama </title> <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <!-- Optional theme --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <!-- Latest compiled and minified JavaScript --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> </head> <body> <nav class="navbar navbar-default"> <div class="container-fluid"> <a class="navbar-brand" href="https://www.tasarimkodlama.com">Tasarım Kodlama</a> </div> </nav> <div class="col-md-3"></div> <div class="col-md-6 well"> <h3 class="text-primary">PHP - SQLite CRUD İşlemleri</h3> <hr style="border-top:1px dotted #ccc;" /> <button type="button" class="btn btn-success" data-toggle="modal" data-target="#form_modal"><span class="glyphicon glyphicon-plus"></span> Üye Ekle</button> <br /><br /> <table class="table table-bordered"> <thead class="alert-info"> <tr> <th>Ad</th> <th>Soyad</th> <th>Adres</th> <th>Doğum Tarihi</th> <th>İşlemler</th> </tr> </thead> <tbody> <!-- Eklenen Kayıtların Listelenmesi --> <?php foreach($kayitlar as $row) { ?> <tr> <td><?=$row['ad']?></td> <td><?=$row['soyad']?></td> <td><?=$row['adres']?></td> <td><?=$row['tarih']?></td> <td><button class="btn btn-warning" type="button" data-toggle="modal" data-target="#update_uye_<?=$row['ID']?>"><span class="glyphicon glyphicon-edit"></span> Düzenle</button> <a href="islem.php?id=<?=$row['ID']?>" class="btn btn-danger"><span class="glyphicon glyphicon-trash"></span> Sil</a></td> </tr> <?php } ?> </tbody> </table> </div> <!-- düzenleme: her bir kayıt için modal açılacak update_uye_3 gibi --> <?php $kayitlar->execute(); //kayıt çekme işlemini tekrarlıyoruz ?> <?php foreach($kayitlar as $row) { ?> <div class="modal fade" id="update_uye_<?=$row['ID']?>"> <div class="modal-dialog"> <div class="modal-content"> <form action="islem.php" method="POST"> <div class="modal-header"> <h3 class="modal-title">Üye Güncelle</h3> </div> <div class="modal-body"> <div class="col-md-2"></div> <div class="col-md-8"> <div class="form-group"> <label>Ad</label> <input type="text" class="form-control" value="<?=$row['ad']?>" name="ad" /> <input type="hidden" class="form-control" value="<?=$row['ID']?>" name="ID" /> </div> <div class="form-group"> <label>Soyad</label> <input type="text" class="form-control" value="<?=$row['soyad']?>" name="soyad" /> </div> <div class="form-group"> <label>Adres</label> <input type="text" class="form-control" value="<?=$row['adres']?>" name="adres" /> </div> <div class="form-group"> <label>Doğum Tarihi</label> <input type="text" class="form-control" value="<?=$row['tarih']?>" name="tarih" /> </div> </div> </div> <div style="clear:both;"></div> <div class="modal-footer"> <button class="btn btn-warning" name="guncelle"><span class="glyphicon glyphicon-update"></span> Güncelle</button> <button type="button" class="btn btn-danger" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span> Kapat</button> </div> </form> </div> </div> </div> <?php } ?> <!-- öğrenci ekleme modalı --> <div class="modal fade" id="form_modal" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <form method="POST" action="islem.php"> <div class="modal-header"> <h3 class="modal-title">Üye Ekle</h3> </div> <div class="modal-body"> <div class="col-md-2"></div> <div class="col-md-8"> <div class="form-group"> <label>Ad</label> <input type="text" class="form-control" name="ad" /> </div> <div class="form-group"> <label>Soyad</label> <input type="text" class="form-control" name="soyad" /> </div> <div class="form-group"> <label>Adres</label> <input type="text" class="form-control" name="adres" /> </div> <div class="form-group"> <label>Doğum Tarihi</label> <input type="date" class="form-control" name="tarih" /> </div> </div> </div> <div style="clear:both;"></div> <div class="modal-footer"> <button class="btn btn-primary" name="kaydet">Kaydet</button> <button type="button" class="btn btn-danger" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span> Kapat</button> </div> </form> </div> </div> </div> </body> </html> |
İlk olarak sayfanın üstünde veritabanı bağlantısı için baglanti.php sayfasını yüklüyoruz. Ardından listelenecek kayıtlar için gerekli sorgulama işlemini yapılır. Kayıtların listelenmesi sonraki satırlarda tablo içinde yapılacaktır.
1 2 3 4 5 6 7 8 9 10 | <?php require("baglanti.php"); /*uye tablosundaki tüm kayıtları çekme sorgusu*/ $sql = 'SELECT * FROM uye ORDER BY ad'; $kayitlar=$db->query($sql); ?> |
Üye ekleme için Gizli olarak modal oluşturulup Üye Ekle butonuna bu modalın ID değeri verilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <button type="button" class="btn btn-success" data-toggle="modal" data-target="#form_modal"><span class="glyphicon glyphicon-plus"></span> Üye Ekle</button> .......... .......... .......... <!-- öğrenci ekleme modalı --> <div class="modal fade" id="form_modal" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <form method="POST" action="islem.php"> <div class="modal-header"> <h3 class="modal-title">Üye Ekle</h3> </div> <div class="modal-body"> <div class="col-md-2"></div> <div class="col-md-8"> <div class="form-group"> <label>Ad</label> <input type="text" class="form-control" name="ad" /> </div> <div class="form-group"> <label>Soyad</label> <input type="text" class="form-control" name="soyad" /> </div> <div class="form-group"> <label>Adres</label> <input type="text" class="form-control" name="adres" /> </div> <div class="form-group"> <label>Doğum Tarihi</label> <input type="date" class="form-control" name="tarih" /> </div> </div> </div> <div style="clear:both;"></div> <div class="modal-footer"> <button class="btn btn-primary" name="kaydet">Kaydet</button> <button type="button" class="btn btn-danger" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span> Kapat</button> </div> </form> </div> </div> </div> |
Aşağıdaki tablo içinde kayıtlar ve işlemleri gösterilmektedir. Her bir kaydın yanında Güncelleme ve Silme için butonlar bulunmaktadır.
Güncelleme: Güncelleme butonuna bastığımızda aşağıdaki döngüden listelenen modallardan id değeri eşleşen modal gösterilmektedir.
Silme: Yine kayıt silme işlemi için islem.php sayfasına id değeri ile GET isteği yapılmaktadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <table class="table table-bordered"> <thead class="alert-info"> <tr> <th>Ad</th> <th>Soyad</th> <th>Adres</th> <th>Doğum Tarihi</th> <th>İşlemler</th> </tr> </thead> <tbody> <!-- Eklenen Kayıtların Listelenmesi --> <?php foreach($kayitlar as $row) { ?> <tr> <td><?=$row['ad']?></td> <td><?=$row['soyad']?></td> <td><?=$row['adres']?></td> <td><?=$row['tarih']?></td> <td><button class="btn btn-warning" type="button" data-toggle="modal" data-target="#update_uye_<?=$row['ID']?>"><span class="glyphicon glyphicon-edit"></span> Düzenle</button> <a href="islem.php?id=<?=$row['ID']?>" class="btn btn-danger"><span class="glyphicon glyphicon-trash"></span> Sil</a></td> </tr> <?php } ?> </tbody> </table> |
Kayıtları güncelleme modalı. Sorgulama tekrar yapılıp modallar gizli olarak oluşturulur.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | <!-- düzenleme: her bir kayıt için modal açılacak update_uye_3 gibi --> <?php $kayitlar->execute(); //kayıt çekme işlemini tekrarlıyoruz ?> <?php foreach($kayitlar as $row) { ?> <div class="modal fade" id="update_uye_<?=$row['ID']?>"> <div class="modal-dialog"> <div class="modal-content"> <form action="islem.php" method="POST"> <div class="modal-header"> <h3 class="modal-title">Üye Güncelle</h3> </div> <div class="modal-body"> <div class="col-md-2"></div> <div class="col-md-8"> <div class="form-group"> <label>Ad</label> <input type="text" class="form-control" value="<?=$row['ad']?>" name="ad" /> <input type="hidden" class="form-control" value="<?=$row['ID']?>" name="ID" /> </div> <div class="form-group"> <label>Soyad</label> <input type="text" class="form-control" value="<?=$row['soyad']?>" name="soyad" /> </div> <div class="form-group"> <label>Adres</label> <input type="text" class="form-control" value="<?=$row['adres']?>" name="adres" /> </div> <div class="form-group"> <label>Doğum Tarihi</label> <input type="text" class="form-control" value="<?=$row['tarih']?>" name="tarih" /> </div> </div> </div> <div style="clear:both;"></div> <div class="modal-footer"> <button class="btn btn-warning" name="guncelle"><span class="glyphicon glyphicon-update"></span> Güncelle</button> <button type="button" class="btn btn-danger" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span> Kapat</button> </div> </form> </div> </div> </div> <?php } ?> |
[islem.php]
İşlem sayfasında butonlar ile gelen POST yada GET isteklenlerine bağlı olarak veritabanı işelemleri gerçekleştirilir. Sayfanın sonundaki header bilgisi ile gönderilen sayfaya geri gönderilir.
İşlem sayfasında ekleme, silme ve güncelleme işlemleri, index sayfasında da listeleme sorguları yapılmıştır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <?php require("baglanti.php"); //$_POST['kaydet'] nesnesi varsa kaydetme yapacak if(isset($_POST['kaydet'])){ //Form verilerini değişkene aktarma $ad=$_POST['ad']; $soyad=$_POST['soyad']; $adres=$_POST['adres']; $tarih=$_POST['tarih']; $liste=[$ad,$soyad,$adres,$tarih]; //form ekleme sorgusu ve kayıt ekleme işlemi $kayit_sorgu = "INSERT INTO uye (ad, soyad, adres, tarih) VALUES (?,?,?,?)"; $stmt = $db->prepare($kayit_sorgu); $stmt->execute($liste); $db = null; } //$_POST['guncelle'] nesnesi varsa güncelleme yapacak if(isset($_POST['guncelle'])){ $ad=$_POST['ad']; $soyad=$_POST['soyad']; $adres=$_POST['adres']; $tarih=$_POST['tarih']; $ID=$_POST['ID']; //sorguda ? sırasına göre Form verilerini değişkene aktarma $liste=[$ad,$soyad,$adres,$tarih,$ID]; $sorgu = "UPDATE `uye` SET `ad` = ?, `soyad` = ?, `adres` = ?, `tarih` = ? WHERE `ID` = ?"; $stmt = $db->prepare($sorgu); $stmt->execute($liste); $db = null; } if(ISSET($_REQUEST['id'])){ $sorgu = "DELETE FROM `uye` WHERE ID = '$_REQUEST[id]'"; $stmt = $db->prepare($sorgu); $stmt->execute(); $db = null; } header('Location: ' . $_SERVER['HTTP_REFERER']); //geriye gitme |
Evet başarıyla PDO SQLite ile basit bir CRUD oluşturduk. Umarım bu basit öğretici aradığınız şey için size yardımcı olur. Daha fazla güncelleme ve öğretici için lütfen bu siteyi ziyarete devam edin. Kodlamanın tadını çıkarın !!!
1 Yorum