2013-05-09 2 views
1

안녕하세요, 정의되지 않은 오프셋 0이 있습니다. 이 코드 안에.정의되지 않음 오프셋 0,이 배열을 어떻게 설정할 수 있습니까?

$q = mysql_query("SELECT * FROM category"); 
if (false === $q) { 
    echo mysql_error(); 
} 

while ($r = mysql_fetch_row($q)) { 
    $names[$r[0]] = $r[2]; 
    $children[$r[0]][] = $r[1]; 
} 

function render_select($root=0, $level=-1) { 
    global $names, $children; 
    if ($root != 0) 
    echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>'; 
    foreach ($children[$root] as $child) 
    render_select($child, $level+1); 
} 

echo '<select>'; 
render_select(); 
echo '</select>'; 

오류가 정확한 라인 :

이 트리 형식의 선택 박스입니다
foreach ($children[$root] as $child) 
    render_select($child, $level+1); 

, 내가이

More efficient hierarchy system

답변

1

이 질문에이 코드를 발견 여기에 코드의 모호성이 있습니다.

if ($root != 0) 
    echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>'; 
    foreach ($children[$root] as $child) 
    render_select($child, $level+1); 
당신이이 세 줄 만 $root != 0 경우 실행하려고 시도하는 경우

,이 같이 중괄호를 추가해야합니다 그렇지 않으면

if ($root != 0) 
{ 
    echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>'; 
    foreach ($children[$root] as $child) 
    { 
     render_select($child, $level+1); 
    } 
} 

을 언제 render_select는 매개 변수없이 호출 (또는의 첫 번째 매개 변수 값입니다 '0') 배열 키 '0'에서 $ children 요소에 액세스하려고 시도합니다. 오류가 나타내는 것처럼 $ children에는 해당 키에 값이 없습니다.

+0

대단히 고맙습니다. 어쨌든 오류가 사라지지만 선택 상자가 비어 있습니다. (.. snif –

+0

@DreaminMediaQueretaro $ root = 0만큼 빈 상태로 유지됩니다. '

+0

좋습니다. $ root = 1로 테스트하려고합니다. 루프 작업은 id = 1을 가진 카테고리를 얻습니다. 그래서 코드를 복사 한 곳의 대답을 추측합니다 ... requiers는 그가 말한 것을 더 커스터마이징합니다. 어쨌든, 최근에 배우는 것보다 간단하고 쉽고 어쩌면 더 커야합니다. (더 많이 쓰십시오) .... (id, parent_id, name) estructure를위한 selectbox 트리를 만들기위한 이해하기 쉬운 (쉬운) 코드. thanks –

관련 문제