Selamlar...
Mysql veri tabanına veri eklemek için mysql_query ile insert into table cümle yapısı kullanılır. Bu kullanımda önce parantez içerisinde tablo sütunları yada alanları, sonra values ile yine parantez içerisinde sütunlara eklenecek değerler yazılır.
mysql_query("insert into uyeler (alan1,alan2,alan3,alan4,.....) values ('$deger1','$deger2','$deger3','$deger4',......) ");
Basit bir üye sistemine üye ekleme sayfası (uyeekle.php) hazırlayarak ekleme işlemlerini anlamaya çalışalım..
Php ile veri tabanına yeni kayıt eklemek için (üye, kullanici, öğrenci vs) kullanıcının verileri girebileceği yada seçebileceği bir form hazırlamamız gerekir. PHP ile aldığımız form bilgilerini de MYSQL kodlarını kullanarak veri tabanına kayıt edebiliriz. Tabi bunlar için önceliklle bir veri tabanımızın olması gerekiyor.
Kısaca, veri tabanına yeni veri yada kayıt eklemek için 4 aşamamız olur:
Örneğin bir üyeler sistemimiz olsun ve bu yapıya yeni bir üye eklemek için gerekli adımlara tek tek bakıp uygulayalım..
Öncelikle veri tabanı adı sitem , tablo adı ise uyeler olacak şekilde veri tabanımızı aşağıdaki gibi hazırlayalım. Burada uyeler tablosuna 6 adet sütun belirledik : id , adsoyad, yas, mail, sifre ve resim.
Sitem adındaki veri tabanına bağlanmak için baglan.php adında bir mysql bağlantı sayfası hazırlıyoruz. Bu sayfayı verileri kaydetmeden önce include ile uyeekle.php sayfamıza çağıracağız.
<?php
// baglan.php
$host="localhost";
$user="root";
$pass="";
$db="sitem";
//mysql bağlantı
$baglan=@mysql_pconnect($host,$user,$pass);
//veri tabanına bağlantı
$vt_baglanti=mysql_select_db($db);
//mysql türkçe problemi için
mysql_query("SET NAMES UTF8");
?>
Veri tabanına eklenecek bilgileri alabilmek için , tablo sütunlarına uygun elemanlarda oluşan bir form hazırlamamız gerekir. Ben daha düzgün bir görüntü elde edebilmek için Bootstrap 5 tasarımını kullandım. Sizler kullanmak zorunda değilsiniz tabiki...
Formu oluştururken sütunlar için uygun input elemanları kullanıyoruz. Ad Soyad için "text"; Mail için "email"; Şifre için "password"; Yaş için "number"; Dosya için "file" ...
Formun action kısmı için yani gönderildiğinde gideceği yer için ayrı bir sayfa düşünebilirdik. ancak tek bir fomumuz olduğu için boş bıraktım. Boş olduğunda biliyorsunuz ki form aynı sayfaya gönderilir. Method için ise POST kullanıyoruz.
Formun altında sağ tarafa ise daha sonra hazırlayacağımız ve üyeleri listeleyebileceğimiz uyeler.php sayfasına bir link ekledik.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<title>ÜYE EKLE</title>
</head>
<body>
<div class="container">
<h1 class="mt-5 mb-5">ÜYE EKLEME</h1>
<p style="color:#0a0"> </p>
<form action="" method="post" enctype="multipart/form-data">
<div class="mb-3">
<label class="form-label">Ad Soyad</label>
<input type="text" name="adsoyad" class="form-control" required>
</div>
<div class="mb-3">
<label class="form-label">Mail</label>
<input type="email" name="mail" class="form-control" required>
</div>
<div class="mb-3">
<label class="form-label">Şifre</label>
<input type="password" name="sifre" class="form-control" required>
</div>
<div class="mb-3">
<label class="form-label">Yaş</label>
<input type="number" name="yas" class="form-control" required>
</div>
<div class="mb-5">
<label class="form-label">Resim</label>
<input type="file" name="resim" class="form-control" required>
</div>
<button type="submit" class="btn btn-primary">Ekle</button>
<a href="uyelistele.php" class="btn btn-info float-end"> ÜYELER </a>
</form>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
</body>
</html>
Formu hazırladığımza göre artık PHP ve MYSQL komutlarıyla , formdan gelen bilgileri veri tabanına kayıt edebiliriz. Bunun için öncelikle bir POST kontrolü yapacağız. Form gönderildiğinde yani ekle, gönder vs butonua tıklandığında POST işlemi gerçekleşir ve formdaki değerler gönderilmiş olur. Gelen verileri form inputlarından alarak bir MYSQL cümlesi ile veri tabanına göndereceğiz.
Önce post kontrolünü yaparak formdan gelen verileri alalım..
<?php
if ($_POST) {
$adsoyad=$_POST["adsoyad"];
$mail=$_POST["mail"];
$sifre=$_POST["sifre"];
$yas=$_POST["yas"];
$resim="default.png"; // resim için ilk değer..
}
?>
Verilerin alınmasına ilişkin detaylı bilgi için PHP ile FORM VERİLERİNİ ALMAK makalesine bakabilirsiniz. Resmin ilk değeri için "default.png" belirledik. Eğer resim seçilmezse veri tabanına bu resim adı yazılacak.
Veri tabanına bağlanmak için yukarıda hazırladığımız baglan.php sayfasını buraya include edelim..
<?php
include ("baglan.php");
if ($_POST) {
$adsoyad=$_POST["adsoyad"];
$mail=$_POST["mail"];
$sifre=$_POST["sifre"];
$yas=$_POST["yas"];
$resim="";
}
?>
Resim seçildiyse , seçilen resmin ismini, türkçe karakter problemi yaşamamak için random sayı ile değiştirip, resmi belirledğimiz klasöre (uyeresimleri) yükleyelim.
<?php
include ("baglan.php");
if ($_POST) {
$adsoyad=$_POST["adsoyad"];
$mail=$_POST["mail"];
$sifre=$_POST["sifre"];
$yas=$_POST["yas"];
$resim=""; // resim için ilk değer
//resim seçildiyse
if ($_FILES["resim"]["tmp_name"]) {
$klasor="uyeresimleri/"; // resmin yükleneceği klasör
$sayi=round(rand(1,1000000)); // resim adında kullanmak için rastgele sayı
$uzanti=pathinfo($_FILES["resim"]["name"], PATHINFO_EXTENSION); // seçilen dosya uzantısı
$resim=$sayi.".".$uzanti; // yeni resim adı ve uzantısı
// dosya var mı kontrolü
if (file_exists($klasor.$resim)) {
header("location:?resim=hata");
exit();
}
move_uploaded_file($_FILES["resim"]["tmp_name"], $klasor.$resim); //dosya yeni adıyla , klasöre taşınıyor..
}
}
?>
Seçilen resim dosyasına random sayı ile yeni bir isim verip , uyeresimleri klasörüne taşımış olduk.. Ayrıca milyonda bir ihtimal , yeni dosya isminin klaösrde var olması durumunda ise hata mesajı ile sayfayı yeniledik. Tabi burada uyeresimleri klasörüne bir kereye mahsus "default.png" resmini eklerseniz , üyeler listelendiğinde , resmi seçilmeyen üyeler için standart bir resim göstermiş olursunuz.
Ayrıca PHP ile dosya yüklemeye ilişkin detaylı bilgi için PHP ile DOSYA YÜKLEME makalesine bakabilirsiniz.
Artık verileri veri tabanına eklemeye hazırız. Bunun için yukarıda yazdığım gibi mysql_query ile INSERT INTO TABLE sql cümlesini kullanacağız.. Bu kullanımda önce parantez içerisine uyeler tablosundaki alanları , sonra values ile yine parantez içerisinde formdan aldığımız değerleri yazacağız.
mysql_query("insert into uyeler (adsoyad,mail,sifre,yas,resim) values ('$adsoyad','$mail','$sifre','$yas','$resim') ");
Tabi bu işlemi if($_POST) bloğunun içeriisnde yapmalıyız.
<?php
include ("baglan.php");
if ($_POST) {
$adsoyad=$_POST["adsoyad"];
$mail=$_POST["mail"];
$sifre=$_POST["sifre"];
$yas=$_POST["yas"];
$resim=""; // resim için ilk değer
//resim seçildiyse
if ($_FILES["resim"]["tmp_name"]) {
$klasor="uyeresimleri/"; // resmin yükleneceği klasör
$sayi=round(rand(1,1000000)); // resim adında kullanmak için rastgele sayı
$uzanti=pathinfo($_FILES["resim"]["name"], PATHINFO_EXTENSION); // seçilen dosya uzantısı
$resim=$sayi.".".$uzanti; // yeni resim adı ve uzantısı
// dosya var mı kontrolü
if (file_exists($klasor.$resim)) {
header("location:?resim=hata");
exit();
}
move_uploaded_file($_FILES["resim"]["tmp_name"], $klasor.$resim); //dosya yeni adıyla , klasöre taşınıyor..
}
//veriler tabloya ekleniyor
mysql_query("insert into uyeler (adsoyad,mail,sifre,yas,resim) values ('$adsoyad','$mail','$sifre','$yas','$resim') ");
}
?>
Böylece veriler tabloya kaydedilirken , seçilen resimde klasöre yüklenmiş olacaktır. Dilersek işlem bittikten sonra sayfayı , verilerin listeleneceği yere (hazırsa) yönlendirebiliriz.
<?php
.
.
.
.
.
//veriler tabloya ekleniyor
mysql_query("insert into uyeler (adsoyad,mail,sifre,yas,resim) values ('$adsoyad','$mail','$sifre','$yas','$resim') ");
//sayfa , kayıttan sonra uyeler.php sayfasına yönlendiriliyor..
header("location:uyeler.php");
}
?>
Yada bir sonuc değişkeni oluşturarak , sonucu aynı sayfada form üzerinde gösterebiliriz. Bunun için önce $sonuc=""; değişkenini ilk değeriyle beraber , PHP bloğunun başında tanımlayıp, kayıt işlemi bittikten sonra da içeriğini $sonuc="Üye eklendi"; şeklinde değiştirebiliriz.
<?php
$sonuc="";
.
.
.
.
.
//veriler tabloya ekleniyor
mysql_query("insert into uyeler (adsoyad,mail,sifre,yas,resim) values ('$adsoyad','$mail','$sifre','$yas','$resim') ");
//sonuc değişkeni değiştiriliyor
$sonuc="Üye eklendi";
}
?>
Sonuç değişkeninin form başlığının hemen altındaki P etiketi içeirisine php ile yazdırırsak , işlemin sonucunu görebiliriz..
<h1 class="mt-5 mb-5">ÜYE EKLEME</h1>
<!-- işlem sonucu gösteriliyor.. -->
<p style="color:#0a0"> <?php echo $sonuc; ?> </p>
Böylece veri ekleme işlemini , uyeekle.php sayfasını bitirmiş olduk... Aşağıdaki uygulamayı indir butonu ile sayfayı indirebilirsiniz.
Görüşmek üzere...
Toplam 33 Makale
Lütfen yorumlarınızda saygılı, yapıcı ve anlaşılır bir dil kullanın.
Küfür, hakaret ya da spam içerikler onaylanmaz.