Kategorilendirildi | JQuery

JQuery Accordion Menu + MySQL

Kategori: 23 Mart 2009

CSS menu uygulamaları menulerin CSS dosyalarından veya HTML dosyaların menu eklnemesi veya menu silinmesi gibi özelliklerin maule yapılması bu tür menu uygulamalarını kullanışsız kılmaktadır.

Bir PHP bilgisi olanların yapabileceği yöntemlerle bu menu uygulamaları daha kullanışlı hale getirilebilir.

ac-me

Yaprığım örnekte menu bilgileri nasıl girileceği konunumuz dışında olduğu için sadece mysql tablo bilgilerini veriyorum. İsteyenler sitelerinden bir menu aracılığıyla menu/sil/ekle için bölüm ekleyebilirler.

SQL:
TABLE name = menu
db name = test
---
MySQL TABLE bilgileri;
id int(11)AUTO_INCREMENT
name    varchar(50)
link    varchar(100)
parent  int(11)

JQuery Accordion Menu iki şekilde çalışmaktadır. Üzerine gelinve açılan menu veya tıklanınca açılan menu şeklinde.

Bu özelliklerinin belirlendiği yer;
Tıklanınca açılan menu;

PHP:
p.menu_head").click(function()

Üzerine gelince açılan menu

PHP:
p.menu_head").mouseover(function()

Bu özelliklerden birini tercih edebilirsiniz. Her iki özelliği test edebileceğiniz örnek menu;

http://www.zbahadir.com/test/accordion-menu/

Örnek MySQL bağlantı ve sorgulama kodu;

PHP:
<?php //menu bilgileri db'den alınır...
mysql_connect("localhost", "user", "pass") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
$sql = mysql_query("SELECT * FROM menu") or die(mysql_error());

while($row = mysql_fetch_array($sql))
{
$mh[$row[parent]][]=$row[id]."*".$row[name]."*".$row[link]."*".$row[parent];
}
?>

Menuleri ekrana yazan bölüm;

PHP:
<?php
foreach($mh[0] as $ls)
{
$header=explode("*",$ls);
$say = count($mh[$header[0]]);
    if($say> 0) //alt menu yoksa devam etme...
    {
        echo "<p class='menu_head'>".$header[1]."</p>";
        echo "<div class='menu_body'>";
        foreach ($mh[$header[0]] as $ls2)
        {
        $veri=explode("*",$ls2);
        echo "<a href='$veri[2]'>".$veri[1]."</a>";
        }
        echo "</div>";
    }
}
?>

Kodun kullanılabilir tam hali bu şekilde;

PHP:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Accordion Menu Using jQuery</title>
<script type="text/javascript" language="javascript" src="jquery.js"></script>
<script type="text/javascript">
<!--
//---------------------------------+
//  Developed by Roshan Bhattarai
//  Visit http://roshanbh.com.np for this script and more.
//  This notice MUST stay intact for legal use
// --------------------------------->

$(document).ready(function()
{
    //slides the element with class "menu_body" when mouse is over the paragraph
    $("#menupanel p.menu_head").click(function()
    {
         $(this).css({backgroundImage:"url(down.png)"}).next("div.menu_body").slideDown(500).siblings("div.menu_body").slideUp("slow");
         $(this).siblings().css({backgroundImage:"url(left.png)"});
    });
});
</script>
<link rel="stylesheet" href="menu.css" type="text/css" />
</head>
<body>

<?php //menu bilgileri db'den alınır...
mysql_connect("localhost", "user", "pass") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
$sql = mysql_query("SELECT * FROM menu") or die(mysql_error());

while($row = mysql_fetch_array($sql))
{
$mh[$row[parent]][]=$row[id]."*".$row[name]."*".$row[link]."*".$row[parent];
}
?>

<div style='float:left; margin-left:20px;'>
<p><strong>&nbsp;Üzerine gelince açılan menu</strong></p>
  <div id='menupanel' class='menu_list'>

<?php
foreach($mh[0] as $ls)
{
$header=explode("*",$ls);
$say = count($mh[$header[0]]);
    if($say> 0) //alt menu yoksa devam etme...
    {
        echo "<p class='menu_head'>".$header[1]."</p>";
        echo "<div class='menu_body'>";
        foreach ($mh[$header[0]] as $ls2)
        {
        $veri=explode("*",$ls2);
        echo "<a href='$veri[2]'>".$veri[1]."</a>";
        }
        echo "</div>";
    }
}
?>

  </div>
</div>
</body>
</html>

Dosyalarım tam ve paketlenmiş halini buradan indirebilirsiniz.

Ekleyen:

zbahadir - who has written 76 : zbahadir.


Yazara Mesaj Gönder

2 Yorum : “JQuery Accordion Menu + MySQL”

  1. maddhard diyor ki:

    zbahadir çok teşekkür ederim ilgin için.

    Benim yapmaya çalıştığım menu tarzı buna çok benziyor fakat alt menusude olmayabiliyor onuda çözersem tamamlamış olacağım. üzerinde çalışıp kodları tam kavradıktan sonra takıldığım bir yer olursa seni tekrar rahatsız ederim.

  2. maddhard diyor ki:

    zbahadir slm

    kodları biraz kurcaladım ve yapmak istediğim şeyi bi nevi yaptım fakat şurada takıldım linkleri vt dan çağırılan link yerine id değerini almasını istiyorum yani (makaleler.php?id=$veri[0]) bu şekilde alt başlıklı olanlarda sorun yok.sorun alt başlığı olmayan menülerde bunu nasıl çözebilirim?

    kodun son hali aşağıdaki gibi

    0) //alt menu yoksa devam etme...
    {
    echo "".$header[1]."";
    echo "";
    foreach ($mh[$header[0]] as $ls2)
    {
    $veri=explode("*",$ls2);
    echo "".$veri[1]."";
    }
    echo "";
    }
    else
    echo "".$header[1]."";
    }
    ?>


Fikrini Söyle

Yorum yapmak için Giriş yapmalısınız.

Önemli Linkler

Kategoriler

Arşivler

Takvim

Mart 2009
Pts Sal Çar Per Cum Cts Paz
« Şub   Nis »
 1
2345678
9101112131415
16171819202122
23242526272829
3031