PHP Dersleri 29: PHP ile MYSQL Bağlantı Yapma Veri Ekleme Silme Listeleme Sıralama İşlemleri


07.01.2013-20:55 Tarihinde Eklendi.
www.seyfettinkahveci.com Derecelendirme: 10 / 10 Oy Sayısı: 16005615Toplam Puan: 62650 / Yorum Sayısı: 412005615 adet.


Merhaba arkadaşlar sizlere bu yazımda PHP ile MYSQL e bağlantı yapmayı ve PHP ile formdan girilen veriyi mysql e kaydetme, verileri güncelleme, verileri silme,verileri listeleme ve verileri artan azalan sıralamayı anlatmaya çalışacağım. Bu işlemleri ben 2 sayfada hazırladım. Birinci sayfamız mysql bağlantımızın yapıldığı sayfa(Baglanti.php), ikinci sayfa(index.php) ise ekleme,silme,listeleme ve sıralama işlemlerinin yapıldığı sayfadır.Öncelikle MySQL de aşağıda verdiğim sorguyu çalıştırıyoruz.Eğer PhpMyAdmin kullanıyorsanız PhpMyAdmin'e girdiğinizde sql'e bu sorguyu yapıştırın.
Sql Sorgusu:

-- phpMyAdmin SQL Dump
-- version 3.4.5
-- http://www.phpmyadmin.net
--
-- Anamakine: localhost
-- Üretim Zamanı: 08 Oca 2013, 20:42:38
-- Sunucu sürümü: 5.5.16
-- PHP Sürümü: 5.3.8

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

--
-- Veritabanı: `phpfinal`
--
CREATE DATABASE `phpfinal` DEFAULT CHARACTER SET utf8 COLLATE utf8_turkish_ci;
USE `phpfinal`;

-- --------------------------------------------------------

--
-- Tablo için tablo yapısı `veriler`
--

