Помогите доделать

Valentin

Новичок
Вывод в PHP

Привет, Всезнающий Phpclub!
Решил написать небольшой класс... автоматизированной таблицы вывода разных списков.

Конечно, можно было всего этого не делать :) Тут описана одна из возможностей класса таблицы: выводить столько столбцов сколько нужно. Она и осталась нереализованной как надо.

Коротко: класс принимает 2 параметра в конструкторе
PHP:
__constructor($ins_cols,$icon_col = "")
Первый - список колонок таблицы,
Второй - последняя колонка, которая содержит набор иконок, кликнув по которым выполняются действия над записью-строкой, типа: редактировать, удалить и т.д.

Результат выполнения всех функций класса является всего 1 html+php строка $tr:

PHP:
$tr = "<tr><td>".'$row["name"]'."</td><td>".'$row["email"]'."</td><td>".'$row["url"]'."</td></tr>";
Тут '$row["..."]' берутся в одинарные кавычки, чтобы это переменные вывести позже, в подстановке $tr в шаблоне.

Другой работает с готовым html-шаблоном каркаса таблицы, и должен подставить в него эту строку $tr столько раз, сколько записей нужно вывести, т.е. $key, например:

PHP:
foreach($data as $key => $row) { 
// $row => array ("name" => "Иван", "email" => ...)
// тут должна быть подстановка-вывод $tr
}
В итоге должен быть результат, вроде

Код:
<tr><td>Иван</td><td>[email protected]</td><td>[url]www.ivan.com[/url]</td></tr>
но выводится, eсли писать
PHP:
echo $tr;
такая штука, т.к. значения $row["..."] раньше были закрыты в одинарные кавычки ' '.

Код:
<tr><td>$row["name"]</td><td>$row["email"]</td><td>$row["url"]</td></tr>
Однако, Вопрос. Как получить значения '$row["..."]' при подстановке $tr в цикле?

Заранее благодарен!
 

Valentin

Новичок
Автор оригинала: Cougar
PHP:
echo "${row['column']}";
Этот вариант не подходит.

Уточню. Когда строковой переменной $tr присваивается значение
PHP:
...
$tr .= "<td>".'$row["'.$col_name.'"]'."</td>";
...
, то тут не объявляется переменная $row, т.к. здесь "$row[...]" - всего лишь такой же набор символов: как и "<td>", "$row[...]". Тут подставляются только индексы $col_name для $row.
Эта запись делается с целью того,
передать из класса Таблицы -> строку $tr -> классу Шаблонов, который возьмёт значение $tr и подставит в шаблон. Абстрагируйте $tr с его $row от foreach с его $row.
Просто скажите, можно ли организовать буффер вывода строки $tr таким образом, чтобы PHP компилятор понял, что участки типа $row["name"] в этой строке - это php-код, а не набор символов или html.
 

lucas

Guest
Z.O.S.

А еще можно за это по рукам получать.
 

Shurik

Guest
lucas
неужели использование eval() - криминал?
 

Valentin

Новичок
Автор оригинала: Shurik
lucas
неужели использование eval() - криминал?
А есчё ob_start(), ob_clean(), ob_get_contents() ... и ещё много всякой всячины, но вопрос был по существу! Так что давайте, без рукоприкладства и т.д. и т.п.
 
Сверху