İyi günler bu yazımda Php ile Mysql veritabanına bağlantı yapıp tabloya kayıt ekleyeceğiz ve bu kayıtları listeleyeceğiz.Bu işlemleri yapmak için bilgisayarınızda Php ve Mysql kurulu olmak zorundadır.
Neden site yaparken veritabanına ihtiyaç duyarız sorusuna gelecek olursak eğer etkileşimli bir site yapacaksanız veritabanı olması çok önemlidir.Html/Css ile yapılan siteler statik sitelerdir.Yani kullanıcıdan veri alıp işlem yapmazlar.Php gibi diller ile sunucu tarafında yazacağımız kodlar ile sitelerimizi dinamik hale getirebiliriz.
Şimdi işin en güzel tarafı olan kodlama tarafına geçelim.?
Öncelikle mysql ile veritabanı ve tablomuzu oluşturmamız gerekiyor.Ben bunun için Mysql Workbench programını kullanıyorum.Fakat komut satırından da veritabanı ve tabloları oluşturabilirsiniz.Test veritabanında bilgiler diye bir tablo oluşturdum.Tablomunuzun sql kodları aşağıdaki gibidir.
CREATE TABLE `test`.`bilgiler` ( `id` INT NOT NULL AUTO_INCREMENT, `ad` VARCHAR(25) NULL, `soyad` VARCHAR(25) NULL, PRIMARY KEY (`id`));
Kayıt Ekleme
Şimdi ise veritabanımıza nasıl kayıt ekliyoruz ona bakalım.Html sayfamızı hazırlıyoruz.Sayfamızda 2 adet ad ve soyad şeklinde input var.Birde kayıtları göndereceğimiz butonumuz var.Görünüm daha güzel olması için Bootstrap kullandım.Gerekli dosyaları head etiketi içinde import ettim.Dom elementleri içinde de Bootstrap sınıflarını kullandım.Bootstrap gerçekten güzel bir nimet,normal html etiketlerinin görünümünü gerçekten daha güzel yapıyor.Ayrıca kendine has bazı özellikleri ile görünüme zenginlik katıyor.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.6/umd/popper.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js"></script> </head> <body> <div class="container"> <form action="php_kaydet.php" method="post" class="form-control"> <input type="text" placeholder="Ad" name="ad" class="form-control"> <input type="text" placeholder="Soyad" name="soyad" class="form-control"> <input type="submit" value="Kaydet"> </form> </div> </div> </body> </html>
Bu kodda önemli noktalara değinmek istiyorum.Form etiketi içindeki action elementi isteği hangi sayfaya göndereceğimizi belirtir.Biz o sayfaya istek atıp o sayfada işlem yaptırmamız gerekiyor.Metodumuz ise ‘post’ bu metod ile göndereceğimiz veriler adres çubuğunda görünmeyecektir.Özellikle önemli bilgiler gönderecekseniz bu metodu kullanmanız gerekecektir.Get metodu ile gönderirseniz ise gönderdiğiniz bilgiler adres çubuğunda görünür.Bu konu ile ilgili yazım için linke tıklayınız.
http://fatihdemirag.net/php-get-post-istekleri/
Şimdi ise sunucu tarafında yazacağımız kodlara yani php_kaydet.php sayfasının içeriğine geçelim.
<?php $con=mysqli_connect("localhost","dbKullaniciAdi","dbSifre","test") or die("Hata"); $ad=$_POST['ad']; $soyad=$_POST['soyad']; $sql="insert into bilgiler(ad,soyad) values('$ad','$soyad')"; $res=mysqli_query($con,$sql); if ($res) echo "Bilgiler kaydedildi."; else echo "Bilgiler kaydedilemedi."; mysqli_close($con); ?>
İlk satırda $con değişkeni içine mysql bağlantımızı atıyoruz.Bu değişkeni daha sonra sorgu çalıştırırken kullanacağız.Burda önemli noktalarda biriside sayfaya gelen isteklerdir.Eğer html sayfamızda input etiketinin name özelliği ‘ad’ ise post içinde gelen değişkenimizin içeriğide ad olmak zorundadır.Yani name=”ad” ise $_POST[‘ad’] olmak zorundadır.Buraya dikkat etmekte fayda var.
<input type="text" placeholder="Ad" name="ad" class="form-control">
$ad=$_POST['ad'];
Daha sonra $res değişkenimizin içinde sorgumuzu çalıştırıyoruz.Çalıştırdıktan sonra eğer sorgu true dönmüş ise verimiz eklenmiş demektir.En son ise veritabanı bağlantımızı kapatıyoruz.
Kayıtları Listeleme
Kayıtları listelerken ben tablo kullandım ama istenilen etiketleri kullanılabilir.Tablo daha düzenli olduğu için onu kullandım.Listelemeyi de aynı sayfada yaptım.Eğer isterseniz eklemeyide farklı sayfada yapmadan her şeyi tek sayfada yapabilirsiniz.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.6/umd/popper.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js"></script> </head> <body> <div class="container"> <form action="php_kaydet.php" method="post" class="form-control"> <input type="text" placeholder="Ad" name="ad" class="form-control"> <input type="text" placeholder="Soyad" name="soyad" class="form-control"> <input type="submit" value="Kaydet"> </form> </div> <div class="container"> <table class="table"> <thead> <tr> <th> Ad </th> <th> Soyad </th> </tr> </thead> <tbody> <tr> <?php $con=mysqli_connect("localhost","dbKullaniciAdi","dbSifre","test") or die("Hata"); $sql="select * from bilgiler"; $res=mysqli_query($con,$sql); while ($row=mysqli_fetch_assoc($res)) { echo "<td>".$row["ad"]."</td>"; echo "<td>".$row["soyad"]."</td>"; } mysqli_close($con); ?> </tr> </tbody> </table> </div> </body> </html>