Bu yazıda MySQL veritabanı kullanarak Kayıt Listeleme, Ekleme, Güncelleme ve Silme (Select, Insert, Update ve Delete) işlemlerini gerçekleştireceğiz. MySQL veri tabanı bağlantısı için PDO sınıfından örnek bir nesne oluşturup bağlantı sağlayacağız.
Veritabanı Oluşturma
Eğer local (yerel) bir bilgisayarda çalışıyorsanız PHP ile veri tabanı oluşturmanın en basit yöntemlerinden bir tanesi PHPMyAdmin kullanmaktır. Tarayıcıdan http://localhost/phpmyadmin yazıp enter tuşuna basın.
NOT: Unutmayın localhost çalışabilmesi için yerel bilgisayarınızda bir sunucu hizmeti mevcut olması gerekiyor. Ben kişisel PHP deneyimlerim için XAMPP programını kullanıyorum. Bir PHP sayfa geliştirmek için gerekli herşeyi barındırmaktadır.
PHPMyadmin açıldıktan sonra sirket adında bir veritabanını aşağıdaki gibi oluşturun.
MySQL Veritabanı Bağlantısı Oluşturma
baglanti.php
Her hangi bir metin editörü açıp aşağıdaki kodları yapıştırın. Ayrıca veri tabanı bağlantısı gerçekleştirildikten sonra içindeki tablo mevcut değilse tablo oluşturulacaktır.
Not 2: Ancak tablo oluşturmayı genellikle PHPMyadmin ile yapmanızı öneririm.
Not 1: Yerel bilgisayarda kullanıcı adı root, şifre de genelde yoktur. Aşağıdaki kullanıcı adı ve şifre bilgileri sisteme göre değişiklik gösterebilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php $sunucu = "localhost"; $kullanici = "root"; $sifre = ""; $vt = "sirket"; try { $db = new PDO("mysql:host=$sunucu;dbname=$vt;charset=utf8mb4", $kullanici, $sifre); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sorgu="CREATE TABLE IF NOT EXISTS `uye`( ID INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, ad VARCHAR(50), soyad VARCHAR(50), adres VARCHAR(250), tarih DATE)"; $db->exec($sorgu); } catch(PDOException $e) { echo $sorgu. "<br>" . $e->getMessage(); } |
PDO Kayıt Listeleme ve Arayüz Tasarımı
index.php
Arayüz işlemleri için bootstrap kütüphanesi çok işlevseldir. Tasarımlarınız mobil duyarlı olması için bootstrap ve benzeri CSS framework kullanmanızı tavsiye ederim. Bu çalışmada tasarımın tutarlı olması için bootstrap kütüphanesi kullanılmıştır. Kütüphaneyi kullanmak için 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> |
Açıklamların sonunda index.php dosyasının tamamına ulaşabilirsiniz.
Arayüz bağlantısını öncelikle parçalı olarak anlatalım. Yukarıdaki gibi tasarımda Üye Ekle butonu ve butona basında ekleme modalı gelmesi için aşağıdaki gibi formu HTML yapısını oluşturuyoruz.
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> |
Kayıt ekleme butonuna basınca modal aşağıdaki gibi görünecektir.
Kayıtların listelenmesi ve güncelle;sil butonları için ise tasarıma aşağıdaki HTML ve PHP kodlarını ekliyoruz.
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> |
Şimdi geldi güncelle butonuna basınca neler olacağına aşağıdaki gibi her id ile uyumlu birer tane modal oluşturuyoruz. Bunun için kayıtları yine foreach döngüsü ile çekip modalları oluşturuyoruz.
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 } ?> |
Güncelleme butonuna basında güncelleme sayfası aşağıdaki gibi görünecektir.
Açıklamalardan sonra index.php dosyasının tüm hali şu şekilde oluşacaktır.
index.php
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 - MySQL 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> |
PDO MySQL Kayıt Ekleme, Silme ve Güncelleme İşlemleri
Insert, Update ve Delete işlemleri için gerekli kodları aşağıdaki gibi oluşturuyoruz. islem.php adında bir dosya açıp, aşağıdaki kodları yapıştırınız.
islem.php
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 |
Elinizde başarıyla PDO ile MySQL 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 ziyaret edin. Kodlamanın tadını çıkarın !!!
1 Yorum