Собрать результаты цикла в одну переменную

Статус
В этой теме нельзя размещать новые ответы.

NetStranger

Постоялец
Регистрация
16 Сен 2008
Сообщения
124
Реакции
1
есть такой цикл
Код:
function ShowTree ($parent_id,$id) {
$CI =& get_instance();
$CI->load->database();
$sql = "SELECT * FROM comments WHERE parent = '$parent_id' AND article = '$id' ORDER BY date";
$result = $CI->db->query($sql);

if ($result->num_rows() > 0) {
            echo '<div style="margin-left:15px;border: 1px solid">';
            foreach ($result->result_array() as $row)
            {
                    $user = $CI->mainmodel->profile($row['nick_id']);
                    echo '<div>'.$user['username']." ".$row['text'].'</div>';
                    ShowTree ($row['id'],$id);
            }
            echo '</div>';
                            }
}
ShowTree (0,$id);
мне нужно чтобы он не через эхо воспроизводился , а для каждого цикла if ($result->num_rows() > 0) результат заносил в переменную $html
пытался сделать так :
Код:
function ShowTree ($parent_id,$id) {
$CI =& get_instance();
$CI->load->database();
$sql = "SELECT * FROM comments WHERE parent = '$parent_id' AND article = '$id' ORDER BY date";
$result = $CI->db->query($sql);

if ($result->num_rows() > 0) {
    $html .= '<div style="margin-left:15px; border: 1px solid">';
    foreach ($result->result_array() as $row)
        {
        $user = $CI->mainmodel->profile($row['nick_id']);
        $html .= '<div>'.$user['username']." ".$row['text'].'</div>';
        ShowTree ($row['id'],$id);
        }
    $html .= '</div>';
    
}
}
ShowTree (0,$id);
пишет ошибки или выводит не в том порядке что надо... помогите плиз!

ps мне это нужно чтобы результат выводился в форме JSON ,так как предыдущий код делает аля
Код:
 foreach ($data as $val) {
                        
                        $new_arr[$val['id']] =  array($user['username'] ,$val['text'], $val['date'], $user['email'], $user['avatar'], $val['article'], $val['parent']);
                        }
                    echo json_encode(array('art' => $new_arr));
и никаких проблем, а тут ваще зопа((( помогите плиз
 
мне нужно чтобы он не через эхо воспроизводился , а для каждого цикла if ($result->num_rows() > 0) результат заносил в переменную $html
пытался сделать так :
в общем ты правильно делаешь. Ошибки пишет потому, что:
1- Переменная $html не объявлена.
2- функция вызывает саму себя и не совсем понятно как выводит не в том порядке что надо... если переменная не доступна из вне.
Попробуй
PHP:
$html='';
function ShowTree ($parent_id,$id) {
 global $html;
$CI =& get_instance();
$CI->load->database();
$sql = "SELECT * FROM comments WHERE parent = '$parent_id' AND article = '$id' ORDER BY date";
$result = $CI->db->query($sql);
 
if ($result->num_rows() > 0) {
            $html .= '<div style="margin-left:15px;border: 1px solid">';
            foreach ($result->result_array() as $row)
            {
                    $user = $CI->mainmodel->profile($row['nick_id']);
                   $html .=  '<div>'.$user['username']." ".$row['text'].'</div>';
                    ShowTree ($row['id'],$id);
            }
            $html .= '</div>';
 }
}
ShowTree (0,$id);
 
я так потихоньку начинаю допирать где глюки, да я в курсе что HTML не объявлял, и объявлял тоже самое, не в том порядке фигачит, и все потому что функция в цикле самой функции, тут какой то перекрестный цикл я с такими не сталкивался, когда он тупо ECHO делает до все выводиться очень даже структурировано и как мне надо, а когда я начинаю суммировать переменные он переворачивает все с ног на голову ...

Спасибо за ответ , но с таким раскладом он вообще белый лист выдает без каких либо ошибок... ((
 
Попробуй

PHP:
$html1='';
$html2='';
$html3='';

function ShowTree ($parent_id,$id) {
 global $html1;
 global $html2;
 global $html3;
$CI =& get_instance();
$CI->load->database();
$sql = "SELECT * FROM comments WHERE parent = '$parent_id' AND article = '$id' ORDER BY date";
$result = $CI->db->query($sql);
 
if ($result->num_rows() > 0) {
            $html1 .= '<div style="margin-left:15px;border: 1px solid">';
            foreach ($result->result_array() as $row)
            {
                    $user = $CI->mainmodel->profile($row['nick_id']);
                   $html2 .=  '<div>'.$user['username']." ".$row['text'].'</div>';
                    ShowTree ($row['id'],$id);
            }
            $html3 .= '</div>';
 }
}
ShowTree (0,$id);

PS.
Не должно быть вместо
PHP:
 $html1 .= '<div style="margin-left:15px;border: 1px

следущее:
PHP:
 $html1 = '<div style="margin-left:15px;border: 1px

('$html1 = ' без точки??)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху