Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
28 / 28 / 4
Регистрация: 12.03.2011
Сообщений: 474
1

Шаблон html

03.08.2013, 00:28. Показов 1171. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Практикуюсь в php, пытаюсь реализовать отделение html от php.
Хочу выводить данные из бд в некотором блоке, допустим
HTML5
1
2
3
4
[content]
<div>Текст</div>
<div>{text}</div>
[/content]
Вот блок внутри тега [content] должен быть выведен столько раз, сколько данных у нас пришло из БД. Своеобразная лента новостей))
Непонятно как реализовать это в php. Допустим подключаю я файл шаблона
PHP
1
$tpl = file_get_contents("main.tpl");
Что дальше? Вырезать html из блока [content] и в цикле наполнять его данными и прикреплять обратно? Или есть какой-то более оптимальный способ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.08.2013, 00:28
Ответы с готовыми решениями:

Eregi_replace и шаблон html
Добрый день. У меня есть форма html form name=&quot;register&quot; method=&quot;post&quot;...

Подстановка данных в html шаблон
Добрый час и с новым годом ! суть моего вопроса: есть форма для подачи заявки, которую заполняет...

Данные из форм HTML страницы в шаблон word
Сильно не пинайте, может даже был этот вопрос, но.... Хотелка такая: имеется html страница с...

Проблема открытия CGI файла через HTML шаблон
Здравствуйте,только начал изучать html и столкнулся с проблемой: не получается открыть cgi файл...

12
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
03.08.2013, 01:28 2
Используй file().
И в цикле foreach выводи.
0
28 / 28 / 4
Регистрация: 12.03.2011
Сообщений: 474
03.08.2013, 11:38  [ТС] 3
Dealiss, а можно подробнее? file() возвращает файл в виде массива и что дальше с ним делать?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
03.08.2013, 11:44 4
PHP
1
2
3
4
5
$tpl = file_get_contents("main.tpl");
while(...)
{
    echo strtr( $str, array('{foo}'=>'foo', '{bar}'=>'bar', ......) );
}
1
28 / 28 / 4
Регистрация: 12.03.2011
Сообщений: 474
03.08.2013, 12:29  [ТС] 5
KOPOJI, Dealiss, вы возможно не поняли сути вопроса, как заменить операторы типа {text} я и так знаю. Мне нужно выводить информацию из БД в блоке [content]. То есть если у меня из БД пришло 3 записи, то результирующий HTML должен быть таким
HTML5
1
2
3
4
5
6
<div>Текст</div>
<div>Запись1</div>
<div>Текст</div>
<div>Запись 2</div>
<div>Текст</div>
<div>Запись 3</div>
0
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
03.08.2013, 12:52 6
PHP
1
2
3
4
5
6
7
8
$query = mysql_query("...");
$tbl = mysql_fetch_array($query);
 
$tpl = file_get_contents("main.tpl");
while($tbl = mysql_fetch_array($query))
{
    echo strtr( $str, array('{foo}'=>'foo', '{bar}'=>'bar', ......) );
}
1
28 / 28 / 4
Регистрация: 12.03.2011
Сообщений: 474
03.08.2013, 13:19  [ТС] 7
Rodion2703, исходный шаблон имеет такой вид
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Title</title>
        <link rel="stylesheet" href="template/style.css" type="text/css">
    </head>
    <body>
        <div id="centerLayer">
            [content]
            <div class ="left">Версия:</div>
            <div class ="right"><b>{version}</b></div>
            <div class ="left">Дата релиза:</div>
            <div class ="right">{date}</div>
            [/content]
        </div>
        <div id="footer">Footer</div>
    </body>
</html>
В вашем случае весь шаблон он будет повторяться многократно, а нужно чтобы повторялся только фрагмент внутри [content]
0
24 / 20 / 5
Регистрация: 06.01.2013
Сообщений: 819
03.08.2013, 13:24 8
Всё понял!! Сейчас допишу!

Добавлено через 3 минуты
PHP документ
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
$query = mysql_query("...");
$tbl = mysql_fetch_array($query);
 
while($tbl = mysql_fetch_array($query))
{
    $content = '
            <div class ="left">Версия:</div>
            <div class ="right"><b>{version}</b></div>
            <div class ="left">Дата релиза:</div>
            <div class ="right">{date}</div>';
}
 
