2014-02-19 109 views
0

我有一個包含選擇類別下拉列表的表單。當用戶添加一個新類別時,他應該從所有主類別中選擇parent =「0」或從他們的子類別中選擇。 我的數據庫結構爲:PHP產品類別選擇下拉菜單,允許用戶將類別定義爲主類別或子類別

id || bg_category || parent ==> and for example I have:  
1 || Jewellery || 0  
2 || Rings  || 1  
3 || Ear rings || 2  
4 || Bracelets || 0 

的條件是一個父類不能被添加爲子類別到其子類別或本身。 到目前爲止,我有這個功能:

public function getMasterCategories($cid = 0) { 
    echo '<option value="0" selected="true">No category</option>'; 
    if (empty($cc)) 
     $cc = 9999999999; 
    $que = 'select id, bg_category,parent from products_categories group by id order by bg_category'; 
    $res = mysql_query($que) or die('Mysql Error:' . mysql_error() . '<br /> Query:' . $que); 
    $num_rows = mysql_num_rows($res); 
    for ($i = 0; $i < $num_rows; $i++) { 
     $rw = mysql_fetch_row($res); 
     if ($c == $rw[0]) 
      echo '<option value="', $rw[0], '" selected="true">', $rw[1], '</option>'; 
     else 
      echo '<option value="', $rw[0], '">', $rw[1], '</option>'; 
    } 
} 

現在這個函數返回所有類別和節目可用性,使孩子類別是父母親類別。

工作職能:

function getMasterCategories($c=0,$cc=0){ 
echo '<option value="0" selected="true">Няма</option>'; 
if(empty($cc)) $cc=9999999999; 
$que='select id, bg_category,parent from products_categories where id="'.$cc.'"'; 
$res=mysql_query($que) or die('Mysql Error:'.mysql_error().'<br /> Query:'.$que); 
$num_rows=mysql_num_rows($res); 
$rw=mysql_fetch_row($res); 

    if($rw[0]>0){ 
    $querys='select id,bg_category,parent from products_categories where parent="'.$cc.'" order by bg_category'; 
    $results=mysql_query($querys) or die('Mysql Error:'.mysql_error().'<br /> Query:'.$querys); 
    $num_rs=mysql_num_rows($results); 
    if($num_rs=="0"){ 
    $query='select id,bg_category,parent from products_categories where id!="'.$cc.'" order by bg_category'; 
    $result=mysql_query($query) or die('Mysql Error:'.mysql_error().'<br /> Query:'.$query); 
    $num_r=mysql_num_rows($result); 

    for($i=0;$i<$num_r;$i++){ 
    $row=mysql_fetch_row($result); 
    $q='select id,bg_category,parent from products_categories where parent="'.$cc.'" and id="'.$row[0].'" order by bg_category'; 
    $r=mysql_query($q) or die('Mysql Error:'.mysql_error().'<br /> Query:'.$q); 
    $ro=mysql_fetch_row($r); 
    if(empty($ro[0])){ 
     if($c==$row[0]) echo '<option value="',$row[0],'" selected="true">',$row[1],'</option>'; 
     else echo '<option value="',$row[0],'">',$row[1],'</option>'; 
     } 
    } 
    } 

} 

}

+0

你的PHP代碼是錯誤的。仔細檢查你的大括號 –

+0

是否正確!現在是好的,jst複製粘貼錯誤,對不起 – thecore7

+0

另外,'$ c'未定義 –

回答

0

您可以添加其他enrty添加父類別到其子類別。

id || bg_category || parent ==> and for example I have:  
1 || Jewellery || 0  
2 || Rings  || 1  
3 || Ear rings || 2  
4 || Bracelets || 0 
5 || Jewellery || 2 

在上述情況下,我試圖添加下Rings類別Jewellery類別。然而,新的Jewellery類別有不同的ID

如果你提供你的INSERT語句,我就可以在查詢幫助過

+0

感謝您的幫助,但我解決了管理問題,這裏是解決方案更新,謝謝 – thecore7

0

工作職能:

function getMasterCategories($c=0,$cc=0){ 
echo '<option value="0" selected="true">Няма</option>'; 
if(empty($cc)) $cc=9999999999; 
$que='select id, bg_category,parent from products_categories where id="'.$cc.'"'; 
$res=mysql_query($que) or die('Mysql Error:'.mysql_error().'<br /> Query:'.$que); 
$num_rows=mysql_num_rows($res); 
$rw=mysql_fetch_row($res); 

    if($rw[0]>0){ 
    $querys='select id,bg_category,parent from products_categories where parent="'.$cc.'" order by bg_category'; 
    $results=mysql_query($querys) or die('Mysql Error:'.mysql_error().'<br /> Query:'.$querys); 
    $num_rs=mysql_num_rows($results); 
    if($num_rs=="0"){ 
    $query='select id,bg_category,parent from products_categories where id!="'.$cc.'" order by bg_category'; 
    $result=mysql_query($query) or die('Mysql Error:'.mysql_error().'<br /> Query:'.$query); 
    $num_r=mysql_num_rows($result); 

    for($i=0;$i<$num_r;$i++){ 
    $row=mysql_fetch_row($result); 
    $q='select id,bg_category,parent from products_categories where parent="'.$cc.'" and id="'.$row[0].'" order by bg_category'; 
    $r=mysql_query($q) or die('Mysql Error:'.mysql_error().'<br /> Query:'.$q); 
    $ro=mysql_fetch_row($r); 
    if(empty($ro[0])){ 
     if($c==$row[0]) echo '<option value="',$row[0],'" selected="true">',$row[1],'</option>'; 
     else echo '<option value="',$row[0],'">',$row[1],'</option>'; 
     } 
    } 
    } 

} 

}