Now I have create categories and create post is successful but when I edit my post I have problem if edit my post I will lose my category .. I need to get my category in table and I can change it
<?php
$sql = "SELECT catid, catname, parentid FROM categories";
$res = mysql_query($sql);
// initialize $categories to make sure it is an array
$categories = array();
while ($row = mysql_fetch_assoc($res)) {
$parent = intval($row['parentid']);
$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>
My problem located in line 25
$category_string .= '<option value=""></option><option value="'.$category['catid'].'">'.$opt_value.'</option>';
I need to get my category in first and show the rest of the results.
For each category, you are displaying two options, an empty option and one with the category information:
This is inside your loop. So every time your loop iterates, two options will be created. A blank one and one with your category. I'm betting you just need one blank option at the very beginning of the
<select>
. I think this is what you wanted:Also, as @MoeTsao mentioned in the comments, try to avoid using
mysql_*
functions, as their use is discouraged by PHP. Instead, usemysqli_*
or PDO.