PHP - Dynamic 3 Tier Navigation Menu
Hi all.
I'm working on a project that requires a 3 tier navigation menu that's dynamic and I'm not quite sure where to start with it. The structure of the menu is like so... A unique list of Parent-Modules Tier1: Parent-Module1 Each parent module has a second tier menu that appears upon clicking a parent module. Each parent module has a unique list of tier 2 sub modules Tier 2: Sub-Module1 - Sub-Module2 Each sub module has a third tier menu that appears upon clicking a sub module. Each sub module has a unique list of tier 3 child modules Tier 3: Child-Module1 - Child-Module2 - Child-Module3 A visual: Parent (each parent module has this structure) | |--------Sub Module | |-Child Module 1 | |-Child Module 2 | |-Child module 3 |--------Sub Module | |-Child Module 1 | |-Child Module 2 | |-Child module 3 |--------Sub Module |-Child Module 1 |-Child Module 2 |-Child module 3 Every tier has to be dynamic as the module names/locations are often changed. My thought is to use opendir/readdir in order to build the tiers based on what files exist, but I'm not sure if this is a safe/reliable practice. Any input would be a great help. EDIT: The navigation links would have to have "pretty" names (e.g. Business Processes instead of business_processes). Similar TutorialsI need to implement a dynamic 3 tier navigation system using php. I have a mysql table containing the following data:- http://i223.photobucket.com/albums/dd147/jimmyoneshot/categoriestable.jpg And I'm inches away from getting it working. Basically when the user clicks the top level categories (Cat1A, Cat1B etc) the second level categories (Cat2A, Cat2B etc) within each should show beneath them and in turn when the user clicks these second level categories the third level ones (Cat3A, Cat3B etc) should show beneath those. I've done this to an extent using a 'child_of' property and do while loops and some if statements but the problem seems to be when I click a category that doesn't have any categories as it's children such as Cat1D and Cat2B a bullet point is still showing beneath those which it shouldn't. Here's a link to how I have it working at the moment to show this:- http://www.coolvisiontest.com/garyssite/rhrvouchers/voucherspage.php And here's my code. Can anyoone please tell me what I'm doing wrong:- <?php require_once('connectionfile.php'); mysql_select_db($database, $myconnection); $categories2_child_of = "0"; if (isset($_GET['child_of2'])) { $categories2_child_of = $_GET['child_of2']; } $categories3_child_of = "0"; if (isset($_GET['child_of3'])) { $categories3_child_of = $_GET['child_of3']; } $query_getcategories1 = "SELECT category_id, category, is_parent, child_of FROM categories WHERE is_parent=1 AND child_of=0"; $result_getcategories1 = mysql_query($query_getcategories1, $myconnection) or die(mysql_error()); $row_getcategories1 = mysql_fetch_assoc($result_getcategories1); $query_getcategories2 = "SELECT category_id, category, is_parent, child_of FROM categories WHERE is_parent=1 AND child_of=$categories2_child_of"; $result_getcategories2 = mysql_query($query_getcategories2, $myconnection) or die(mysql_error()); $row_getcategories2 = mysql_fetch_assoc($result_getcategories2); $query_getcategories3 = "SELECT category_id, category, is_parent, child_of FROM categories WHERE is_parent=0 AND child_of=$categories3_child_of"; $result_getcategories3 = mysql_query($query_getcategories3, $myconnection) or die(mysql_error()); $row_getcategories3 = mysql_fetch_assoc($result_getcategories3); ?> <ul> <?php do { ?> <li> <a href="voucherspage.php?child_of2=<?php echo $row_getcategories1['category_id']; ?>&child_of3=0"><?php echo $row_getcategories1['category']; ?></a> </li> <?php if($row_getcategories1['category_id']==$categories2_child_of) {?> <?php do { ?> <li> <a href="voucherspage.php?child_of2=<?php echo $categories2_child_of?>&child_of3=<?php echo $row_getcategories2['category_id']; ?>"><?php echo $row_getcategories2['category']; ?></a> </li> <?php if($row_getcategories2['category_id']==$categories3_child_of) {?> <?php do { ?> <li> <?php echo $row_getcategories3['category']; ?> </li> <?php } while ($row_getcategories3 = mysql_fetch_assoc($result_getcategories3)); }?> <?php } while ($row_getcategories2 = mysql_fetch_assoc($result_getcategories2)); }?> <?php } while ($row_getcategories1 = mysql_fetch_assoc($result_getcategories1)); ?> </ul> Hi guys! I need a php page that is splitted into 2 screens. One will display the navigation menu and the second one is the iframe. As for the navigation menu, I am getting the list of all files in the current directory with readdir(). Then I create an array with all of the items that are folders (is_dir() function) and apply the same script on them. My problem is to correctly display all of the information I gather in an adequate manner. Can anyone help me with that? Also if anyone has ready-to-go scripts, I would highly appreciate that too. Also, once a user choose a file, it should be loaded in the iframe. How do I specify "src" attribute for the iframe, in that case? Thanks! Hi, I'm building a dynamic site for a college project (a CMS) and have been using a Lynda tutorial. When the user clicks on a subject, the sub menu appears for the (a UL with a UL), so there is an 'accordian effect'. However, when I click on one of the page links in the sub menu, the content for that page appears, but the second UL containing the links to the pages dissapears. It only re-appears when I click back on the parent element (the subject link). I'd really appreciate some help. I've tried editing this code below but have had no joy: Code: [Select] function public_navigation($sel_subject, $sel_page, $public = true) { $output = "<ul class=\"subjects\">"; $subject_set = get_all_subjects($public); while ($subject = mysql_fetch_array($subject_set)) { $output .= "<li"; if ($subject["id"] == $sel_subject['id']) { $output .= " class=\"selected\""; } $output .= "><a href=\"index.php?subj=" . urlencode($subject["id"]) . "\">{$subject["menu_name"]}</a></li>"; if ($subject["id"] == $sel_subject['id']) { $page_set = get_pages_for_subject($subject["id"], $public); $output .= "<ul class=\"pages\">"; while ($page = mysql_fetch_array($page_set)) { $output .= "<li"; if ($page["id"] == $sel_page['id']) { $output .= " class=\"selected\""; } $output .= "><a href=\"index.php?page=" . urlencode($page["id"]) . "\">{$page["menu_name"]}</a></li>"; } $output .= "</ul>"; } } $output .= "</ul>"; return $output; } The code that precedes this is as follows: Code: [Select] function get_all_subjects($public = true) { global $connection; $query = "SELECT * FROM Subjects "; if ($public) { $query .= "WHERE visible = 1 "; } $query .= "ORDER BY position ASC"; $subject_set = mysql_query($query, $connection); confirm_query($subject_set); return $subject_set; } function get_pages_for_subject($subject_id, $public = true) { global $connection; $query = "SELECT * FROM pages "; $query .= "WHERE subject_id = {$subject_id} "; if ($public) { $query .= "AND visible = 1 "; } $query .= "ORDER BY position ASC"; $page_set = mysql_query($query, $connection); confirm_query($page_set); return $page_set; } function get_subject_by_id($subject_id) { global $connection; $query = "SELECT * "; $query .= "FROM Subjects "; $query .= "WHERE id=" . $subject_id ." "; $query .= "LIMIT 1"; $result_set = mysql_query($query, $connection); confirm_query($result_set); // REMEMBER: // if no rows are returned, fetch_array will return false if ($subject = mysql_fetch_array($result_set)) { return $subject; } else { return NULL; } } function get_page_by_id($page_id) { global $connection; $query = "SELECT * "; $query .= "FROM pages "; $query .= "WHERE id=" . $page_id ." "; $query .= "LIMIT 1"; $result_set = mysql_query($query, $connection); confirm_query($result_set); // REMEMBER: // if no rows are returned, fetch_array will return false if ($page = mysql_fetch_array($result_set)) { return $page; } else { return NULL; } } function get_default_page($subject_id) { // Get all visible pages $page_set = get_pages_for_subject($subject_id, true); if ($first_page = mysql_fetch_array($page_set)) { return $first_page; } else { return NULL; } } function find_selected_page() { global $sel_subject; global $sel_page; if (isset($_GET['subj'])) { $sel_subject = get_subject_by_id($_GET['subj']); $sel_page = get_default_page($sel_subject['id']); } elseif (isset($_GET['page'])) { $sel_subject = NULL; $sel_page = get_page_by_id($_GET['page']); } else { $sel_subject = NULL; $sel_page = NULL; } } function navigation($sel_subject, $sel_page, $public = false) { $output = "<ul class=\"subjects\">"; $subject_set = get_all_subjects($public); while ($subject = mysql_fetch_array($subject_set)) { $output .= "<li"; if ($subject["id"] == $sel_subject['id']) { $output .= " class=\"selected\""; } $output .= "><a href=\"edit_subject.php?subj=" . urlencode($subject["id"]) . "\">{$subject["menu_name"]}</a></li>"; $page_set = get_pages_for_subject($subject["id"], $public); $output .= "<ul class=\"pages\">"; while ($page = mysql_fetch_array($page_set)) { $output .= "<li"; if ($page["id"] == $sel_page['id']) { $output .= " class=\"selected\""; } $output .= "><a href=\"content.php?page=" . urlencode($page["id"]) . "\">{$page["menu_name"]}</a></li>"; } $output .= "</ul>"; } $output .= "</ul>"; return $output; } Hi PHP Freaks! Here is my problem. I want to have a PHP navigation system that uses Arrays to control it. Code: [Select] $nav = array( "title1" => "url1", "title2" => array( "sub-page1" => "url1", "sub-page2" => "url2" ), "title3" => array( "sub-page1" => "url1", "sub-page2" => "url2" ), "title4" => array( "sub-page1" => "url1", "sub-page2" => "url2" ), "title5" => "url1", "title6" => "url1" ); $loc = basename($_SERVER["REQUEST_URI"]); What I'm trying to do, is if the $loc is a url in "title4" I want a ul/li printout of that array. Any help you could share with me would be MUCH appreciated. The printout should look like: Code: [Select] <ul> <li>Title4<ul> <li>url1</li> <li>url2</li> </ul></li> </ul> In CSS, most people add most styling to the A tag instead of UL or LI. Do you know why?
Using unordered list, <ul> Reading from XML file, Taking menu name from database, Is there other system to make dropdown navigation menu? Which is the best way to make dropdown navigation menu? I also want to show the sitemap of navigation.How can it be done? Code: [Select] <div id="nav"> <ul> <li class="item"><a href="/">Home</a>/</li> <li class="item"><a href="/one">one</a></li> <li class="item"><a href="/two>two</a></li> <li class="item"><a href="/three">three</a></li> </ul> <div> i want to add class='active' to the a tags . when the menu is the current page. namely.when i on the home page. the a label is Code: [Select] <li class="item"><a href="/" class="active">Home</a>/</li> .but the others a label are not have class="active". when i on the one page. it is is Code: [Select] <li class="item"><a href="one" class="active">one</a>/</li>.the others a label are not have class="active". I'm trying to make my menu dynamic for example I will have a menu with it's submenus and when the user logs on the submenu account will then be shown where it wasn't shown before the user logged on. here is my submenu.controller Code: [Select] <?php class submenus_controller extends controller{ protected $_helpers = array('form', 'html'); protected $_observers = array('seo_uris'); public $model='submenus'; public function ajax_set_submenu($submenu_id){ $submenu=$this->_model->get($submenu_id); $_SESSION['submenu']=$submenu; } } ?> and here is my default page Code: [Select] <!doctype html> <!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]--> <!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]--> <!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]--> <head> <title><?php echo $this->get_title();?></title> <meta name="author" content="team digitalpro"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta name = "Description" content = "<?php echo $this->get_description();?>" /> <meta name = "Keywords" content = "<?php echo $this->get_keywords(); ?>" /> <link rel="stylesheet" href="/css/style.css"> <script src="js/libs/modernizr-2.0.6.min.js"></script> </head> <body> <div id="container"> <header> <div class="inhoud"> <div id="logo"><a href="/"><img src="/img/logo.gif" width="306" height="126" border="0" /></a></div> <nav> <div class="menu"> <ul> <?php if (isset($this->_params['menus']) && is_array($this->_params['menus'])){ foreach ($this->_params['menus'] as $menu){ if (!empty($menu['submenus.page_id'])){ $uri=$this->get_uri('/pages/view/'.$menu['submenus.page_id']); }else{ $uri=$this->get_uri("/{$menu['submenus.controller']}/{$menu['submenus.action']}"); } // p($menu); ?> <li><a href="<?php echo $uri ?>" onclick="javascript:return setMenu(<?php echo $menu['id'] ?>);"><?php echo strtoupper($menu['name'])?></a></li> <?php } } ?> </ul> </div> </nav> </div> </header> <div id="hero-pic"> <div id="slogans"><img src="../img/slogans.png" width="277" height="214" /></div> <img src="../img/hero.gif" width="996" height="286" /></div> <main> <div id="left"> <div class="inhoud"> <div id="left-nav"> <ul> <?php if (isset($this->_params['submenus']) && is_array($this->_params['submenus'])){ foreach ($this->_params['submenus'] as $submenu){ if (!empty($submenu['page_id'])){ $uri=$this->get_uri('/pages/view/'.$submenu['page_id']); }else{ $uri=$this->get_uri("/{$submenu['controller']}/{$submenu['action']}"); } ?> <li<?php if ($_SESSION['submenu']['id'] == $submenu['id']){?> class="active"<?php ;} ?>> <a href="<?php echo $uri ?>" onclick="javascript:return setSubMenu(<?php echo $submenu['id'] ?>);"> <?php echo strtoupper($submenu['name'])?> </a> </li> <?php } } ?> </ul> </div> <form method="post" action=""> <input type="text" id="search" /> <input type="submit" name="button" value="GO" class="go" /> </form> <div class="sub-links"> <ul> <li><a href="#">Home</a></li> <li><a href="#">Contact us</a></li> <li><a href="#">Sitemap</a></li> <li><a href="#">Privacy policy</a></li> </ul> </div> </div> </div> <div id="right"> <div class="inhoud"> <?php echo $this->page('view') ?> </div> </div> </main> <footer> <!-- <div class="inhoud"> <ul> <li><a href="#">COMPANY </a></li> <li><a href="#">PRIVATE EQUITY </a></li> <li><a href="#">CONSULTING </a></li> <li><a href="#">INVEST </a></li> <li><a href="#">PARTNERS </a></li> <li><a href="#">NEWS</a></li> </ul> --> <p> </p> <p> </p> </div> </footer> </div> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> <script>window.jQuery || document.write('<script src="/js/libs/jquery-1.6.2.min.js"><\/script>')</script> <script defer src="/js/plugins.js"></script> <script defer src="/js/script.js"></script> <script> window._gaq = [['_setAccount','UAXXXXXXXX1'],['_trackPageview'],['_trackPageLoadTime']]; Modernizr.load({ load: ('https:' == location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js' }); setMenu = function(menu_id){ $.ajax({ url: "/menus/ajax_set_menu/"+menu_id, type: 'POST', dataType: "html", data: { format: 'JSON', }, success: function(data) { } }); } setSubMenu = function(submenu_id){ $.ajax({ url: "/submenus/ajax_set_submenu/"+submenu_id, type: 'POST', dataType: "html", data: { format: 'JSON', }, success: function(data) { } }); } </script> <!--[if lt IE 7 ]> <script src="//ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/CFInstall.min.js"></script> <script>window.attachEvent('onload',function(){CFInstall.check({mode:'overlay'})})</script> <![endif]--> </body> </html> Hi, I am using php dynamic listing from database. it is working but I wanna integrate to a horizontal css menu how can i integrate my codes to any css horizantal dropdown menu. thans. here my dynamic list. <?php function sinirsiz_kategori($parent) { $sql = mysql_query("SELECT * FROM kategoriler ORDER BY id DESC"); while($row = mysql_fetch_array($sql)) { $diziler[$row['id']] = array('baslik' => $row['baslik'],'parent' => $row['parent']); } $has_childs = false; foreach($diziler as $key => $value) { if ($value['parent'] == $parent) { if ($has_childs === false){ $has_childs = true; echo "\t<ul>"; } echo "<li><a href=\"".$value['baslik'].".php\">".$value['baslik']."</a>"; sinirsiz_kategori($key); echo "</li>\n"; } } if ($has_childs === true) echo "</ul>"; } ?> <?=sinirsiz_kategori(0)?> Hi all, my first post here (except my intro post earlier today). I looked for this in the Code Snippet section and didn't see it, and honestly I'm very much a noob at this (for now, at least) so I'm not quite sure what I'd look for anyway. I've got a decent grasp on HTML and CSS and very little PHP. So here's what I need help with: I wrote a simple PHP include so that all my main pages (including the index file) would all use the same file (navtabs.php) for their navigation tabs. But how do I make the code in navtabs.php dynamic for which button should be highlighted on the proper page? Here is the code snippet for my navigation: Code: [Select] <nav> <ul> <li><a href="index.php" class="current">Home</a></li> <li><a href="page-two.php" >Page Two</a></li> <li><a href="page-three.php">Page Three</a></li> <li><a href="page-four.php">Page Four</a></li> <li class="last"><a href="page-five.php">Page Five</a></li> </ul> </nav> Where class="current" is the highlighting attribute. All my pages using the same include of this code show the Home tab highlighted? Hoping someone has a simple fix for me. Thanks! Hi All, I have a snippet of code (below) which I use to create a dynamic menu from a MySQL database for a community website. Fields used in the database a ID parent (what the parent page is) page_order (what is says on the tin) short_title (a short title for the page for the URL) title (the page title - used as the text for the link) content (the content for the page) I have got the dynamic list to display fine, but what I would like to be able to do is give each list item a 'class' tag when it has been selected (and thus is the page being shown). Can anyone suggest how to amend the below code to allow this? Code is: Code: [Select] <!-- ##### START LIST_INFO_PAGES ##### --> <?php include("../config/config.php"); ?> <?php $sql = "SELECT * FROM `PCNET_$filename` WHERE parent = 'council' ORDER BY page_order ASC"; $sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql); while ($row = mysql_fetch_assoc($sql_result)) { print ''; if ($row["status"]<>'') { echo '<li><a href="../council-indiv.php?id='; echo ($row["id"]).'&short_title='; echo nl2br(stripslashes(utf8_decode($row["short_title"]))).'" title='; echo nl2br(stripslashes(utf8_decode($row["title"]))).'>'; echo nl2br(stripslashes(utf8_decode($row["title"]))).'</a></li>'; }; }; ?> <!-- ##### END LIST_INFO_PAGES ##### --> Help will be welcome! Neil Hello PHPfreaks! I build a website for a company way back when I was still learning basic PHP! Now unfortunaly the webhost has decided to change their security settings, specifically chaning the allow_url_include and allow_fopen_include to off! That however breaks the website that I did, since i am using the following code in calling the various menus around the website: Code: [Select] include(''$site_url'menu.php?menuid=1'); Now I am well aware that this is not the best way to include a menu! ohhh yeah btw, the code for the menu.php file is: Code: [Select] <?php include('config.php'); $menuid = mysql_real_escape_string($_GET['menuid']); $menu_categories = mysql_query("SELECT * FROM " .$db_prefix. "menucategories WHERE id='".$menuid."'"); while($menu_cat = mysql_fetch_array($menu_categories)) { if($menu_cat['display_name'] == "") { $menu = mysql_query("SELECT * FROM " .$db_prefix. "menu WHERE cat = ".$menu_cat['id']." ORDER BY placement ASC"); echo "<ul>"; while($menu_rows = mysql_fetch_array($menu)) { echo "<li><a href='" .$menu_rows['URL']. "' class='".$menu_cat['name']."' >" .$menu_rows['name']. "</a></li>"; } echo "</ul>"; } else { echo "<h4>" .$menu_cat['display_name']. "</h4>"; $menu = mysql_query("SELECT * FROM " .$db_prefix. "menu WHERE cat = ".$menu_cat['id']." ORDER BY placement ASC"); echo "<ul>"; while($menu_rows = mysql_fetch_array($menu)) { echo "<li><a href='" .$menu_rows['URL']. "' class='".$menu_cat['name']."' >" .$menu_rows['name']. "</a></li>"; } echo "</ul>"; } } ?> So i build the website so that you call the various menus around in the website using the menu.php include and setting a variable based on a ID (i.e menu.php?menuid=2) and of course using variables in the URL name you need to define a complete URL in the include, which now with the hosting companies new security policy doesn't work! SO BASICALLY! What I am trying to ask: Is there any alternative to include menu.php?menuid=XX without using the absolute URL? I want make the following, (I have already a database with three tables (Countries, Timeline and Category)). 1: list of countries (drop down menu 1), Timeline of the countries history (drop down 2) and Category (drop down 3). 2: The selected values of the drop down menus must show take the information from the database. Can any one help me with the coding? i have created a seating system. based on the number of seats booked that value is passed to a page that dynamicly produces a drop down box for each seat booked so the type of seat price can be assigned. this part works fine. the problem i have is how do i code the recieving page not knowing how many values are going to be passed? this is the drop down menu page Thanks Code: [Select] <form action="payment.php?seatco=<?php echo $s_count; ?>" method="post" name="f1"> <div id="tick_select"> <?php for($i=1; $i<=$s_count; $i++){ $tick= mysql_query("select * from ticket_list"); ?> <select name="tick_com<?php echo $i; ?>" id="tick_com" onChange="" title="Choose A Ticket"> <option value="">Select Ticket type</option> <?php while($result= mysql_fetch_assoc($tick)) { ?> <?php echo '<option value="'.$result[ticket_id].'" name="'.$result[price].'">'.$result[type].'</option>';?> <?php }}?> </select> </div> <INPUT TYPE="submit" VALUE="Select"> </form> I'm trying to figure it out why my code it's only updating the last menu or submenu of a menu. The menu and submenu are stored in the same database and the parent_id is equal to the id for the sub-menus . Parent_id = 0 means it's a main menu. Help! Hey Guys, I'm building a site and I need a drop down menu created dynamicly.... This is the flat html code Code: [Select] <div class="art-nav"> <div class="l"></div> <div class="r"></div> <ul class="art-menu"> <li><a href="URL 1"><span class="l"></span><span class="r"></span><span class="t">TOP LEVEL</span></a> <ul> <li><a href="URL 1">SUB CAT 1</a></li> <li><a href="URL 2">SUB CAT 2</a></li> <li><a href="URL 3">SUB CAT 3</a></li> </ul> </li> <li class="art-menu-li-separator"><span class="art-menu-separator"></span></li> <li><a href="URL 5"><span class="l"></span><span class="r"></span><span class="t">Contact Us</span></a></li> </ul> </div> This is the code that shows a dyamic code, but not in the menu... <?php wpsc_start_category_query(array('category_group'=> get_option('wpsc_default_category'), 'show_thumbnails'=> get_option('show_category_thumbnails'))); ?> <a href="<?php wpsc_print_category_url();?>" class="wpsc_category_link"><?php wpsc_print_category_name();?></a> | <?php wpsc_print_subcategory(); ?> <?php wpsc_end_category_query(); ?> hii,everyone... i am new to the forum ..so forgive me if i make some errors in describing my problem i want to create a drop down menu...the values of which i want to retrieve from a table i have created in my database... i have been able to acheive this...but i want a second drop down menu...in which i want the values to get filtered according to the selection of the first drop down menu... i hav a table with the name test...which i am connecting to the first drop down menu i hav created another table with the name testtype...for second menu.. the id of first table is the testid of second... plzz help me with creating the second menu... my code is Code: [Select] <?php $sql_result = "select test_series FROM test"; $result = mysql_query($sql_result); ?> <td>Select Test Series </td> <td> <select name="testseries" id="testseries" )"> <option>Select</option> <?php if(mysql_num_rows($result)) { while($row = mysql_fetch_assoc($result)) { $test = $row['test_series'];?> <option><?php echo $test ?></option> <?php } } else {?> <option>No Names Present</option>"; <?php } ?> </select> </td> </tr> <tr> <?php $testseries = $_POST['testseries']; $query = "select id from test where test_series = '$testseries'"; $resultt = mysql_query($query) or die(mysql_error()); $row = mysql_fetch_array($resultt); $id = $row['id']; $sql_result = "select test_name FROM testtype where testid = $id"; $result = mysql_query($sql_result); ?> <td>Select Test Name </td> <td> <select name="testtype"> <option>Select</option> <?php if(mysql_num_rows($result)) { while($row = mysql_fetch_assoc($result)) { $test2 = $row['test_name'];?> <option><?php echo $test2 ?></option> <?php } } else {?> <option>No Names Present</option>"; <?php } ?> </select> </td> </tr> IN THIS CODE I AM GETTIN AN ERROR Undefined index: testseries in ..addques.php on line 155 WHICH IS THIS ONE $testseries = $_POST['testseries']; I am building a site using PHP, OOP, and an MVC framework. i am not using laravel, codeignitor, or any other framework, I am building this on my own. I am a newbie to mvc and so I am learning how it all works. I have a dynamic nav menu that populates the categories from the db. The menu/categories will populate and work fine when I view the nav page on its own, but it will not work when it is included in the index view page. What should I do to make the dynamic menu view on all the view pages that i need it to? Below is my code, any guidance would be greatly appreciated. Controller: class Behindthescenes extends Controller { public function __construct() { $this->btsModel = $this->model('mBehindthescene'); } public function index() { $data = [ 'title' => 'Admin Dashboard', ]; $this->view('/behindthescenes/index', $data); } // Get categories for nav menu public function bts_cat_nav() { $catnav = $this->btsModel->getCatsNav(); $data = [ 'catnav' => $catnav, ]; $this->view('/includes/bts_cat_nav', $data); } } Model: class mBehindthescene { private $db; public function __construct() { $this->db = new DBC; } // Get Categories for Admin Navigation public function getCatsNav() { $this->db->query('SELECT * FROM categories ORDER BY cat_name ASC'); $result = $this->db->fetchMultiple(); return $result; } } Index View: require_once APPROOT . '/views/includes/header.php'; require_once APPROOT . '/views/includes/bts_nav.php'; require_once APPROOT . '/views/includes/bts_cat_nav.php'; ?> <div class="container-fluid"> ADMIN DASHBOARD </div> Nav Menu View: <div class="container"> <div class="row"> <div class="cat_nav"> <ul> <?php foreach ($data['catnav'] as $cat): ?> <li class="nav-item"><a href="<?php echo $cat->cat_link; ?> class=" nav-link text-white p-1 mb-1 sidebar-link"><i class="<?php echo $cat->cat_fa; ?> text-light fa-lg mr-3"></i><?php echo $cat->cat_name; ?></a></li> <?php endforeach;?> </ul> </div> </div> </div>
Hi guys, I'm still not having any luck with coming up with an idea of how to make my multi-level drop down menu work with items from a database. I don't necessarily need code, but an idea of how to make it work, so any ideas are welcome. The table: Column Descriptions: id - The unique id label - The text to display link - The link to be used relation - I cannot remember why I wanted that... just disregard it parent - The parent item's id (0 for no parent) sort - A sort number for the item (ascending) active - 0 for false, 1 for true (not implemented yet, will add a WHERE `active` = 1 into the sql later) depth - How many parent items there are Now, here's what it has to do (the class): Grab items from the database (sorted by depth, parent, and sort) Place the children in a child array of the parents (or however it can be sorted) Implode the array and turn it into an html menu with the below structure Menu HTML Structure Code: [Select] <div id="menu"> <ul> <li><h2>Level 1 A</h2> <ul> <li><a href="?r=level2/a">Level 2 A</a> <ul> <li><a href="?r=level3/a">Level 3 A</a></li> <li><a href="?r=level3/b">Level 3 B</a></li> </ul> </li> </ul> </li> <li><a href="?r=level1/b"><h2>Level 1 B</h2></a></li> </ul> </div> And here is the code I have so far, but I can't figure out how to get the children into the parent array, or at least sort it so that I can achieve the above HTML structure. Thank you in advance for your help, and as I said above, I don't necessarily need code, but an idea of how to make it work, so any ideas are welcome. I'm trying to create a dynamic option menu with one alert selected based on the first query to the db. Any help would be greatly appreciated. Code: [Select] //function to get alerts and create select menu with current alerts pre-selected function getALERTS1($id){ require('db.php'); $alert = mysqli_query($conn, "SELECT alert1 FROM visit_data WEHERE patientid = $id AND discharged IS NULL"); $row = mysqli_fetch_array($alert); $selects=null; $query = mysqli_query($conn, "SELECT alertid, name FROM alerts"); while($row1 = mysqli_fetch_array($query)) { $selects .= "<option value=\"" . $row1['alertid'] . "\"> if($row1['alertid']==$row['alert1']) { echo ' selected'; } ".$row1['name']."</option>"; } return $selects; } |