PHP ve MySQL Programlama

 

Merhabalar, bu yazıyla birlikte  PHP ve MySQL programlama öğreneceğiz. Bu yazımda phpMyAdmin de veritabanı oluşturmayı ve oluşturduğumuz bu veritabanına PHP de oluşturduğumuz form üzerinden Tabloya Kayıt ekleme,Kayıtları listeleme,kaydı düzenleme,kaydı silme ve istediğimiz tablo sütunlarında kayıt aramayı öğreneceğiz..

PHP5 ile birlikte mysqli sınıfı geliştirilmiştir. MySQLi(MySQL Improved) eklentisi ile geliştirilmeye açık dinamik ve güvenilir kodlama oluşturma imkanını sunmaktadır. mysqli sınıfı OOP tabanlı ve fonksiyon tabanlı kullanım imkanı veriyor. Biz yazılarımızda sınıf tabanlı kullanımı öğreneceğiz.

mysqli() sınıfı: Hesap bilgilerine gore mySQL sunucusu için bir bağlantı açar ve mysqli  metotları ile sunucu üzerinde SQL sorgularını uygulamaya sokar.

Söz dizimi şu şekilde :
int mysqli(host,kullanıcı,şifre,veritabanı,[port,[soket]]);

Şimdi ise Örneklerimize başlamadan önce phpMyAdmin e girip veritabanı olusturalım. 🙂

1. adım: phpMyAdmin de sol üstte bulunan veritabanları kısmına tıklayalım ve karşımıza gelen ekranda veritabanı oluştur kutusunu göreceksiniz kutucuğa yazacağınız isim sizin veritabanınızın ismi olacak istediğiniz ismi yazabilirsiniz benim veritabanımın adı “deneme” olsun istiyorum kutucuğa deneme yazdım.

2. adım: MySQL bağlantı karşılaştırması listesinde utf8_general_ci secin.

3.adım : olustur butonuna tıklayarak deneme adlı veritabanımızı kaydedebiliriz. Artık oluşturduğumuz deneme adlı veritabanına istediğimiz kadar tablo kaydı yapabiliriz. O zaman ilk Tablo kaydımızı hemen yapalım 🙂
“okul” adında bir tablo kaydı oluşturalım.

Şimdi ise aşağıdaki adımları uygulayın.
1. Adı kısmına,sırayla sütun isimlerini yazın
2. Türü kısmına, sütunlar için veri türünü seçin
3. Uzunluk/değer kısmına veri sınırını girin
4. Varsayılan kısmına veri girilmediğinde olması gerekeni seçin
5. Boş kısma kayıt olmazsa boş kayıt olup olmayacağını seçin
6. Index kısmına sira sütunu için PRIMARY KEY seçeneğini seçin
7.A_I kısmına sira sütunu için AUTO_INCREAMENT işaretleyin.

Benim tablo bilgilerim aşagıdaki gibi..

Bu işlemlerden sonra “kaydet” butonuna basarak okul adlı tabloyu deneme adlı veritabanımıza kaydetmiş oluyoruz..
Artık veritabanımızı başarıyla olusturmuş oluyoruz 🙂

Bundan sonraki örneklerimizi bu veritabanı üzerinden yapacağız 🙂

Artık Veritabanımızı oluşturduğumuza göre veritabanına bağlanmak için bir .php uzantılı dosya olusturalım ve içine aşağıdaki kodu yazalım
$db=@new mysqli('localhost','root','','deneme');
if($db->connect_error);
}else{
echo "Sunucu ile bağlantı kuruldu";
}
$db->close();

Şimdi ise Mysqlnd kurulumu bunun kontrolünü yapalım neden kontrol ediyoruz çünkü Mysqlnd kurulu degilse mysqli fonksiyonlarından bir çoğu çalışmayacaktır.Eğer “sürücü desteği yok” yazısı alıyorsanız veritabanı sistemimizde mysqlnd doğal sürücü desteği yok demektir.

surucutest.php


$db=@new mysqli("localhost","root","","deneme");
if($db->connect_errno) die($db->connect_error);
if(function_exists('mysqli_stmt_get_result')===false) {
die('"mysqlnd"surucu destegi yok.'); } $db->set_charset("utf8");

Tabloya Kayıt Eklemek

kayit.php




<h3>Ogrenci Kayıt Formu</h3>






<form action="" method="post">
    


<table>


<tr align="right">


<td>
                Ad Soyad:<input type="text" name="adsoyad">
                
ogrencinin sınıfı:<select name="sinif">
<option value="1A">1A</option>
<option value="1B">1B</option>
<option value="1C">1C</option>
                </select>
                1.Notu: <input type="text" name="not1">
                2.Notu: <input type="text" name="not2">
                <input type="submit" value="kaydet">
        </tr>


</td>


</table>



        </form>



