2012-07-02 59 views
-2

我有一個表結構像下面創建下拉樹在PHP

|id| parent_id |name| 

parent_id指的是同一個表遞歸我試圖創建一個下拉樹 但不成功。請告訴它如何在覈心php或Cake php中創建。

這是我乾的太far..But它給錯誤 「致命錯誤:用盡134217728個字節允許存儲器大小(試圖分配67025477個字節)/ viren /根目錄/的UPM /應用/控制器/ tests_controller 390線上的.php;

function admin_takecat(){ 
$this->layout=false; 
$this->render(false); 
Configure::write('debug',2); 

$firstlevel=$this->cats->find('list',array('fields'=>array('Category.id','Category.cat_name'),'conditions'=>array('Category.parent_id'=>0,'department_id'=>9))); 
    $dropbox='<select>'; 
foreach($firstlevel as $id=>$val){ 
    $dropbox.='<option value='.$id.'>'.$val.'</option>'; 
    $count=$this->cats->find('count',array('conditions'=>array('Category.parent_id'=>0,'Category.department_id'=>9,'Category.parent_id'=>$id))); 
    if($count>0){ 
    $dropbox=$this->_recursive($id,$dropbox,1); 

    } 

} 
$dropbox.='</select>'; 
echo $dropbox; 



} 
function _recursive($catid,$dropbox,$level){ 

$listcats=$this->cats->find('list',array('fields'=>array('Category.id','Category.cat_name'),'conditions'=>array('Category.parent_id'=>0,'Category.department_id'=>9,'Category.parent_id'=>$catid))); 
$mark=''; 
for($i=1;$i<=1;$i++){ 
    $mark.='-'; 

} 
+0

php與「下拉樹」無關。你在說什麼是一個演示文稿,HTML – zerkms

+0

你需要SQL查詢或HTML格式? –

+0

不需要sql查詢。我只希望在php中創建邏輯... –

回答

0

我不確定你的意思是「希望父母身份證和孩子ID分開」。瞭解select中的元素只不過是一個顯示值和一個數據值,並且數據值將與字段名一起發送到服務器。

所以選擇不能真正區分多種數據值。例如,每個選項不能有多個ID。你所能做的就是將你的顯示值設置爲包含ID(比如你有「1-遊戲 - 0」等等),然後決定哪個數據值應該是select中該選項的值。

你可以做的一件事是使用optgroup tag的組選項元素。類似這樣的:

<select name="myOptions"> 
    <optgroup label="Category 1"> 
    <option value="1">First Choice</option> 
    <option value="2">Second Choice</option> 
    <option value="3">Third Choice</option> 
    </optgroup> 
    <optgroup label="Category 2"> 
    <option value="4">Fourth Choice</option> 
    <option value="5">Fifth Choice</option> 
    </optgroup> 
    <optgroup label="Category 3"> 
    <option value="6">Sixth Choice</option> 
    <option value="7">Seventh Choice</option> 
    </optgroup> 
</select> 

在驗證中,瀏覽器不應該允許用戶選擇一個組,他們將不得不選擇一個實際的選項。所以你不必擔心這一點。這確實提供了更多層次上顯示您的值的一些額外的靈活性。但是,瞭解這種情況下只允許一層選項嵌套。 (所以一個optgroup不能包含另一個optgroup。)