CREATE TABLE IF NOT EXISTS `veriler` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Ad` varchar(50) CHARACTER SET latin5 NOT NULL,
  `Vize` int(3) NOT NULL,
  `Final` int(3) NOT NULL,
  `Ortalama` int(3) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci AUTO_INCREMENT=6 ;

Şimdi ise oluşturduğumuz veritabanına bağlanılan sayfamızı hazırlayalım.
Kodlar:(Baglanti.php)

<?php
$Veri=mysql_connect("localhost","root","");//Localhost ta bulunan mysqke kullanıcı adı root şifre boş olacak şekilde bağlan
if (!$Veri) {//bağlanamadı ise
    die('Bağlanamadı: ' . mysql_error());//hata kodu ile beraber bağlantı hatası veriliyor
}//bağlanamadı ise sonu
$Baglanti=mysql_select_db("PHPFinal",$Veri);//Mysql bağlantısı içerisindeki veri tabanlarından PHPFinal Veritabanını seç
?>

Evet arkadaşlar veri tabanı bağlantımızı gerçekleştirdik. Veritabanı bağlantısı için kendi belirlediğiniz kullanıcı adı şifreyi ilgili alanlara girmeniz yeterlidir.Şimdi bu bağlantının kullanıldığı sayfayı hazırlayalım.
Kodlar:(index.php)

<head><!--Stil tanımlamaları yapılmaya başlanıyor-->
<style type="text/css">
	a{		
	text-decoration:none;
	color:red;
	}
</style>
</head><!--Stil tanımlamaları sonu-->
<?php
include "Baglanti.php";//Veri tabanı bağlantısının yapıldığı sayfayı bu sayfaya dahil et
if(isset($_POST['Hesapla'])){//hesapla verisi geldi ise yani hesapla butonuna basıldıysa
	$Ad			=htmlspecialchars($_POST['Ad']);//formdan post metoduyla gönderilen ad verisi alınıp ad değişkenine aktarılıyor
	$Vize		=$_POST['Vize'];//formdan post metoduyla gönderilen Vize verisi alınıp Vize değişkenine aktarılıyor
	$Final		=$_POST['Final'];//formdan post metoduyla gönderilen Final verisi alınıp Final değişkenine aktarılıyor
	$Ortalama	=$Vize*0.4+$Final*0.6;//Ortalama hesaplanıyor
	if(is_numeric($Vize)and is_numeric($Final) and strlen($Vize)<=3 and strlen($Final)<=3 and $Vize<=100 and $Final<=100){//Vize Fİnal Kontrollerinden Başarılı ise

			$Sorgu="INSERT INTO `phpfinal`.`veriler` (`ID`, `Ad`, `Vize`, `Final`, `Ortalama`) VALUES (NULL, '$Ad', '$Vize', '$Final', '$Ortalama');";//Veritabanına ekleme sorgusu yazılıyor
				if(mysql_query($Sorgu)){//Sorgu başarılı ise
					echo "veri ekleme başarıyla tamamlandı";//ekrana yaz
				}//sorgu başarılı ise sonu
				else {//sorgu başarısız ise
					echo "<font color='Red'>Veri ekleme sırasında hata meydana geldi</font>";//ekrana yaz
				}//sorgu başarısız ise sonu	
	}//Vize Fİnal Kontrollerinden Başarılı ise sonu
	else{//Vize Fİnal Kontrollerinden Başarısız ise
		echo " Lütfen Geçerli Veriler Giriniz";//ekrana veriler yazılıyor
	}//Vize Fİnal Kontrollerinden Başarısız ise sonu
}
if(isset($_GET['Sil'])){//Sil verisi geldi ise yani sil butonuna basıldıysa
	$sql="DELETE FROM `phpfinal`.`veriler` WHERE `veriler`.`ID` = $_GET[Sil]";//Veritabanından silme sorgusu yazılıyor
		if(mysql_query($sql)){//Silme başarılı ise
			echo "başarıyla silindi";//ekrana veriler yazılıyor
			header("location:index.php");//index.php ye yönlendirir
		}//Silme başarılı ise sonu
		else{//Silme başarısız ise
			echo "silme sırasında hata";//ekrana veriler yazılıyor
		}//Silme başarısız ise sonu
}//Sil verisi geldi ise yani sil butonuna basıldıysa sonu
if(isset($_POST['Guncelle'])){//Guncelle verisi geldi ise yani Guncelle butonuna basıldıysa
	$Ortalama	=$_POST['Vize']*0.4+$_POST['Final']*0.6;//Gelen Veriler ile ortamala hesaplanıyor
	$sql 		= "UPDATE `phpfinal`.`veriler` SET `Ad` = '$_POST[Ad]', `Vize` = '$_POST[Vize]', `Final` = '$_POST[Final]', `Ortalama` = '$Ortalama' WHERE `veriler`.`ID` = $_POST[ID];";//Veritabanından güncelleme sorgusu yazılıyor
		if(mysql_query($sql)){//Sorgu Çalıştırılıyor başarılı ise
			echo "güncelleme başaryla tamamlandı";
		}else{//sorgu çalıştırma başarısız ise
			echo "guncelleme sırasında hata";
		}//sorgu çalıştırma başarısız ise sonu
}//Guncelle verisi geldi ise yani Guncelle butonuna basıldıysa sonu
if(isset($_GET['Duzenle'])){//Duzenle verisi geldi ise yani Duzenle butonuna basıldıysa
	$sql = mysql_query("SELECT ID,Ad,Vize,Final FROM `veriler` WHERE `ID` = $_GET[Duzenle] LIMIT 0, 30 ");//Veritabanından listeleme srgusu yazılıp çalıştırılıyor
	if(mysql_num_rows($sql)>0){//Veritabanından Gelen Veriler Var İse
		while($listele=mysql_fetch_array($sql)){//$sql sonucları bir dziye dönüştürülüp dizi elemanlarının sonuna kadar dönülüyor
					echo "<form action='index.php' method='POST'>
						<input type='hidden' name='ID' value='$listele[ID]'>
						Ad:<input type='text' name='Ad' value='$listele[Ad]'><br/>
						Vize:<input type='text' name='Vize' value='$listele[Vize]'><br/>
						Final:<input type='text' name='Final' value='$listele[Final]'><br/>
						<input type='submit' name='Guncelle' value='Güncelle'>
					</form>";//ekrana düzenlemek istenen veri için düzenleme formu yazdırılıyor
		}//dizi elemanlarının sonuna kadar dönme sonu
	}//Veritabanından Gelen Veriler Var İse Sonu
}//Duzenle verisi geldi ise yani Duzenle butonuna basıldıysa sonu
?>
<form action='' method='POST'>
	Ad:<input type="text" name='Ad'><br/>
	Vize:<input type="text" name='Vize'><br/>
	Final:<input type="text" name='Final'><br/>
	<input type="submit" name='Hesapla' value='Notunu Gir'>
</form>
<?php
if(isset($_GET['Sirala'])){//Sırala butonuna basıldıysa/sırala verisi geldi ise
	$Sirala	=$_GET['Sirala'];//Get metodu ile veri alınıyor
	$sql 	= mysql_query("SELECT *FROM `veriler` ORDER BY `$Sirala` ASC LIMIT 0 , 30");//Veritabanından listeleme sorgusu yazılıyor A-Z Sıralamalı
}//Sırala butonuna basıldıysa/sırala verisi geldi ise sonu
elseif(isset($_GET['SiralaT'])){	
	$Sirala	=$_GET['SiralaT'];//Get metodu ile veri alınıyor
	$sql 	= mysql_query("SELECT *FROM `veriler` ORDER BY `$Sirala` DESC LIMIT 0 , 30");//Veritabanından listeleme sorgusu yazılıyor Z-A Sıralamalı
}
else{
	$sql 	= mysql_query("SELECT * FROM `veriler` LIMIT 0, 30 ");//Veritabanından listeleme sorgusu yazılıyor Sıralamalasız
}
if(mysql_num_rows($sql)>0){//Sorgunun Çalıştırılasından sonra veriler geliyor ise
	echo "<table border='1'>";//tablo açıp ekrana bas
	if(isset($_GET['Sirala'])){//Sırala butonuna basıldıysa/sırala verisi geldi ise
		echo "<tr><th><a href='?SiralaT=Ad'>Ad</a></th><th><a href='?SiralaT=Vize'>Vize</a></th><th><a href='?SiralaT=Final'>Final</a></th><th><a href='?SiralaT=Ortalama'>Ortalama</a></th><th colspan='2'>İşlemler</th></tr>";//Link Yardımıyla Sıralamalı Başlık Ekrana Yazılıyor
	}else{//Sırala butonuna basıldıysa/sırala verisi gelmedi ise
		echo "<tr><th><a href='?Sirala=Ad'>Ad</a></th><th><a href='?Sirala=Vize'>Vize</a></th><th><a href='?Sirala=Final'>Final</a></th><th><a href='?Sirala=Ortalama'>Ortalama</a></th><th colspan='2'>İşlemler</th></tr>";	//Link Yardımıyla Sıralamalı Başlık Ekrana Yazılıyo	
	}//Sırala butonuna basıldıysa/sırala verisi gelmedi ise sonu
	while($listele=mysql_fetch_array($sql)){//$sql sonucları bir dziye dönüştürülüp dizi elemanlarının sonuna kadar dönülüyor
		echo "<tr><td>$listele[Ad]</td><td>$listele[Vize]</td><td>$listele[Final]</td><td>$listele[Ortalama]</td><td><a href='?Duzenle=$listele[ID]'>Düzenle</a></td><td><a href='?Sil=$listele[ID]'>Sil</a></td></tr>";//veriler ekrana tek tek listeleniyor
	}//dizi elemanlarının sonuna kadar dönme sonu
	echo "</table>";//tablo kapaltılıyor
}//Veritabanından Gelen Veriler Var İse Sonu
mysql_close($Veri);//veri tabanı bağlantısı kapatılıyor
?>

Kodların açıklamalarında her bir kodun ne işe yaradığını anlattım fakat anlamadığınız bir yer veya karşılaştığınız problem varsa yorum ekle bölümünden yazın en kısa sürede cevaplamaya çalışırım.İyi çalışmalar.

Seyfettin KAHVECİ
Balıkesir Üniversitesi
NEF-BOTE



Yazının tamamının kopyalanması yasaktır. En baştaki birkaç paragrafı kopyalayıp, yazıya link verebilirsiniz. Aksi durumda uyarılmaksızın yasal yollara gidilecektir.

Uzun süredir yorumlara cevap veremediğim için sistem yeni yorumlara kapatılmıştır. Anlayışınız için teşekkürler.
Yorumlar
Ad Soyad:222Şehir:Çanakkale
Tarih:19.07.2013
Soru emeginize sağlık çok güzel anlatmışınız
Cevap Yorumunuz için teşekkürler. İyi çalışmalar...