<?php if (isset($_POST['adsoyad'])) { $db = @new mysqli("localhost", "root", "", "deneme"); if ($db->connect_errno) die('baglantı hatası: ' .$db->error);
    //tablo veri karakter yapısı
    $db->set_charset("utf8");

    //prepare ile SQL sorgusunu hazırlayalım
    $stmt = $db->prepare("INSERT INTO okul VALUES (NULL,?,?,?,?)");
    if ($stmt === false) die('sorgu hatası:' .$db->error);

    // ?,?,?,? için veri tiplerini ve degiskenleri tanımlayalım

    $stmt->bind_param("ssii", $_POST['adsoyad'], $_POST['sinif'], $_POST['not1'], $_POST['not2']);
    // execute ile sorguyu calıstıralım

    $stmt->execute();

    //kayıt durumunu elde edelim
    echo '<b>Tabloya' . $db->affected_rows . ' kayıt yapıldı</b>
';
    $db->close();
}else{
    echo 'lutfen Formu Doldurun';
}
?>

Kaydet butonuna bastığımızda “Tabloya 1 Kayıt Yapıldı Mesajını alacağız”.

Bu şekilde okul adlı tablomuza istediğimiz kadar veri kaydı yapabiriz..

Kodlardan bahsedecek olursak:
if (isset($_POST[‘adsoyad’])) bu if koşulumuzda isset() fonksiyonu değişken tanımlı mı diye bakar. ***Bir değişkenin ayarlandığını ve NULL olmadığını belirler. Yani kısaca Var mı Yok mu ona bakar.

Gelelim POST metoduna;POST metodu yalnızca bir form ile göderilir ve $_POST herhangi bir formdan gelen veri var mı bunun kontrolünü yapar,bize dizi olarak gelir veriler.Burda veriyi post metoduyla gonderdik aynı işi yapan birde GET metodumuz var Yalnız GET metodunda POST metodundan farklı olarak GET metodunu kullanmak için bir forma ihtiyaç yoktur ayrıca GET yöntemiyle gönderilen verilere adres çubuğundan erişilebilir.POST metodunda aynı şey söz konusu değildir verilere adres çubuğundan erişilemez bu nedenle POST metodu daha çok kullanılır çünkü GET metodu ile bir forma şifre gönderdiğimiz zaman veriye adres çubuğundan erişebildiğimizden güvenlik açığı meydana gelir
if (isset($_POST['adsoyad']))
Burdada formdan gelen adsoyad verisi varmı POST ile onun kontrolünü yaptık isset fonksiyonuylada değişken var mı yok mu ona baktık.
//prepare ile SQL sorgusunu hazırlayalım
$stmt = $db->prepare("INSERT INTO okul VALUES (NULL,?,?,?,?)");

prepare() metodu SQL sorgularını ve deyimlerini çalıştırır ve dışardan gelen verilerin güvenli kullanılmasını sağlar.
*** bind_param() ve execute() metodlarıyla birlikte çalışır.
SQL sorgumuzu açıklayacak olursak okul tablomuza ? işareti ile belirtilen veri girişlerini ekliycez.

// ?,?,?,? için veri tiplerini ve degiskenleri tanımlayalım

$stmt->bind_param(“ssii”, $_POST[‘adsoyad’], $_POST[‘sinif’], $_POST[‘not1’], $_POST[‘not2’]);

Bu kodumuzda bind_param() metodu :

söz dizimi: $stmt->bind_param(parametre,değişken1,değişken2,…);

*/ prepare() ile hazırlanan SQL sorgusunda bir veya birden fazla ? işareti varsa bu soru işareti kadar veri tipini ve değişkeni bind_param() metoduyla tanımlamak zorundayız. Bu soru işaretine dışarıdan gelen verilerin ne olacağına biz karar veriyoruz.
*/ “ssii” –> açıklarsak burada veri tipini belirliyoruz ? soru işaretlerinin yani şöyle s-> ilgili degişken tipinin string olduğunu ifade ediyor. i–> ilgili değişken tipinin tamsayı olduğunu ifade ediyor.
Aşağıdaki görseli inceleyebilirsiniz daha iyi anlamak için 🙂

Eveet Kayıt işlemleri yaptığımıza göre,bu kayıtları değiştirmek yada silmek içinde formlardan yararlanılır.
Silme ve güncelleme işlemi için bir Örnek yapalım: Bu işlemlerimiz için veri tabanındaki kayıtları listeleyip yanlarına güncelle ve sil linki yerleştirelim tıklayınca o kayıt üzerinde güncelleme ve silme işlemleri yapılsın.

Başlıyoruuz.. Öncelikle veritabanındaki kayıtlarımızı listeliyelim ve kayıtlarımızın karşılarına düzenle,sil linki verelim 🙂
listele.php

<?php $db=@new mysqli("localhost","root","","deneme"); if($db->connect_errno) die('baglantı hatası' .$db->connect_error);

$db->set_charset("utf8");

//prepare ile sql sorgusunu hazırlama

