Bilgisaray.Net

Php,Css,Jquery

php ile mysql veritabanından tablo birleştirerek veri çekilmesi

Yollayan A.Gökhan Akın Mart - 11 - 2010

Bu derste php ile birden fazla tablonun birleştirilmesi vasıtasıyla tek tek
sorguda farklı tablolardan veri çekme işlemini gerçekleştireceğiz.Neden böyle bir işleme gerek duyarız sorusunu cevabına
gelince ise eğer veritabınınzda çok fazla veri varsa tablo birleştirme vasıtasıyla veritabanını daha az yorarak verileri
işleme şansına sahip oluruz buda yaptığımız sistemin daha sağlıklı çalışması açısından bizlere kolaylık sağlayacaktır..

//öncelikle veritabanımızı oluşturalım her zaman kullandığım veritabanı değiştirmeyelim

CREATE TABLE IF NOT EXISTS `deneme_cat` (
 `id` tinyint(20) NOT NULL auto_increment,
 `kategoriad` varchar(50) default NULL,
 PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

INSERT INTO `deneme_cat` (`id`, `kategoriad`) VALUES
(1, ''1'', ''kat1''),
(2, ''2'', ''kat2'');

// ikinci tablomuzu oluşturalım

CREATE TABLE IF NOT EXISTS `deneme` (
 `id` tinyint(20) NOT NULL auto_increment,
 `cat_id` varchar(11) default NULL,
 `aciklama` text NOT NULL,
 PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

INSERT INTO `deneme` (`id`, `cat_id`, aciklama`) VALUES
(1,''1'', ''denemele devam''),
(2,''2'', ''denemeye devam'');

Şimdi burda yapacağımız işlem deneme_cat tablosu ile deneme tablosunda birbiren eşleştirilmiş alanlar vasıtasıyla
tabloları birleştirek veri çekeceğiz. bu alan birbiriyle ilişkili olan bu alanda gördüğünüz üzere cat_id alanı ve ilişkilendirmeyide


WHERE deneme.cat_id= deneme_cat.id

bu alanda yapıyoruz.burda dikkat etmemiz gereken nokta tablo adını yazıp o tablodaki alan adını şöyle yazmak
deneme.id gibi ani (tabloadı.alanadı)

<pre>function dbbaglan()
{
define(''HOST'', ''localhost''); // hostunuz genenmde localhosttur
define(''USER'', ''root''); // db kullanıcı adi
define(''PASS'', ''1234567''); // şifre
define(''NAME'', ''deneme''); // db adı
$connect = @mysql_connect(HOST,USER,PASS) or die ("veritabanına bağlanılamıyor");
mysql_select_db(NAME,$connect);
}
dbbaglan(); // veritabanına bağlanma fonksiyonumuzu başlatıyoruz</pre>
$query= "SELECT
deneme.aciklama,
deneme_cat.id,
deneme_cat.kategoriad,
deneme.id
FROM deneme, deneme_cat
WHERE deneme.cat_id= deneme_cat.id order by deneme.id ";
$sql = mysql_query($query);
while($dbal=mysql_fetch_array($sql)){
echo '<font color="#000000">'.$dbal[kategoriad].'</font>'.$dbal[aciklama].'<br>';
}
//'.$dbal[aciklama].' deneme tablosundan gelecektir
//'.$dbal[kategoriad].' deneme_cat tablosundan gelecektir

bu şekilde alanlardan veri cekebilirsiniz her açıklama hangi kategoriye eklenmişsse o kategoride yanında çıkar
anlaşılmayan bir yer olursa sorularınızı sormaktan çekinmeyin kısa sürede cevaplamaya çalışacağım

      

Yorum Yapın