2011-12-25 6 views
1

То, что я пытаюсь достичь, чтобы иметь возможность напечатать результат:PHP Еогеасп в Еогеасп

Header 1 
    Link 1 
    Link 2 
Header 2 
    Link 3 
Header 3 
    Link 4 
    Link 5 

Но коды ниже печатает результат:

Header 1 
    Link 1 
    Link 2 
Header 2 
    Link 1 
    Link 2 
    Link 3 
Header 3 
    Link 1 
    Link 2 
    Link 3 
    Link 4 
    Link 5 

Использование php pdo wrapper class, насколько я знаю, у меня нет выбора, кроме как использовать «Еогеасп» вместо «а» к результатам цикла, и вот мой код:

$bind = array(":users_id" => $id); 
$categoryQry = $db->select("category","users_id=:users_id", $bind); 
//loop Headers 
foreach($categoryQry AS $CatRes){ 
    $category_name = $CatRes['category_name']; 

    $bind = array(
     ":users_id" => $id, 
     ":link_category" => $CatRes['category_id'] 
    ); 
    $linkQry = $db->select("links", "users_id=:users_id AND link_category=:link_category", $bind); 
    //loop Links under each header 
    foreach($linkQry AS $LinkRes){ 
     $link_url = $LinkRes['link_url']; 
     //$link_row outputs the links under each header, this is where the problem is   
     $link_row .= DisplayLayout("link_row.html","\$link_url"); 
    } 

    //$header outputs the result OK (3 headers as stated in above example)  
    $header .= DisplayLayout("header.html","\$category_name,\$link_row"); 
} 
//note that DisplayLayout is my template function which is used for outputting variables using an HTML file. 

Я пробовал несколько других методов без везения, надеюсь, кто-то обнаружит проблему в моем коде и приведет меня в правильном направлении.

Спасибо заранее и с Рождеством.

+1

$ link_row только когда добавляется к, что вам нужно, чтобы очистить его после каждого внешнего цикла –

ответ

1

Вам нужно сбросить $ link_row как раз перед этой линией: foreach($linkQry AS $LinkRes)

+0

Это логика стороны вещи я забыл. Спасибо за указатель, который исправил мою проблему. – 100d

1
$bind = array(":users_id" => $id); 
$categoryQry = $db->select("category","users_id=:users_id", $bind); 
//loop Headers 
foreach($categoryQry AS $CatRes){ 
$category_name = $CatRes['category_name']; 

$bind = array(
    ":users_id" => $id, 
    ":link_category" => $CatRes['category_id'] 
); 
$linkQry = $db->select("links", "users_id=:users_id AND link_category=:link_category", $bind); 
//loop Links under each header 
$link_row=''; 
foreach($linkQry AS $LinkRes){ 
    $link_url = $LinkRes['link_url']; 
    //$link_row outputs the links under each header, this is where the problem is   
    $link_row .= DisplayLayout("link_row.html","\$link_url"); 
} 

//$header outputs the result OK (3 headers as stated in above example)  
$header .= DisplayLayout("header.html","\$category_name,\$link_row"); 
} 
//note that DisplayLayout is my template function which is used for outputting  variables using an HTML file. 
1
//reset linkrow 
$link_row = ''; 


foreach($linkQry AS $LinkRes){ 
    $link_url = $LinkRes['link_url']; 
    //$link_row outputs the links under each header, this is where the problem is   
    $link_row .= DisplayLayout("link_row.html","\$link_url"); 
} 
Смежные вопросы