Jump to content

Archived

This topic is now archived and is closed to further replies.

maziagha

Foreach and list/menu

Recommended Posts

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]

Share this post


Link to post
Share on other sites
try change line [code]if ($parentId = 0) {[/code]to[code]if ($parentId == 0) {[/code]

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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]

Share this post


Link to post
Share on other sites
try[code]$list .= "<option value=\"$parentId\"> $name"; [/code][code]$list .= "<option value=\"$key\"> $name"; [/code]

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.