Reputation: 23
Fatal error: Cannot use string offset as an array in C:\xampp\htdocs\includes\categories\categories.php on line 12
$categories[$parent][] = $row;
categories.php
<?php
$sql = "SELECT catid, catname, parentid FROM categories";
$res = mysql_query($sql);
while ($row = mysql_fetch_assoc($res)) {
$parent = intval($row['parentid']);
if (!isset($categories[$parent])) {
$categories[$parent] = array();
}
$categories[$parent][] = $row;
}
?>
<table border="0" cellpadding="10" cellspacing="0">
<tr>
<td valign="top">
<?php
$category_string = "";
function build_categories_options($parent, $categories, $level) {
global $category_string;
if (isset($categories[$parent]) && count($categories[$parent])) {
$level .= " - ";
foreach ($categories[$parent] as $category) {
$opt_value = substr($level.$category['catname'],3);
$category_string .= '<option value=""></option><option value="'.$category['catid'].'">'.$opt_value.'</option>';
build_categories_options($category['catid'], $categories, $level);
}
$level = substr($level, -3);
}
return $category_string;
}
$category_options = build_categories_options(0, $categories, '');
$category_options = '<select class="chosen" name="categories" id="categories">'.$category_options.'</select>';
echo $category_options;
?>
</td>
After I insert post With category This Error Will Show ??
Upvotes: 0
Views: 6710
Reputation: 14469
I don't see where $categories
is initialized, but I'm betting that it's not an array when you enter your while
loop, and that's why you're getting an error. Try doing this for your while
loop:
// initialize $categories to make sure it is an array
$categories = array();
while ($row = mysql_fetch_assoc($res)) {
$parent = intval($row['parentid']);
$categories[$parent][] = $row;
}
You don't need to explicitly initialize $categories[$parent]
...this will be done automatically when you call $categories[$parent][] = $row;
. We know that it will start out blank because we started with an empty array before the loop.
Upvotes: 3