maziagha Posted August 7, 2006 Share Posted August 7, 2006 Hello all!I'm using php mysql databse to creat a list/menu drop down.In my category database i also have child categories.with my script i can pull the categories and child categories.the problem i have is that the child categories are placed in the list as they wish and not directly under the main category.Can anyone help me? here is the part of that script.[code]/* Generate combo box options containing the categories we have. if $catId is set then that category is selected*/function buildCategoryOptions($catId = 0){ $sql = "SELECT cat_id, cat_parent_id, cat_name FROM tbl_category ORDER BY cat_id"; $result = dbQuery($sql) or die('Cannot get Product. ' . mysql_error()); $categories = array(); while($row = dbFetchArray($result)) { list($id, $parentId, $name) = $row; if ($parentId = 0) { // we create a new array for each top level categories $categories[$id] = array('name' => $name, 'children' => array()); } else { // the child categories are put int the parent category's array $categories[$parentId]['children'][] = array('id' => $id, 'name' => $name); } } // build combo box options $list = ''; foreach ($categories as $key => $value) { //$name = $value['name']; $children = $value['children']; $list .="<option value=\"$parentId\"> $name"; foreach ($children as $child) { $list .= "<option value=\"{$child['id']}\""; if ($child['id'] == $catId) { $list.= " selected"; } $list .= ">{$child['name']}</option>\r\n"; } $list .= "</optgroup>"; } return $list;}[/code] Quote Link to comment https://forums.phpfreaks.com/topic/16785-foreach-and-listmenu/ Share on other sites More sharing options...
sasa Posted August 7, 2006 Share Posted August 7, 2006 try change line [code]if ($parentId = 0) {[/code]to[code]if ($parentId == 0) {[/code] Quote Link to comment https://forums.phpfreaks.com/topic/16785-foreach-and-listmenu/#findComment-70626 Share on other sites More sharing options...
maziagha Posted August 7, 2006 Author Share Posted August 7, 2006 i tryed that but it messes the thing up. Note that have removed this part[code]//$name = $value['name'];[/code]if i out that back it really mess thing up. I can get it work then but i use the same list menu and if i want to add products to my database they all get recorded in wrong category. Quote Link to comment https://forums.phpfreaks.com/topic/16785-foreach-and-listmenu/#findComment-70646 Share on other sites More sharing options...
hostfreak Posted August 7, 2006 Share Posted August 7, 2006 What about:if ($parentId == "") { Quote Link to comment https://forums.phpfreaks.com/topic/16785-foreach-and-listmenu/#findComment-70654 Share on other sites More sharing options...
maziagha Posted August 7, 2006 Author Share Posted August 7, 2006 OK it work almost fine now except the main category gets wrong ID when choosen. no mather what main category i choose it is the same cat-id all the time. Work fine with child categories.someone can tell why?looks like this now:[code]/* Generate combo box options containing the categories we have. if $catId is set then that category is selected*/function buildCategoryOptions($catId = 0){ $sql = "SELECT cat_id, cat_parent_id, cat_name FROM tbl_category ORDER BY cat_id"; $result = dbQuery($sql) or die('Cannot get Product. ' . mysql_error()); $categories = array(); while($row = dbFetchArray($result)) { list($id, $parentId, $name) = $row; if ($parentId == 0) { // we create a new array for each top level categories $categories[$id] = array('name' => $name, 'children' => array()); } else { // the child categories are put int the parent category's array $categories[$parentId]['children'][] = array('id' => $id, 'name' => $name); } } // build combo box options $list = ''; foreach ($categories as $key => $value) { $name = $value['name']; $children = $value['children']; $list .= "<option value=\"$parentId\"> $name"; foreach ($children as $child) { $list .= "<option value=\"{$child['id']}\""; if ($child['id'] == $catId) { $list.= " selected"; } $list .= ">{$child['name']}</option>\r\n"; } $list .= "</optgroup>"; } return $list;}[/code] Quote Link to comment https://forums.phpfreaks.com/topic/16785-foreach-and-listmenu/#findComment-70656 Share on other sites More sharing options...
sasa Posted August 7, 2006 Share Posted August 7, 2006 try[code]$list .= "<option value=\"$parentId\"> $name"; [/code][code]$list .= "<option value=\"$key\"> $name"; [/code] Quote Link to comment https://forums.phpfreaks.com/topic/16785-foreach-and-listmenu/#findComment-70666 Share on other sites More sharing options...
maziagha Posted August 7, 2006 Author Share Posted August 7, 2006 I bow before you ;Dthx Quote Link to comment https://forums.phpfreaks.com/topic/16785-foreach-and-listmenu/#findComment-70672 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.