For hver kategori viser du to muligheder, en tom mulighed og en med kategorioplysningerne:
$category_string .= '<option value=""></option><option value="'.$category['catid'].'">'.$opt_value.'</option>';
Dette er inde i din løkke. Så hver gang din loop gentager, to muligheder vil blive oprettet. En tom en og en med din kategori. Jeg vil vædde på, at du bare har brug for en tom valgmulighed i begyndelsen af <select>
. Jeg tror, det er det, du ønskede:
// notice we are initializing $category_string with an empty option here
$category_string = '<option value=""></option>';
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);
// removed extra empty category and put it in $category_string initialization
$category_string .= '<option value="'.$category['catid'].'">'.$opt_value.'</option>';
build_categories_options($category['catid'], $categories, $level);
}
$level = substr($level, -3);
}
return $category_string;
}
Som @MoeTsao nævnte i kommentarerne, prøv også at undgå at bruge >mysql_*
funktioner, da deres brug frarådes af PHP. Brug i stedet mysqli_*
eller PDO
.