Doğru Cevap
-
<?php $sql = "SELECT id, icerik, ad FROM tablo_adi"; $result = mysql_query($sql); $menu = '<ul>'; $tabs = ''; while($row=mysql_fetch_array($result)) { $menu. = '<li>'.$row['ad'].'</li>'; $tabs. = '<div class="tab_icerik">'.$row['icerik'].'</div>'; } $menu .= '</ul>'; ?>
Döngü sonunda elinde $menu ve $tabs diye iki tane ayrı değişken var.
<?php echo $menu; echo $tabs; ?>
dersen sanırım istediğin şeyi yapmış olursun. (Bu arada veritabanı tablolar ve degiskenler rastgeledir uyarlaman lazım :))
Cevaplar
-
En Basit Hali ile aşağıdaki şekilde yapabilirsin...
Anlaşılır olması açısından menüye css eklemedim.
<?php /* php isimli bir veritabanı içinde tblkategori isimli aşağıdaki tablo ve kategorileri açarsan örnek çalışacaktır. CREATE TABLE IF NOT EXISTS `tblkategori` ( `id` int(6) NOT NULL auto_increment, `parent_id` int(4) NOT NULL default '0', `ad` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `parent_id` (`parent_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ; INSERT INTO `tblkategori` (`id`, `parent_id`, `ad`) VALUES (1, 0, 'Kategori 01'), (2, 0, 'Kategori 02'), (3, 0, 'Kategori 03'), (4, 1, 'Kategori 01 A'), (5, 1, 'Kategori 01 B'), (6, 1, 'Kategori 01 C'), (7, 4, 'Kategori 01 AA'), (8, 4, 'Kategori 01 AB'), (9, 4, 'Kategori 01 AC'); */ $id = $_GET['id']; $db_host="localhost"; $db_user="root"; $db_pass="123456"; $veritabani_ad="php"; $baglanti = mysql_connect($db_host,$db_user,$db_pass) or die('Bağlantı yok : '.mysql_error()); mysql_select_db($veritabani_ad) or die('Veritabanı yok yada ulaşılamadı : '.mysql_error()); mysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER SET utf8"); mysql_query("SET COLLATION_CONNECTION = 'utf-8'"); ?> <!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="tr" lang="tr" dir="ltr"> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style type="text/css"> <!-- html,body,div,span,h1,h2,h3,p,hr,br,img,form,input,ul,li,a { margin:0; padding:0; border:0; } ul li {list-style:none;} body { font-family:Helvetica, Arial, Tahoma, sans-serif; font-size:13px; color:#444; line-height:1.5em; } #kapsayici { background:#fff; margin:10px auto; width:960px; border:1px solid #dfdfdf; min-height: 700px; } --> </style> </head> <body> <div id="kapsayici"> <?php $menu = fonkMenu(0); echo $menu; ?> </div> </body> </html> <?php mysql_close($baglanti); function fonkMenu($parent_id = 0) { $altmenu = false; $mn = (!$parent_id) ? ' id="menu"' : ' class="altmenu"'; $sql = "SELECT id, parent_id, ad FROM tblkategori"; $result = mysql_query($sql); while($row=mysql_fetch_array($result)) { $menuliste[$row['id']] = array('id' => $row['id'], 'parent_id' => $row['parent_id'], 'ad' => $row['ad'],); } foreach ($menuliste as $key => $row) { if ($row['parent_id'] == $parent_id) { if ($altmenu === false) { $altmenu = true; print "<ul".$mn.">\n"; } $url = '/index.php?id='.$row['id']; //$aktif = ($row['id'] == $gelen_id) ? " class=\"aktif\"" : ""; $aktif = ''; $link = '<li'.$aktif.'><a href="'.$url.'"><span>'.$row['ad'].'</span></a>'; print $link; fonkMenu($key); print "</li>\n"; } } unset($row); if ($altmenu === true) print "</ul>\n"; } ?>
php ve sql dosya
http://www.share.az/imx83ptxh59f/menu.rar.html
sql
http://www.sqlfiddle.com/#!2/5096c-
b4d3k35
Cevapınız için teşekkür ederim.
Verdiğiniz örnek sonsuz kategorileme örneği incelediğim kadarıyla.
Burada uyarlamam gereken anakategoriyi başlık içeriğide alt kategori şeklindemidir.(Mantık)
Şu sorun var ki alt ve ana kategoriler aynı foreach içinde dönüyor.
Bunu başlıkları ayrı içeriği ayrı döndürmek istiyorum ancak tabiki birbiriyle bağdaşık olarak.
Şurada da aynı sorundan bahsetmiştim ama bir sonuca varamamıştım.
http://www.uzmansorusu.com/soru/3421/kategoriye-ait-konulari-listeletme11 yıl önce yazılmış -
zyber
join ile sql kullanarak dediğin yapılır. Ancak hiç kimsenin oturup sıfırdan bir örnek yazacağını sanmıyorum. hazır örnekte bulmak zor çünkü bu size özel bir durum-istek...
Uğraşırsanız yapılmayacak bir şey yok. Ancak yaptığınız şeyin mantıklı olup olmadığını tartmanız ve size getirisi götürüsünden çok ise yapmanız gerekir işte ozaman o mantıklı şeyi yazmak kolay ve zevklidir.
Kategorileri Array/dizi haline getirip sonra onu istediğin şekilde kullanarak dediğin yapılabilir.11 yıl önce yazılmış -
b4d3k35
Anladım,İlginiz ve cevaplarınız için teşekkür ederim Hocam.11 yıl önce yazılmış
-
-
Ajax tab örneği gördüm fakat Tab başlıkları statik html yapı şeklinde.
Ben istiyorum ki,
Başlıkları ve text tamamen veritabanından çeksin.Ancak başlıkları farklı döngüde texti farklı döngüde yazdırayım.-
zyber
Söylediğin şey ile verdiğim örnek aynı şey...
Sadece başlıkları MySqlden bir döngü ile alacaksın okadar11 yıl önce yazılmış
-