Буферизация PHP-шаблона в цикле - PullRequest
2 голосов
/ 08 января 2011

Я в основном запускаю цикл для запроса и использую буферизацию PHP для вставки файла шаблона в цикл. Проблема в том, что если в моем запросе более одного результата, я получаю два или более одинаковых результата (циклически повторяет одни и те же данные, а не следующий в строке результатов mysql).

функция ...

function get_blocks(){
    $query = "SELECT * FROM `my_table`";
    $results = mysql_query($query);

    while($data = mysql_fetch_assoc($results){
        extract($data, EXTR_SKIP);
        ob_start();
        include(dirname(__FILE__) . '/templates/infoBlock.php');
        $returnString .= ob_get_clean();
    }
    echo $returnString;
}

Шаблон выглядит так:

<div>
    Hi my name is <?php echo $name; ?>
    <br>
    and my age is <?php echo $age; ?>
</div>

Итак, если у меня есть две записи:

record 1
name: Joe
age: 42

record 2
name: Sam
age: 35

Я получаю

Hi my name is Joe
and my age is 42


Hi my name is Joe
and my age is 42

вместо

Hi my name is Joe
and my age is 42


Hi my name is Sam
and my age is 35

Я уже пробовал

echo ob_get_clean(); 

и удаление $ returnString из функции безрезультатно ...

мысли

1 Ответ

0 голосов
/ 08 января 2011

Я пропустил параметр EXTR_SKIP в функции извлечения.EXTR_SKIP приводит к тому, что любые переменные, которые уже установлены, НЕ перезаписываются (насколько мне известно, это особенность защиты)

...