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
Форумы портала PHP.SU :: Версия для печати :: Как сделать шаблон (файл *.tpl)?
Форумы портала PHP.SU » PHP » Программирование на PHP » Как сделать шаблон (файл *.tpl)?

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

1. Vadim11 - 27 Января, 2010 - 14:08:03 - перейти к сообщению
Здравствуйте! У меня есть страница, написанная на 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 - кода?
2. JustUserR - 27 Января, 2010 - 14:13:30 - перейти к сообщению
Vadim11 пишет:
Как создать шаблон (файл name.tpl) для перемещения в него HTML - кода?
В общих словах вы создаете файл шаблона с соответствующими подстановками для переменных (И возможно простых условий и циклов) после чего обрабатываете данный код Можно конечно обрабатывать с помощью регулярных выражений или других средств разбора кода - но самый простой вариант это делать шаблон PHP-кодом и include-ить его в нужном месте
3. Vadim11 - 27 Января, 2010 - 14:28:50 - перейти к сообщению
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\">
..........................
4. SDR - 27 Января, 2010 - 14:32:04 - перейти к сообщению
что именно мы понимаем под абстрактным понятием *.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.  



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

но холивар начинать не буду. что юзать - решать тебе.
5. Vadim11 - 27 Января, 2010 - 16:18:52 - перейти к сообщению
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.  



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

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


Спасибо, попробую воспользоваться советом...
6. SDR - 27 Января, 2010 - 16:30:53 - перейти к сообщению
Твой пример я бы перелопатил следующим образом (самый примитивный пример):

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.  


Разделять логику и представление крайне приветствуется. причин много, со временем сам поймёшь. Да, и в шаблоне (главном шаблоне, по крайней мере) - должена желательно содержаться вся страница целиком, а не её кусок.
7. Vadim11 - 28 Января, 2010 - 08:48:57 - перейти к сообщению
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"?
8. Мелкий - 28 Января, 2010 - 15:44:42 - перейти к сообщению
Vadim11 пишет:
1).Каким образом таблица будет отображаться (здесь нет операторов типа echo, print)?

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

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

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

 

Powered by ExBB FM 1.0 RC1