У меня есть цикл
for( $i = 0; $i <= $cat1; $i++ ) {
/* ПК? */
if( $l2_chars_array[$i]['karma'] != 0 ) {
$arr1['karma'] = "Да";
}
else {
$arr1['karma'] = "Нет";
}
/*В тюрьме? */
if( $l2_chars_array[$i]['in_jail'] != 0 ) {
$arr1['jail'] = "Да, осталось сидеть - " . $l2_chars_array[$i]['jail_timer'] / 60000 . " минут.";
}
else {
$arr1['jail'] = "Нет";
}
/* Чат забанен? */
if( $l2_chars_array[$i]['chatban_timer'] != 0 ) {
$arr1['chatban'] = "Да, время бана - " . $l2_chars_array[$i]['chatban_timer'] / 60000 . " минут.";
}
else {
$arr1['chatban'] = "Нет";
}
/* Инфа о клане*/
if( count( $l2_clans_array ) ) {
$arr1['clan'] = $l2_clans_array[$i]['clan_name'];
}
else {
$arr1['clan'] = "Не в клане";
}
$l2_chars_info = "
<table width='100%' border='0' cellpadding='0' cellspacing='0'>
<tr>
<td align='left' valign='top' style='padding-left:5px;'><a href='/lineage2/account'>Назад</a></td>
</tr>
<tr>
<td align='left' valign='top' style='padding-left:5px;'>Ник: " . $l2_chars_array[$i]['char_name'] . "</td>
</tr>
<tr>
<td align='left' valign='top' style='padding-left:5px;'>Клан: " . $arr1['clan'] . "</td>
</tr>
<tr>
<td align='left' valign='top' style='padding-left:5px;'>Кол-во ПВП: " . $l2_chars_array[$i]['pvpkills'] . "</td>
</tr>
<tr>
<td align='left' valign='top' style='padding-left:5px;'>Кол-во ПК: " . $l2_chars_array[$i]['pkkills'] . "</td>
</tr>
<tr>
<td align='left' valign='top' style='padding-left:5px;'>В данный момень персонаж ПК: " . $arr1['karma'] . "</td>
</tr>
<tr>
<td align='left' valign='top' style='padding-left:5px;'>Персонаж в тюрьме: " . $arr1['jail'] . "</td>
</tr>
<tr>
<td align='left' valign='top' style='padding-left:5px;'>Забанен чат: " . $arr1['chatban'] . "</td>
</tr>
</table>
";
}
Насколько я знаю, цикл запихнуть в переменную нельзя (я прав?) Получается, что необходима функция, внутри которой будет генерироваться этот самых HTML. Вопрос в следующем, как запихнуть функцию в объект такого типа:
$tpl->set( '{char_info}', "Вот_тут_должна_быть_функция" )
Если просто запихнуть ее в скобки - ежу понятно, что работать не будет, а будет просто в ХТМЛ выводиться название этой функции.
Вот исходник этот объекта:
function set($name, $var) {
if( is_array( $var ) && count( $var ) ) {
foreach ( $var as $key => $key_var ) {
$this->set( $key, $key_var );
}
} else
$this->data[$name] = $var;
}
ПС: Как сделать функцию - я знаю. Подскажите, как ее в объект запихнуть
Спустя 4 часа, 8 минут, 13 секунд (11.10.2010 - 21:33) linker написал(а):
Ну тогда берем книжечку по пхп, открываем на странице Объектно-ориентированное программирование и начинаем читать. Слишком большая тема, чтобы в двух словах рассказать как и что нужно запихнуть
class myclass
{
...
public function set()
{
...
}
...
}
Спустя 17 часов, 14 минут, 41 секунда (12.10.2010 - 14:48) AlmazDelDiablo написал(а):
Помоему, вы меня немного не так поняли. Меня интересует то, как функцию вот сюда запихнуть:
$tpl->set( '{char_info}', "Вот_сюда" );
Спустя 47 минут, 53 секунды (12.10.2010 - 15:36) Raskolnikoff написал(а):
Эмм, а что мешает написать функцию, в которой генерится этот HTML, а потом просто написать
где func_name - ваша функция. Или вам нужно передать не код таблицы?
$tpl->set( '{char_info}', func_name() );
где func_name - ваша функция. Или вам нужно передать не код таблицы?
Спустя 1 час, 23 минуты, 5 секунд (12.10.2010 - 16:59) AlmazDelDiablo написал(а):
Да, уже разобрался (именно так, как вы написали, Raskolnikoff).
Но почему-то echo chars_info(); Ничего не выводит. Подскажите, как сделать, дабы выводились сгенерированные <<<HTML из этой функции.
Но почему-то echo chars_info(); Ничего не выводит. Подскажите, как сделать, дабы выводились сгенерированные <<<HTML из этой функции.
function chars_info() {
for( $i = 0; $i <= $cat1; $i++ ) {
<<<HTML
<table width='100%' border='0' cellpadding='0' cellspacing='0'>
<tr>
<td align='left' valign='top' style='padding-left:5px;'><a href='/lineage2/account'>Назад</a></td>
</tr>
<tr>
<td align='left' valign='top' style='padding-left:5px;'>Ник: {$l2_chars_array[$i]['char_name']}</td>
</tr>
<tr>
<td align='left' valign='top' style='padding-left:5px;'>Клан: {$arr1['clan']}</td>
</tr>
<tr>
<td align='left' valign='top' style='padding-left:5px;'>Кол-во ПВП: {$l2_chars_array[$i]['pvpkills']}</td>
</tr>
<tr>
<td align='left' valign='top' style='padding-left:5px;'>Кол-во ПК: {$l2_chars_array[$i]['pkkills']}</td>
</tr>
<tr>
<td align='left' valign='top' style='padding-left:5px;'>В данный момень персонаж ПК: {$arr1['karma']}</td>
</tr>
<tr>
<td align='left' valign='top' style='padding-left:5px;'>Персонаж в тюрьме: {$arr1['jail']}</td>
</tr>
<tr>
<td align='left' valign='top' style='padding-left:5px;'>Забанен чат: {$arr1['chatban']}</td>
</tr>
</table>
HTML;
}
}
Спустя 13 часов, 41 минута, 27 секунд (13.10.2010 - 06:40) AlmazDelDiablo написал(а):
Ап. Последний вопрос актуален.
Спустя 1 час, 31 минута, 46 секунд (13.10.2010 - 08:12) linker написал(а):
Во-первых, с чего там вообще выводить, если $cat1, $arr1, $l2_chars_array ей не известны. И во-вторых, а эта функция вообще вызывается?
Спустя 5 часов, 55 минут, 17 секунд (13.10.2010 - 14:07) AlmazDelDiablo написал(а):
Функция сама заработала ( забыл добавить в условия $cat1, $arr1, $l2_chars_array ). При "echo <<<HTML" выводит в хедер весь нужный мне HTML, а просто при "<<<HTML" ничего не выводит.
Спустя 1 час, 4 минуты, 8 секунд (13.10.2010 - 15:11) Raskolnikoff написал(а):
а чем вас echo не устраивает? и кстати, интересно, что есть $tpl?
Спустя 1 минута, 38 секунд (13.10.2010 - 15:13) AlmazDelDiablo написал(а):
echo не подходит потому, что выводится в хедер, т.е. над шаблоном (который и подключется через $tpl), а надо внутрь шаблона, где и находится {char_info} .
Спустя 4 часа, 50 минут, 6 секунд (13.10.2010 - 20:03) Raskolnikoff написал(а):
а у вас шаблонизатор часом не smarty? Если да, то это все красиво реализуется средствами smarty.
Спустя 3 минуты, 3 секунды (13.10.2010 - 20:06) AlmazDelDiablo написал(а):
Если честно, не знаю. Дефолтный из DLE 8.5 . А уж как у них это реализовано, увы, не знаю. Но у них, вроде, свой класс для шаблонизации.
Спустя 3 минуты, 23 секунды (13.10.2010 - 20:10) arvitaly написал(а):
Фу́нкция — в программировании — это поименованная часть программы, которая может вызываться из других частей программы столько раз, сколько необходимо. Функция, в отличие от процедуры, обязательно возвращает значение.
Правда в PHP функции и процедуры - одно и то же, но не в вашем случае.
В PHP функция возвращает значение при помощи команды return.
У вас есть функция, но она ничего не возвращает
Правда в PHP функции и процедуры - одно и то же, но не в вашем случае.
В PHP функция возвращает значение при помощи команды return.
У вас есть функция, но она ничего не возвращает
Спустя 20 минут, 43 секунды (13.10.2010 - 20:30) AlmazDelDiablo написал(а):
Цитата (arvitaly @ 13.10.2010 - 21:10) |
Фу́нкция — в программировании — это поименованная часть программы, которая может вызываться из других частей программы столько раз, сколько необходимо. Функция, в отличие от процедуры, обязательно возвращает значение. Правда в PHP функции и процедуры - одно и то же, но не в вашем случае. В PHP функция возвращает значение при помощи команды return. У вас есть функция, но она ничего не возвращает |
Я тебя обожаю! Спасибо, что просятил на счет return`a
Вот только возвращается лишь один результат (а записей в базе две).
function chars_info( $cat1, $arr1, $l2_chars_array ) {
for( $i = 0; $i <= $cat1; $i++ ) {
return
<<<HTML
Много ХТМЛа
HTML;
}
}
Спустя 16 минут, 26 секунд (13.10.2010 - 20:47) arvitaly написал(а):
Цитата |
Вот только возвращается лишь один результат (а записей в базе две). |
return - возвращает значение функции - а значит и выходит из нее. В вашем случае нужно занести в переменную html и ее уже возвратить
_____________
Блог | VK | GitHub | Twitch