Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как сделать шаблон (файл *.tpl)?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Выделение HTML-кода из PHP
Vadim11
Отправлено: 27 Января, 2010 - 14:08:03
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Здравствуйте! У меня есть страница, написанная на PHP:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // Подключение к серверу.
  3. $conn = mysql_connect("localhost", "root", "") or die(mysql_error());
  4. // .................
  5. echo "<TABLE border = 4 width = 80%>";
  6. echo "<a name=\"Add\"></a>";
  7. // ............................................................
  8. while($row = mysql_fetch_array($r, MYSQL_ASSOC))
  9. {    ++$i;
  10.     echo "<TR>";
  11.     echo "<TD>$row[Name]</TD>";
  12.     echo "<TD>$row[Kol]</TD>";
  13.     echo "<TD>$row[Kor]</TD>";
  14.     echo "<TD>
  15.    <form name=\"web\" method=\"post\" action=\"#Add\">
  16.    <input type=text name=\"korz\" width=6 value=\"0\">
  17.    <input type=\"hidden\" name=\"num\" value=$row[Num]>
  18.    <input type=\"hidden\" name=\"kol\" value=$row[Kol]>
  19.    <input type=\"hidden\" name=\"oldkorz\" value=$row[Kor]>
  20.    <input type=submit name=\"A1\" value=\"Добавить\">
  21.    </form>
  22.    </TD>";
  23.     echo "</TR>";
  24. }
  25. //...............................................................
  26. echo "</TABLE>";
  27. // Закрываем соединение.
  28. mysql_close($conn);
  29. ?>

Как создать шаблон (файл name.tpl) для перемещения в него HTML - кода?


Отредактировано модератором: JustUserR, 27 Января, 2010 - 14:10:53
Обрамил PHP-код в соответствующий тег
 
 Top
JustUserR
Отправлено: 27 Января, 2010 - 14:13:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Vadim11 пишет:
Как создать шаблон (файл name.tpl) для перемещения в него HTML - кода?
В общих словах вы создаете файл шаблона с соответствующими подстановками для переменных (И возможно простых условий и циклов) после чего обрабатываете данный код Можно конечно обрабатывать с помощью регулярных выражений или других средств разбора кода - но самый простой вариант это делать шаблон PHP-кодом и include-ить его в нужном месте


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Vadim11
Отправлено: 27 Января, 2010 - 14:28:50
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




JustUserR пишет:
Vadim11 пишет:
Как создать шаблон (файл name.tpl) для перемещения в него HTML - кода?
В общих словах вы создаете файл шаблона с соответствующими подстановками для переменных (И возможно простых условий и циклов) после чего обрабатываете данный код Можно конечно обрабатывать с помощью регулярных выражений или других средств разбора кода - но самый простой вариант это делать шаблон PHP-кодом и include-ить его в нужном месте


А как быть со строками HTML, не содержащими переменных и со ссылками?
................................ ................................ .
echo "<TABLE border = 4 width = 80%>";

echo "<a name=\"Add\"></a>";

..........................
<form name=\"web\" method=\"post\" action=\"#Add\">
<input type=text name=\"korz\" width=6 value=\"0\">
..........................
 
 Top
SDR
Отправлено: 27 Января, 2010 - 14:32:04
Post Id


Гость


Покинул форум
Сообщений всего: 72
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




что именно мы понимаем под абстрактным понятием *.tpl?

вообще JustUserR правильно написал. попробую более развёрнуто пояснить, какие бывают шаблоны:

1. бывают шаблонизаторы, это когда создаётся псевдоязык, который парсится php и подставляется что/где надо

пример на smarty:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <table>
  3. {foreach from=$data item=arr}
  4. <tr><td><a href="./?id={$arr.id}">{$arr.text}</a></td></tr>
  5. {/foreach}
  6. </table>
  7.  



2. бывают шаблоны сделаные на html/php без сторонних средств

пример:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <table>
  3. <? foreach($data as $arr) { ?>
  4. <tr><td><a href="./?id=<?=$arr['id']?>"><?=$arr['name']?></a></td></tr>
  5. <? } ?>
  6. </table>
  7.  



я за второй способ, у меня есть множество аргументов
за первый способ тоже кое какие аргументы народ приводит

но холивар начинать не буду. что юзать - решать тебе.
 
 Top
Vadim11
Отправлено: 27 Января, 2010 - 16:18:52
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




JustUserR пишет:
Vadim11 пишет:
Как создать шаблон (файл name.tpl) для перемещения в него HTML - кода?
В общих словах вы создаете файл шаблона с соответствующими подстановками для переменных (И возможно простых условий и циклов) после чего обрабатываете данный код Можно конечно обрабатывать с помощью регулярных выражений или других средств разбора кода - но самый простой вариант это делать шаблон PHP-кодом и include-ить его в нужном месте

Спасибо, попробую воспользоваться советом...
(Добавление)
SDR пишет:
что именно мы понимаем под абстрактным понятием *.tpl?

вообще JustUserR правильно написал. попробую более развёрнуто пояснить, какие бывают шаблоны:

1. бывают шаблонизаторы, это когда создаётся псевдоязык, который парсится php и подставляется что/где надо

пример на smarty:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <table>
  3. {foreach from=$data item=arr}
  4. <tr><td><a href="./?id={$arr.id}">{$arr.text}</a></td></tr>
  5. {/foreach}
  6. </table>
  7.  



2. бывают шаблоны сделаные на html/php без сторонних средств

