Re: Loop issue

From: Date: Thu, 12 Apr 2001 14:21:53 +0000
Subject: Re: Loop issue
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-48330@lists.php.net to get a copy of this message
ok, if Im understanding this right, you want to have categories, with multiple sub categories, you want to have links inside any category (inc sub-categories) right? well I use three tables. link - link_id - link_name - link_url link_cat - link_id - link_cat cat - cat_id - cat_name - cat_parent I use two tables for links for a reason, I wanted to be able to have a link in multiple categories, this is the simplest method. I'll put some values in the tables so you can get an idea how it works. link 001 mediawave www.mediawaveonline.com 002 slashdot www.slashdot.org 003 google www.google.com 004 yahoo www.yahoo.com link_cat 001 001 002 002 003 003 004 003 cat 001 category1 000 002 category2 001 003 category3 001 004 category4 002 005 category5 003 there we go, we some data to play with. now to make a pretty category tree we use recursion. everyone say 'oi' together now. class cat { function make_tree($cat_id = 0) { static $padding = 0; $padding++; foreach($database->select_array('', 'cat', "WHERE cat_id = $cat_id") as $pos => $result) { $cat_id = $result['cat_id']; $this->cat_id[$cat_id] = $result['cat_id']; $this->cat_name[$cat_id] = $result['cat_name']; $this->cat_parent[$cat_id] = $result['cat_parent']; $this->cat_space[$cat_id] = $padding; make_tree($cat_id); } $padding--; } } (I havent checked this code, its just an example) to get the links, not a problem either. class link { function get_links($cat = '') { if ($cat) $query = "WHERE l.link_id = lc.link_id AND lc.link_cat = $cat": else $query = "WHERE l.link_id = lc.link_id": foreach($database->select_array('', 'link as l, link_cat as lc', $query) as $pos => $result) { $id = $result['link_id']; $cat = $result['link_cat']; $this->link_id[$id] = $result['link_id']; $this->link_cat[$id][$cat] = $result['link_cat']; $this->link_url[$id] = $result['link_url']; $this->link_name[$id] = $result['link_name']; } } } ok this is a supper basic example, but try it, modify it, play around. it'll give you a basic idea. -- Chris Lee lee@mediawaveonline.com "Fates" <fates@home.com> wrote in message news:3AD58632.CD38EAD6@home.com... I am trying to make a simple HTML menu system. I am having problems displaying menu links under the correct submenu from a loop. I want to be able to change web menus on the fly. I have a database with two tables. One table holds menu and sub menu headings and the other table holds the contents of each submenu (the actual menu links and names). I need to display the menu title and then the sub menu title from table 1 and then display the submenu contents or links from table 2 and then display the next set of links under the correct submenu Example output would look like this: Say person clicks on Admin menu which is already displayed then the networking submenu heading will display along with the submenu links: Example: Admin (main menu title from db table 1) Networking (submenu title , from db table 1 ping (Link to ping from db table 2) traceroute (Link to ping from db table 2) nsloopup etc........ I don't know how to go about outputing the links under the correct submenu. The main menu is no problem. I am thinking I would need a loop within a loop. The query I use: $query = "SELECT * FROM menutable, elementstable WHERE menutable.menutable_id = elementstable.menuid AND menutable.mainmenu = 'Admin' "; $result = mysql_db_query("menus", $query); This loop simply assigns variables and prints out all output under the main menu called Admin. The problem is how do I display while ($r = mysql_fetch_array($result)) { // start menu table (table holds main menu/sub menu headings $menutable_id = $r["menutable_id"]; $menunumber = $r["menunumber"]; $mainmenu = $r["mainmenu"]; $submenu = $r["submenu"]; // start elements table (table that holds the links and names of each link) // element_id references menu table $element_id = $r["element_id"]; $element = $r["element"]; $url = $r["url"]; $menuid = $r["menuid"]; // next display data this is wrong cause it displays 1 submenu and 1 link looping ?> <TD><? echo "$submenu"; ?></TD> <TD><a href="<? echo "$url"; ?> "> <? echo "$element"; ?></a> </TD> <? // this doesn't work if ($menutable_id == $menuid) { ?> <TD><? echo "equal $submenu"; ?></TD> <? // print "both equal"; // // $b = $a; } ?> Notes: // outer loop display submenus (when submenu changes display next set of elements or links from inner loop) if submenu changes then display next set of menu links for that submenu // inner loop display elements or links for that submenu until sub menu changes MySQL and PHP4 latest using Linux OS -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net For additional commands, e-mail: php-general-help@lists.php.net To contact the list administrators, e-mail: php-list-admin@lists.php.net

« previous php.general (#48330) next »