[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вопрос по if с разбивкой на <? else ?>
Snake22
такой вопрос.
в пхп есть возможность использовать IF разрывая пхп скобки <?php ?>
то есть
 
<?php
$x=2;

if ($x==1) { ?>
равно 1

<?php } else { ?>
равно 2

<?php } ?>


а можно ли таким способом присвоить переменной тот текст который ВНЕ ПХП скобок?
то есть типа
(данный пример естественно не работает)

if ($x==1) $result={ ?>
1

<?php } else $result={ ?>
2

<?php }
echo "Ответ: ".$result;
?>

.
а то было бы удобно сразу так код формы написать а потом через printf подставить в нужном месте значения.
rooor
$a = '<table>
<tr><td>{ONE}</td></tr>
<tr><td>{TWO}</td></tr>
</table>'
;

$a = str_replace('{ONE}', 'строка №1', $a);
echo str_replace('{TWO}', 'строка №2', $a);
Snake22
rooor это к сожалению не то.
потому что когда исходный код такой странички просматриваешь в браузере то
вся табличка будет написана в одну строчку.приходится везде .PHP_EOL вставлять или в отдельном файле шаблоны хранить.
думаю вот как бы упростить эту задачку,
а то мне довольно таки важно чтоб в сформированной страничке всё выглядело прилично и читаемо/
и с кавычками иногда запариваться приходится
rooor
дык это пример =) что тебе мешает взять файл, в нём всё подставить куда надо и вывести на экран?
$a = file_get_contents('index.tpl');
$a = str_replace('{ONE}', 'строка №1', $a);

echo $a;
Snake22
Цитата (rooor @ 13.04.2013 - 21:15)
дык это пример =) что тебе мешает взять файл, в нём всё подставить куда надо и вывести на экран?
$a = file_get_contents('index.tpl');
$a = str_replace('{ONE}', 'строка №1', $a);

echo $a;

ну ладно,спасибо за ответы.
то есть по первому вопросу нельзя в переменную текст за скобкой присвоить.
буду шаблонами пользоваться.
кстати спасибо за file_get_content, я по незнанию ещё, шаблоны загружал через fopen..fread (и это кстати тоже вызывало неудобство). теперь хоть удобнее будет
Zzepish
a еще есть file_put_contents()
dron4ik
Это не очень правильно получится... ведь контролер по сути не должен знать о виде...

Как по мне, чтобы запихнуть скажем форму, то проще написать метод для генерации формы, а в него передать массив с полями...

_____________
Ex3m.com.ua — Активный образ жизни
GhostSt
Можно запихнуть вывод в переменную при помощи буферизации:


ob_start();

if ($x==1)
}
?>
Вывод 1
<?php
}
else
{
?>
Вывод 2
<?php
}

$result = ob_get_contents();
ob_end_clean();

echo $result;


В данной случает в переменной $result окажется все данные оператора if-esle
sergeiss
Вот так вот?

Содержимое рабочего скрипта:
$table_content=file_get_contents( 'eval_table.php' );

$table_caption='Caption of the table';
$first_text='First cell';
$second_text='Second cell';
eval( '$out = "'.htmlspecialchars($table_content).'"; ' );

$out=htmlspecialchars_decode( $out );
echo $out;


Содержимое файла eval_table.php
<table border="1">
<caption>
$table_caption</caption>
<tr>
<td>
$first_text</td>
<td>
$second_text</td>
</tr>
</table>


А дальше можешь плодить таблицы с разным содержанием, но с одинаковой структурой - если тебе это нужно. При этом саму таблицы (или любой другой вид представления) может разрабатывать дизайнер (которому совершенно филетово, как потом программер будет ее наполнять), а ее наполнение, т.е. содержание переменных, будет уже делать программер (которому также фиолетово, как эта хрень будет выглядеть). И будут они работать независимо друг от друга. И ты можешь не этот файл загрузить, а другой - но если там есть переменные с такими же именами, то ты получишь просто другую визуализацию... Короче говоря, широкое поле деятельности.

PS. То есть, короче говоря, получаем тут очень удобную хрень для MVC. Четко разделяем Вид и Контроллер. И не надо мудрить с буфером вывода.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.