пример:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <table>
  3. <? foreach($data as $arr) { ?>
  4. <tr><td><a href="./?id=<?=$arr['id']?>"><?=$arr['name']?></a></td></tr>
  5. <? } ?>
  6. </table>
  7.  



я за второй способ, у меня есть множество аргументов
за первый способ тоже кое какие аргументы народ приводит

но холивар начинать не буду. что юзать - решать тебе.


Спасибо, попробую воспользоваться советом...
 
 Top
SDR
Отправлено: 27 Января, 2010 - 16:30:53
Post Id


Гость


Покинул форум
Сообщений всего: 72
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Твой пример я бы перелопатил следующим образом (самый примитивный пример):

index.php
PHP:
скопировать код в буфер обмена
  1.  
  2. // Подключение к серверу.
  3. $conn = mysql_connect("localhost", "root", "") or die(mysql_error());
  4.  
  5. while($row = mysql_fetch_array($r, MYSQL_ASSOC))
  6. {
  7.      $Template['data'][] = $row;
  8. }
  9.  
  10. // Закрываем соединение.
  11. mysql_close($conn);
  12.  
  13. // Подключаем шаблон
  14. include('template.phtml');
  15.  



template.phtml
PHP:
скопировать код в буфер обмена
  1.  
  2. <? foreach($Template['data'] as $row) { ?>
  3.  
  4. <TR>
  5. <TD><?=$row['Name']?></TD>
  6. <TD><?=$row['Kol']?></TD>
  7. <TD><?=$row['Kor']?></TD>
  8. <TD>
  9. <form name="web" method="post" action="#Add">
  10. <input type=text name="korz" width=6 value="0">
  11. <input type="hidden" name="num" value="<?=$row['Num']?>">
  12. <input type="hidden" name="kol" value="<?=$row['Kol']?>">
  13. <input type="hidden" name="oldkorz" value="<?=$row['Kor']?>">
  14. <input type=submit name="A1" value="Добавить">
  15. </form>
  16. </TD>
  17. </TR>
  18. </TABLE>
  19.  
  20. <? } ?>
  21.  


Разделять логику и представление крайне приветствуется. причин много, со временем сам поймёшь. Да, и в шаблоне (главном шаблоне, по крайней мере) - должена желательно содержаться вся страница целиком, а не её кусок.

(Отредактировано автором: 27 Января, 2010 - 16:32:10)

 
 Top
Vadim11
Отправлено: 28 Января, 2010 - 08:48:57
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




SDR пишет:
Твой пример я бы перелопатил следующим образом (самый примитивный пример):

index.php
PHP:
скопировать код в буфер обмена
  1.  
  2. // Подключение к серверу.
  3. $conn = mysql_connect("localhost", "root", "") or die(mysql_error());
  4.  
  5. while($row = mysql_fetch_array($r, MYSQL_ASSOC))
  6. {
  7.      $Template['data'][] = $row;
  8. }
  9.  
  10. // Закрываем соединение.
  11. mysql_close($conn);
  12.  
  13. // Подключаем шаблон
  14. include('template.phtml');
  15.  



template.phtml
PHP:
скопировать код в буфер обмена
  1.  
  2. <? foreach($Template['data'] as $row) { ?>
  3.  
  4. <TR>
  5. <TD><?=$row['Name']?></TD>
  6. <TD><?=$row['Kol']?></TD>
  7. <TD><?=$row['Kor']?></TD>
  8. <TD>
  9. <form name="web" method="post" action="#Add">
  10. <input type=text name="korz" width=6 value="0">
  11. <input type="hidden" name="num" value="<?=$row['Num']?>">
  12. <input type="hidden" name="kol" value="<?=$row['Kol']?>">
  13. <input type="hidden" name="oldkorz" value="<?=$row['Kor']?>">
  14. <input type=submit name="A1" value="Добавить">
  15. </form>
  16. </TD>
  17. </TR>
  18. </TABLE>
  19.  
  20. <? } ?>
  21.  


Разделять логику и представление крайне приветствуется. причин много, со временем сам поймёшь. Да, и в шаблоне (главном шаблоне, по крайней мере) - должена желательно содержаться вся страница целиком, а не её кусок.


Спасибо! Идею, в целом, понял, но есть два вопроса:
1).Каким образом таблица будет отображаться (здесь нет операторов типа echo, print)?
2).Как обработать строки, не содержащие PHP - переменных
echo "<TABLE border = 4 width = 80%>";

echo "<a name=\"Add\"></a>";
чтобы работал переход на "Add"?
 
 Top
Мелкий Супермодератор
Отправлено: 28 Января, 2010 - 15:44:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Vadim11 пишет:
1).Каким образом таблица будет отображаться (здесь нет операторов типа echo, print)?

Все данные, размещённые между ?> и <? (<?php) интерпретатор считает за echo

Vadim11 пишет:
2).Как обработать строки, не содержащие PHP - переменных

Вставлять туда нужные переменные кодом <?php=$переменная?>
Или я не понял вопрос Закатив глазки


-----
PostgreSQL DBA
 
 Top
JustUserR
Отправлено: 28 Января, 2010 - 17:22:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Vadim11 пишет:
1).Каким образом таблица будет отображаться (здесь нет операторов типа echo, print)?
2).Как обработать строки, не содержащие PHP - переменных
Все такие строки помещаются просто между ?> и <?php и считаются за одно большое echo
После написания шаблона вы просто include-ить его в нужном месте (Важно использовать именно include а не require) и еще не забыть сделат переменные global а то к ним может не быт доступа (Ведь include это отдельный блок кода со своей областью видимости Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB