Bu yazımda jQuery ve PHP ile verilerin dinamik olarak MySQL veritabanımızdan geldiği bir Tabbed Content yapacağız.
Öncelikli olarak yapacağımız uygulamanın demosu : DEMO
Şimdi adım adım uygulamamıza geçelim.
1.Adım : Veritabanımız üzerinde örnek tablomuzu oluşturuyoruz :
1 2 3 4 5 6 |
CREATE TABLE IF NOT EXISTS `wwphpjQueryTabs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `TabName` varchar(16) COLLATE utf8_bin NOT NULL, `TabContent` varchar(512) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=3 ; |
2.Adım : Tablomuza örnek verileri ekliyoruz :
1 2 3 |
INSERT INTO `wwphpjQueryTabs` (`id`, `TabName`, `TabContent`) VALUES (1, 'Sekme 1', '<h1>Sekme 1</h1><br /><p>Icerik 1 </p>'), (2, 'Sekme 2', '<h1>Sekme 2</h1><br />\r\n<h3>Sekme 2</h3><br />\r\n<h6>Sekme 2</h6>'); |
3.Adım : index.php dosyamızı oluşturuyoruz :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
<!doctype html> <html lang="tr"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>wwPHP.com jQuery Tabs Demo</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <style> #loader { top: 200px; z-index: 100; padding-top: 50px; text-align: center; } </style> <body> <?php $db = new PDO("mysql:dbname=DB_NAME;host=localhost","DB_USERNAME","DB_PASS"); $SqlSorgusu = "SELECT `id`, `TabName`, `TabContent` FROM `wwphpjQueryTabs`"; $st = $db->prepare($SqlSorgusu); $st->execute(); $Veriler = $st->fetchAll(PDO::FETCH_ASSOC); ?> <div class="container"> <h2>wwPHP jQuery Tab Demosu</h2> <p>Aşağıda bulunan tabların içerikleri php aracılığı ile mysql veritabanından dinamik olarak gelmektedir..</p> <ul class="nav nav-tabs"> <?php foreach($Veriler as $Veri) { ECHO'<li id="litab'.$Veri["id"].'"><a id="tab'.$Veri["id"].'" href="tabs.php?id='.$Veri["id"].'">'.$Veri["TabName"].'</a></li>'; } ?> </ul> <div id="loader"><img src="img/load.gif"> İçerik Yükleniyor...</div> <div id="tcontent" class="tab-content"></div> </div> </body> <script> function loadTabContent(tabUrl){ // Tab contentimizi çağırdığımız fonksiyon. jQuery("#tcontent").empty(); $("#loader").show(); // İşleme başladğında Load.gif resmimizi gösteriyoruz. jQuery.ajax({ url: tabUrl, // Fonksiyonumuza yolladığımız URL'i çağırıyoruz. cache: false, success: function(message) { jQuery("#tcontent").append(message); // Çağırdığımız sayfadan dönen içeriği gösteriyoruz. $("#loader").hide(); // Load.gif resmimizi gizliyoruz. } }); } jQuery(document).ready(function(){ $("#loader").hide(); // Load.gif resmimizi ilk açılışta gizliyoruz. jQuery("[id^=tab]").click(function(){ // id'si içerisinde tab geçen nesnelerden herhangi birine tıklanmasını yakalıyoruz biz linklere tab geçen id ler verdiğimiz için, // linklere tıklanma olayını yakalacaktır. tabId = $(this).attr("id"); // Tıklanılan nesnenin tam id sini alıyoruz. tabUrl = jQuery("#"+tabId).attr("href"); // Href değerinin altındaki URL i alıyoruz. jQuery("[id^=litab]").removeClass("active"); // Bir önceki tıklanılan nesneye tanımlanan active class ımızı kaldırıyoruz. jQuery("#li"+tabId).addClass("active"); // Tıklanılan nesnemize active class ımızı tanımlıyoruz. loadTabContent(tabUrl); // Yukarıda tıkladığımız nesneden aldığımız URL'i fonksiyonumuza yolluyoruz. return false; // Bu işlem sonucunda gelen url'e yönelendirilmemesi için false değerini döndürüyoruz. }); }); </script> </html> |
4.Adım : tabs.php dosyamızı oluşturuyoruz :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php sleep(1); $db = new PDO("mysql:dbname=DB_NAME;host=localhost","DB_USERNAME","DB_PASS"); $SqlSorgusu = "SELECT `id`, `TabName`, `TabContent` FROM `wwphpjQueryTabs` WHERE `id` = :id"; $st = $db->prepare($SqlSorgusu); $st->bindParam(':id', $_GET["id"]); $st->execute(); $Veriler = $st->fetchAll(PDO::FETCH_ASSOC); ECHO $Veriler[0]["TabContent"]; ?> |
5.Adım : Load.gif dosyamız :