$stmt=$db->prepare("SELECT * FROM okul");
if($stmt===false) die('sorgu hatası' . $db->error);

/*execute ile sorguyu calıstıralım*/
$stmt->execute();

/*SQL sorgusundan donen sonucları alalım*/

$sonuc=$stmt->get_result();

//bulunan kayıt sayısını elde edelim
echo '<b>' . $sonuc->num_rows .' kayıt bulunmaktadır</b>';

echo '
<table border=1>



<tr>



<td>Ad soyad </td>




<td>Not1</td>






<td>Not2</td>






<td>Yapılacak işlem</td>



</tr>



';

//sonucları sutun adlarına gore elde edelim
while($veri=$sonuc->fetch_array()){

 echo '
<tr>



<td>'.$veri['adsoyad']. '</td>






<td>'.$veri['not1']. '</td>






<td>'.$veri['not2']. '</td>









<td><a href="duzenle.php?sira='.$veri['sira']. '">[Düzenle]</a>  
<a href="sil.php?sira='.$veri['sira']. '"onclick="return confirm(\'silinsin mi?\')">[sil]</a></td>


</tr>



';

}
//linke tıkladıgımızda duzenle.php programına sira=3 degerini gondermiş oluyoruz
echo '


<table>';
$db->close();
?>

Sıra duzenle.php dosyamızı olusturmakta

duzenle.php

<?php $db=@new mysqli("localhost","root","","okul"); if($db->connect_errno) die('baglantı hatası: ' .$db->connect_error);

$db->set_charset("utf8");

if(isset($_POST['sira'])&&isset($_POST['adsoyad'])) {
    //prepare ile sql sorgusunu hazırlayalıym
   //okul tablosunda şeçilen sıradaki verinin adsoyad,sinif,not1 ve not2 bilgilerini SET edip bu veriyi düzenle
   
 $stmt = $db->prepare("UPDATE okul SET adsoyad=?,sinif=?,not1=?,not2=? WHERE sira=?");
    if ($stmt === false) die('sorgu hatası:' . $db->error);

    //?,?,?,? için veri tiplerini ve degişkenlerini ayarlayalım
    $stmt->bind_param("ssiii", $_POST['adsoyad'], $_POST['sinif'], $_POST['not1'], $_POST['not2'], $_POST['sira']);

    //execute ile sorguyu calıstıralım
    $stmt->execute();

    //kayıt durumunu elde edelim
    echo '<b>' . $db->affected_rows . 'kayıt guncellendi</b>
';
}else if (isset($_GET['sira'])&& !empty($_GET['sira'])) { //!empty()->boş değilse
    $stmt = $db->prepare("SELECT * FROM okul WHERE sira=?");
    $stmt->bind_param("i", $_GET['sira']);
    $stmt->execute();
    //sql sorgusundan donen sonucları alalım

    $sonuc = $stmt->get_result();
    //bulunan kayıt sayısını elde edelim
    echo '<b>' . $sonuc->num_rows . 'kayıt bulunmaktadır</b>
';
    $veri = $sonuc->fetch_array();
    echo '


<h3>ogrenci kayıt duzenleme</h3>






<form action=""method="post">



<table>


<tr align="right">


<tr>
<input type="hidden" name="sira" value="' . $veri['sira'] . '"/>
ad soyad:<input type="text" name="adsoyad" value="' . $veri['adsoyad'] . '"/>

ogrencinin sınıfı:<select name="sinif">
<option value="1A">1A</option>
<option value="1B">1B</option>
<option value="1C">1C</option>
</select>
1.Notu: <input type="text" name="not1" value="' . $veri['not1'] . '"/>
2.Notu: <input type="text" name="not2" value="' . $veri['not2'] . '"/>
<input type="submit" value="kaydet">

</tr>


</td>


</table>



</form>



';
}else{
    echo 'bilgileri eksik gonderdiniz.';
}$db->close();

?>

Sıra silme işlemlerini yapmakta. sil.php dosyamızı oluşturalım ve içine aşağıdaki kodları yazalım.

sil.php

<?php /*** Created by PhpStorm. * User: Aysenur * Date: 25.08.2017 * Time: 01:59 */ 
$db=@new mysqli("localhost","root","","okul"); if($db->connect_errno) die('baglantı hatası: ' .$db->connect_error);

$db->set_charset("utf8");
if (isset($_GET['sira'])&& !empty($_GET['sira'])) {
    $stmt = $db->prepare("DELETE  FROM okul WHERE sira=?"); // okul tablosunda $_GET ile gelen siradaki veriyi sil.
    $stmt->bind_param("i", $_GET['sira']);
    $stmt->execute();

    echo '<b>' . $db->affected_rows . ' kayıt silindi</b>
';
}else{
    echo 'bilgileri eksik gonderdiniz: ';

}
$db->close();
?>

“PHP ve MySQL Programlama” üzerine 2 yorum

Yorumlar kapalı.