Witam, stosując się do wskazań moderatorów przeszukałam całe forum php i inne i niestety nie znalazłam informacji, które by mnie satysfakcjonowały.
Mam sobie skrypcik generujący piękne drzewko :-) [wzięty z netu] Teraz pytanie jak zrobić by pokazywały się tylko główne kategorie i po kliknięciu zagłębiały by się dalej. Jednak po wybraniu innej głównej kategorii zwijało poprzenią jednocześnie pokazując podkategorie wybranej ostatnio kategorii głównej. Szukałam wszędzie i jedyne co znalazłam to przykład:
bendiego - wybierz "bez stylu", ale nie znalazłam niestety nawet fragmentów kodów. Nawiasem mówiąc jest to dokładnie to czego potrzebuję.
a kodzik z bazą jest następujący:
<?
/*
DROP TABLE IF EXISTS categories;
CREATE TABLE categories (
CatID int(11) NOT NULL auto_increment,
CatName varchar(50) default NULL,
PRIMARY KEY (CatID)
) TYPE=MyISAM;
#
# Dumping data for table 'categories'
#
INSERT INTO categories VALUES (1,'Main 1');
INSERT INTO categories VALUES (2,'Main 2');
INSERT INTO categories VALUES (3,'Main 3');
INSERT INTO categories VALUES (4,'Main 4');
INSERT INTO categories VALUES (5,'Main 5');
INSERT INTO categories VALUES (6,'Main 6');
INSERT INTO categories VALUES (7,'Main 7');
INSERT INTO categories VALUES (8,'Main 8');
INSERT INTO categories VALUES (25,'Sub 1-1');
INSERT INTO categories VALUES (32,'Sub 2-1');
INSERT INTO categories VALUES (33,'Shared 1');
INSERT INTO categories VALUES (34,'Sub 2-1-1');
INSERT INTO categories VALUES (35,'Sub 2-1-2');
INSERT INTO categories VALUES (36,'Sub 2-2');
INSERT INTO categories VALUES (37,'Sub 2-2-1');
INSERT INTO categories VALUES (38,'Sub 2-3');
INSERT INTO categories VALUES (39,'Sub 2-4');
#
# Table structure for table 'categories2parents'
#
DROP TABLE IF EXISTS categories2parents;
CREATE TABLE categories2parents (
CatID int(11) default NULL,
ParentID int(11) default NULL
) TYPE=MyISAM;
#
# Dumping data for table 'categories2parents'
#
INSERT INTO categories2parents VALUES (1,0);
INSERT INTO categories2parents VALUES (2,0);
INSERT INTO categories2parents VALUES (3,0);
INSERT INTO categories2parents VALUES (4,0);
INSERT INTO categories2parents VALUES (5,0);
INSERT INTO categories2parents VALUES (6,0);
INSERT INTO categories2parents VALUES (7,0);
INSERT INTO categories2parents VALUES (8,0);
INSERT INTO categories2parents VALUES (25,1);
INSERT INTO categories2parents VALUES (32,8);
INSERT INTO categories2parents VALUES (33,2);
INSERT INTO categories2parents VALUES (33,3);
INSERT INTO categories2parents VALUES (34,32);
INSERT INTO categories2parents VALUES (35,32);
INSERT INTO categories2parents VALUES (36,2);
INSERT INTO categories2parents VALUES (37,36);
INSERT INTO categories2parents VALUES (38,5);
INSERT INTO categories2parents VALUES (39,4);
*/
class menuSystem {
var $num_subs;
//Set this to be what should be used for indenting.
var $delim = ' ';
function menuSystem() {
$this->loadData();
}
function loadData() {
$result = mysql_query(\"SELECT c.CatID, c.CatName, c2p.CatID, c2p.ParentID from categories c, categories2parents c2p
WHERE c.CatID = c2p.CatID ORDER by c2p.ParentID, c.CatName\")
if($ParentID == 0) {
$this->cats[0
][] = array(\"catName\" => $CatName, \"ID\" => $CatID); }
else {
$this->cats[$ParentID][] = array(\"catName\" => $CatName, \"ID\" => $CatID); }
}
return;
}
function print_main($arg) {
?>
<a href=\"<?=$PHP_SELF?>?catid=<?=$this->cats[0][$arg][ID]?>\">
<?=$this->cats[0][$arg][catName]?>
</a>
<br>
<?
}
function make_delim() {
for($i=0;$i<$this->num_subs;$i++) {
$d .= $this->delim;
}
return $d;
}
function print_subs($arg) {
foreach($arg as $key => $val) {
$this->num_subs++;
if(is_array($this->cats[$arg[$key][ID
]])) { $this->num_subs++;
?>
<?=$this->make_delim()?>
<a href=\"<?=$PHP_SELF?>?catid=<?=$arg[$key][ID]?>\">
<?=$arg[$key][catName]?>
</a>
<br>
<?
$this->print_subs($this->cats[$arg[$key][ID]]);
$this->num_subs--;
}
else {
?>
<?=$this->make_delim()?>
<a href=\"<?=$PHP_SELF?>?catid=<?=$arg[$key][ID]?>\">
<?=$arg[$key][catName]?>
</a>
<br>
<?
$this->num_subs--;
}
}
return;
}
function printMenu() {
for($i=0;$i<count($this->cats[0]);$i++) {
$this->print_main($i);
if(is_array($this->cats[$this->cats[0
][$i][ID
]])) { $this->print_subs($this->cats[$this->cats[0][$i][ID]]);
}
}
return;
}
}
$dbname = 'test';
$dbhost = 'localhost';
$dbuser = '***';
$dbpass = '***';
$m = new menuSystem;
$m->printMenu();
?>