Php-Mysql veritabanına kayıt ekleme
32437 6

Konunun girişinde sql ifadeyi açıklayalım. Yaptığımız işlem php kodları yardımı ile mysqle sorgular göndermek. Temel düzeyde sql bilginiz olması gerekiyor. Bu makalenin konusu da kayıt ekleme olduğu için sqlde kullanılan "INSERT" deyimini bilmeniz gerekiyor.

Sql "INSERT" Deyimi

Bu deyimin yazım şekli;

INSERT INTO tablo_adi (alan_adlari) VALUES (kaydedilecek_degerler)

veya çoklu kayıt eklemek için;

INSERT INTO tablo_adi (alan_adlari) VALUES (degerler1),(degerler2),(degerler3);

veya başka bir ekleme şekli;

INSERT INTO tablo_adi SET
alan_adi1=deger1,
alan_adi2=deger2,
alan_adi3=deger3

Bu kullanımlardan istediğinizi seçebilirsiniz. Anlayacağınız üzere mysql_query fonksiyonu içerisinde degerler ile ifade edilen kısımlara değişkenler gelecek şekilde sorgular yazılacaktır. Örnek bir kullanım;

$ad='Yılmaz';
$soyad='Arslantürk';
$e_posta='yilmaz@hotmail.com';

include("baglanti.php");
$sorgu=mysql_query("insert into deneme (ad,soyad,e_posta) values ('$ad','$soyad','$e_posta')");

if($sorgu){
    echo 'Kayıt Eklendi.';
}else{
    echo 'Kayıt Eklenemedi!';
}

Videoda yaptığımız örnekte değerler formdan geliyor. Değişkenler içerisine formdan gelen değerler yerleştiriliyor ve veritabanına kaydediliyor. Veritabanına bağlantı işlemini daha önce göstermiştik. Hazırladığımız tüm dosyaları aynı klasör içerisinde toplayarak veritabanı işlemlerine devam ediyoruz. Şu anda klasörümüz içerisinde "baglanti.php", "index.php", "ekle.php" dosyaları var. "index.php" ve "ekle.php" dosyalarının kodları aşağıdaki gibi olacaktır.