eval("main.tpl");
main.tpl
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Title</title>
        <link rel="stylesheet" href="template/style.css" type="text/css">
    </head>
    <body>
        <div id="centerLayer">
            [content]
                $content
            [/content]
        </div>
        <div id="footer">Footer</div>
    </body>
</html>
1
28 / 28 / 4
Регистрация: 12.03.2011
Сообщений: 474
03.08.2013, 13:49  [ТС] 9
Rodion2703, так я тоже могу) Вся фишка в том, чтобы вот это форматирование
HTML5
1
2
3
4
<div class ="left">Версия:</div>
            <div class ="right"><b>{version}</b></div>
            <div class ="left">Дата релиза:</div>
            <div class ="right">{date}</div>';
оставалось в файле шаблона, для этого я и ввел тег [content]
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
03.08.2013, 14:09 10
ну можно и поизгаляться, например, так..
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$str = '<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Title</title>
        <link rel="stylesheet" href="template/style.css" type="text/css">
    </head>
    <body>
        <div id="centerLayer">
            [content]
            <div class ="left">Версия:</div>
            <div class ="right"><b>{version}</b></div>
            <div class ="left">Дата релиза:</div>
            <div class ="right">{date}</div>
            [/content]
        </div>
        <div id="footer">Footer</div>
    </body>
</html>';
 
if(preg_match('~\[content\](.*?)\[/content\]~is', $str, $match))
{
    echo preg_replace(
        '~\[content\].*?\[/content\]~is',
        strtr($match[1], array('{version}'=>PHP_VERSION, '{date}'=>date('Y.m.d H:i:s'))),
        $str
    );
}
1
28 / 28 / 4
Регистрация: 12.03.2011
Сообщений: 474
03.08.2013, 14:35  [ТС] 11
KOPOJI, работает, но опять же, повторяется весь код шаблона, получается так
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Title</title>
        <link rel="stylesheet" href="template/style.css" type="text/css">
    </head>
    <body>
        <div id="centerLayer">
            <div class ="left">Версия:</div>
            <div class ="right"><b>1.1</b></div>
            <div class ="left">Дата релиза:</div>
            <div class ="right">2013-07-31 11:05:50</div>
        </div>
        <div id="footer">Footer</div>
    </body>
</html><!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Title</title>
        <link rel="stylesheet" href="template/style.css" type="text/css">
    </head>
    <body>
        <div id="centerLayer">
            <div class ="left">Версия:</div>
            <div class ="right"><b>1.2</b></div>
            <div class ="left">Дата релиза:</div>
            <div class ="right">2013-08-01 23:11:50</div>
        </div>
        <div id="footer">Footer</div>
    </body>
</html>
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
03.08.2013, 14:41 12
ну я думал один раз надо заменить.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$str = '<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Title</title>
        <link rel="stylesheet" href="template/style.css" type="text/css">
    </head>
    <body>
        <div id="centerLayer">
            [content]
            <div class ="left">Версия:</div>
            <div class ="right"><b>{version}</b></div>
            <div class ="left">Дата релиза:</div>
            <div class ="right">{date}</div>
            [/content]
        </div>
        <div id="footer">Footer</div>
    </body>
</html>';
 
$tmp = array();
 
if(preg_match('~\[content\](.*?)\[/content\]~is', $str, $match))
    while(....)
        $tmp[] = strtr( $match[1], array( '{version}'=>PHP_VERSION, '{date}'=>date('Y.m.d H:i:s') ) );
 
echo preg_replace(
        '~\[content\].*?\[/content\]~is',
        join('', $tmp),
        $str
    );
1
28 / 28 / 4
Регистрация: 12.03.2011
Сообщений: 474
03.08.2013, 14:51  [ТС] 13
KOPOJI, именно! То что нужно! Премного благодарен))
0
03.08.2013, 14:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.08.2013, 14:51
Помогаю со студенческими работами здесь

Html шаблон, сделать функциональным
Всем привет! Приобретён HTML шаблон. Вопрос заключается в том, как данный шаблон сделать...

Вставить HTML текст в шаблон, как HTML тэги
Всем привет! Я работаю в Angular 1.4 и у меня есть задача: Получить HTML из $http.get(url) и...

Создать HTML UL, используя шаблон для каждого HTML LI
Нужно написать функцию, которая создает HTML UL, используя шаблон для каждого HTML LI. Источник...

html шаблон
Помогите! Где прописаны в этом шаблоне названия пунктов меню(contact, about us и т. д.) и их адрес....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru