2011-11-14 1 views
2

하위 범주가 하위 범주 인 데이터베이스에서 범주를 <optgroup><option> 태그로 가져 오려고합니다. 부모가 <optgroup> 태그가 되길 원하지만 모든 태그를 반복 할 수 없습니다. 레벨, 나는 단지 레벨 2에 도착하고 나는 너무 멀어 질 수 없다!데이터베이스에서 HTML Optgroups 및 옵션으로 범주 가져 오기

이것은 내가 지금까지 무엇을 가지고 있습니다 :

$con = mysql_connect($dbHost, $dbUsername, $dbPassword); 
if (!$con) { 
    echo "Cannot connect to the database: " . mysql_error(); 
    exit; 
} 

$db_selected = mysql_select_db($dbName, $con); 
if (!$db_selected) { 
    echo "Can\'t use $dbName : " . mysql_error(); 
    exit; 
} 

$query = "SELECT * FROM categories"; 

$result = mysql_query($query); 
$pidHolder = null; // To take the current parent pid in the loop 
$optOpen = false; // Check that optgroup tag is opened 
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    if ($line['parent_id'] == 0 && $line['cat_id'] == 0) 
     continue; 
    if ($line['parent_id'] == 0) { 
     if ($optOpen) { 
      echo '</optgroup>'; 
      $optOpen = false; 
     } 
     echo "<optgroup value=" . $line['cat_name'] . "\" label=\"" . $line['cat_name'] . "\">"; 
     $pidHolder = $line['cat_id']; 
     $optOpen = true; 
     continue; 
    } else if (isset($pidHolder) && $pidHolder == $line['parent_id']) { 
     echo '<option value="' . $line['cat_id'] . '">' . $line['cat_name'] . '</option>\n'; 
     continue; 
    } 
} 
mysql_close(); 

내 코드에 문제가 무엇입니까? 나머지 아이들을 따라 가려면 어떻게해야합니까?

답변

1

범주를 쉽게 관리하고 <optgroup><option>에 넣으려면 재귀 함수를 사용하십시오.

+2

나는 그것을 시험해 보았지만 _messy_ 함수로 끝내었다. 어쨌든 답변 주셔서 감사합니다. ^ _ ^ – Aamer

관련 문제