index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
	<style type="text/css">
		body{margin:auto;background-color:#CCC;}
		h1{width:900px;margin:0px auto;height:70px;padding-top:30px;background-color:#5555FF;}
		#menu{width:900px;margin:5px auto;background-color:#FFF;}
		#menu a{text-decoration:none;font-size:20px;paddind:0px 7px;margin:0px 5px;color:#000;}
		#menu a:hover{background-color:#000;color:#fff;}
		#icerik{width:900px;margin:5px auto;border:#ddd 1px solid; background-color:#ddd;}
		#alt{background-color:#000;color:#FFF;width:900px;margin:5px auto;}
		.sayfalama{height:50px;padding:3px;}
		.sayfalama a{color:#000; text-decoration:none;margin:0px 3px; padding:2px 4px;}
		.sayfalama a.syf_aktif{background-color:#000; color:#FFF;}
	</style>
</head>
<body>
	<h1>Php-Mysql Veritabanı İşlemleri</h1>
	<div id="menu">
		<a href="index.php">Ana Sayfa</a>
		<a href="index.php?sayfa=ekle">Kayıt Ekle</a>
		<a href="index.php?sayfa=sil">Sil</a>
		<a href="index.php?sayfa=duzenle">Düzenle</a>
		<a href="index.php?sayfa=listele">Listele</a>
		<a href="index.php?sayfa=arama">Arama</a>
	</div>
	<div id="icerik">
	<?php
	include("baglanti.php");
	$sayfa=@$_GET["sayfa"];
	switch($sayfa){
		case "ekle";
			include("ekle.php");
		break;
		case "sil";
			include("sil.php");
		break;
		case "duzenle";
			include("duzenle.php");
		break;
		case "listele";
			include("listele.php");
		break;
		case "guncelle";
			include("guncelle.php");
		break;
		case "arama";
			include("arama.php");
		break;
		default;
			include("anasayfa.php");
		break;
	
	}
	?>
	</div>
	<div id="alt">
	Tüm &copy;Hakları Saklıdır.
	</div>
</body>
</html>

ekle.php

<?php
if ($_POST){//Post ile formdan değerler geldiyse
    $ad=$_POST["ad"];
    $soyad=$_POST["soyad"];
    $e_posta=$_POST["e_posta"];
    $kontrol=mysql_query("insert into deneme (ad,soyad,e_posta) values ('$ad','$soyad','$e_posta')");
    if ($kontrol){//Sorgu başarılı bir şekilde çalıştırıldıysa
	    echo "Kayıt Başarılı";
    }
    else{
	    echo "Kayıt Esnasında Bir Sorun Oluştu!";
    }
}else{//Sayfa ilk defa açılıyorsa
?>
	<form name="form1" method="post" action="index.php?sayfa=ekle">
		Adı:<input type="text" name="ad"/><br/>
		Soyadı:<input type="text" name="soyad"/><br/>
		E-Posta:<input type="text" name="e_posta"/><br/>
		<input type="submit" name="gonder" value="Kaydet"/>
	</form>
<?php
}
?>

Örnekte en basit hali ile veritabanına kayıt işlemi anlatılmaktadır. Gelen veriler kontrol edilmemiştir. Gerçek bir uygulama içerisinde gelen her veri mutlaka kontrol edilmelidir, boş mu, dolu mu? İstendiği gibi yazılmış mı? Bunun yanı sıra en sık yapılan hatalardan biri "baglanti.php" dosyasını dahil etmemektir, buna dikkat!

Yorumlar
can 3 yıl önce dedi ki;
videolar bana çok yardımcı oldu fakat bi konuda yardıma ihtiyacım var acaba bu kayıt işlemi üzerinden tabloya ufak bir ikon ekleyip ikona baglantı ekleyip tıklandığında farklı bir sekmede açılması saglanabilirmi ? Cevapla
admin 3 yıl önce cevap verdi;
Dediğin işlemin kayıt ile bir ilgisi yok. Listeleme sırasında bahsettiğin ikonu img etiketi ile çıkartırsın ve bu resme link verirsin. Asıl işi bu link yapar. Linki oluştururken (index.php?sayfa=ayrinti&id=) şeklinde her kayıtta değişecek bir link yapısı oluşturursun. Gönderdiğin sayfada bu id bilgisini alıp o kayıt hakkında ayrıntılı bilgi gösterebilirsin.
abasaran 2 yıl önce dedi ki;
sayenizde güzel bir veri girişi yaptım hocam.. tasarımı da kendime göre düzenleyince çok güzel olacak :) teşekkürler Cevapla
ugurja 8 ay önce dedi ki;
Merhaba hazırladığınız siteden çok faydalanıyorum. Teşekkür ederim. Bir sorum var, Gönderi tıklayıp, veriler veritabanına sorunsuz kaydedildiğinde, html formumun boş olarak yeniden yüklenmesini nasıl sağlayabilirim? yardımlarınız için teşekkürler. Cevapla
celalyanik 7 ay önce dedi ki;
Hocam bir önceki dersten söz ediyorsunuz. Nasıl geri dönüyoruz eski ders videosuna hangi konu başlığında oluyor? Teşekkürler. Cevapla
nacar 4 ay önce dedi ki;
Merhaba Ustam, MySQL de NULL olan bir alana nasıl veri kaydedebilirim. Veritabanında boş olarak tuttuğum alana bazı durumlarda kullanıcı formundan veri girişi yapmak gerekiyor. Yani boş ise başka bir alanın değerinle bir hesaplama yaptırıyorum, dolu ise başka bir işlem. Bazen de bilgi girişi yapmak gerekiyor boş olan alan. INSERT INTO içinde NULL diye geçebiliyorum ama formda bilgi girildiyse bu sefer o bilgi de kaydedilmiyor. Önerilerini bekler, saygılar sunarım. Cevapla
^
X