प्रत्येक श्रेणी के लिए, आप दो विकल्प प्रदर्शित कर रहे हैं, एक खाली विकल्प और एक श्रेणी जानकारी के साथ:
$category_string .= '<option value=""></option><option value="'.$category['catid'].'">'.$opt_value.'</option>';
यह आपके लूप के अंदर है। इसलिए हर बार जब आपका लूप पुनरावृत्त होता है, दो विकल्प बनाए जाएंगे। आपकी श्रेणी के साथ एक खाली और एक। मैं शर्त लगा रहा हूँ कि आपको बस एक की आवश्यकता है . की शुरुआत में ही खाली विकल्प . मुझे लगता है कि आप यही चाहते थे:
// 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;
}
साथ ही, जैसा कि @MoeTsao ने टिप्पणियों में उल्लेख किया है, <का उपयोग करने से बचने का प्रयास करें। कोड>mysql_*
कार्य करता है, क्योंकि उनका उपयोग PHP द्वारा हतोत्साहित किया जाता है। इसके बजाय, mysqli_*
का इस्तेमाल करें
या PDO
।