Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вывод цикла в шаблон
 
 автор: serjinio   (19.04.2009 в 12:39)   письмо автору
 
 

<?
while ($row mysql_fetch_assoc($res))
{
$list='
<a href="'
.DIR_WEB_ROOT.$row['s_url'].'/'.$row['c_url'].'/'.$row['a_url'] .'.html" >'.$row['a_title'].'</a>
<p align="justify">'
.$row['a_descr'].'... &raquo;</p>
<div class="clear"></div>'
;
$l[]=$list;
}
//print_r($l);
include_once ('templates.php');//подгружаем шаблон


Шаблон в который надо вставить вывод цикла
##templates.php##

<head></head>
<body>

<div class="text">{//здесь вывести данные из цикла} </div>

</body>
</html>

как это лучше сделать ?

  Ответить  
 
 автор: ChieFSS   (19.04.2009 в 13:10)   письмо автору
 
   для: serjinio   (19.04.2009 в 12:39)
 

Я бы сделал так:

<div class="text">
<? while($row mysql_fetch_assoc($res)): ?>
<a href="<?=DIR_WEB_ROOT.$row['s_url'];?>/<?=$row['c_url'];?>/<?=$row['a_url'];?>.html"><?=$row['a_title'];?></a>
<p align="justify"><?=$row['a_descr'];?>... &raquo;</p>
<div class="clear"></div>
<? endwhile; ?>
</div> 

  Ответить  
 
 автор: serjinio   (19.04.2009 в 13:38)   письмо автору
 
   для: ChieFSS   (19.04.2009 в 13:10)
 

Я тоже думал использовать альтернативный синтаксис но у меня получается то что я вызываю этот шаблон во многих скриптах и внутри
<div class="text">{//здесь вывести данные из цикла} </div>
будет совершенно разный вывод разных переменных...
<div class="text">{//вывод $z в скрипте 1.php} </div>
...........
<div class="text">{//вывод $xxx в скрипте 12.php} </div>
...........
<div class="text">{//вывод цикла в скрипте 3.php} </div>

поэтому ищу наиболее гибкое решение с мин кода внутри самого шаблона.

те в шаблон выводить только одну переменную допустим
<div class="text">{$text} </div>
а в разных скриптах ее формировать типа
1.php $text---цикл
2 php $text='title';
xx.php $text= массив

  Ответить  
 
 автор: nikita2206   (19.04.2009 в 13:20)   письмо автору
 
   для: serjinio   (19.04.2009 в 12:39)
 

если надо отделить логику от дизайна то обычно так делают:
<?
$template 
= <<<html
<head></head> 
<body> 

<div class="text">{content} </div> 

</body> 
</html>
html;

while (
$row mysql_fetch_assoc($res)) 

  
$list=
<a href="'
.DIR_WEB_ROOT.$row['s_url'].'/'.$row['c_url'].'/'.$row['a_url'] .'.html" >'.$row['a_title'].'</a> 
<p align="justify">'
.$row['a_descr'].'... &raquo;</p> 
<div class="clear"></div>'

  
$l .= $list
}
echo 
str_replace('{content}'$l$template);

  Ответить  
 
 автор: serjinio   (19.04.2009 в 13:53)   письмо автору
 
   для: nikita2206   (19.04.2009 в 13:20)
 

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

  Ответить  
 
 автор: Лерк   (19.04.2009 в 14:07)   письмо автору
 
   для: nikita2206   (19.04.2009 в 13:20)
 

<a href="'.DIR_WEB_ROOT.$row['s_url'].'/'.$row['c_url'].'/'.$row['a_url'] .'.html" >'.$row['a_title'].'</a>
<p align="justify">'.$row['a_descr'].'... &raquo;</p>
<div class="clear"></div>';

И где ж вы тут отделяете что-то там от дизайна?!

обычно так делают
Вы ошибаетесь.

  Ответить  
 
 автор: serjinio   (19.04.2009 в 14:41)   письмо автору
 
   для: Лерк   (19.04.2009 в 14:07)
 

попробовал сделать таким способом работает..
<?
$l
='';
while (
$row mysql_fetch_assoc($res))
{
$list='
<a href="'
.DIR_WEB_ROOT.$row['s_url'].'/'.$row['c_url'].'/'.$row['a_url'] .'.html" >'.$row['a_title'].'</a>
<p align="justify">'
.$row['a_descr'].'... &raquo;</p>
<div class="clear"></div>'
;
$l.=$list;
}
$template file_get_contents('templates.php');//подгружаем шаблон
echo str_replace('{{content}}'$l$template); 


##templates.php##

<head></head>
<body>

<div class="text"> {{content}} </div>

</body>
</html>


но если в шаблоне есть вставки php кода то они выводятся как текст поэтому использование
file_get_contents неприемлимо ..как еще можно подгрузить шаблон?

  Ответить  
 
 автор: Лерк   (19.04.2009 в 14:52)   письмо автору
 
   для: serjinio   (19.04.2009 в 14:41)
 

Может вам вовсе не нужны шаблоны? Судя по тому, что вы делаете, вы их хотите сделать для вида.

  Ответить  
 
 автор: ddhvvn   (19.04.2009 в 15:16)   письмо автору
 
   для: serjinio   (19.04.2009 в 12:39)
 

По-моему это было бы гораздо элегантней сделано с помощью xslt

  Ответить  
 
 автор: vml   (19.04.2009 в 20:26)   письмо автору
 
   для: serjinio   (19.04.2009 в 12:39)
 

Все очень просто) Я обычно делаю так:

Index.php
<? 

include "header.php";
$res=''
while (
$row mysql_fetch_assoc($res)) 

$list=
<a href="'
.DIR_WEB_ROOT.$row['s_url'].'/'.$row['c_url'].'/'.$row['a_url'] .'.html" >'.$row['a_title'].'</a> 
<p align="justify">'
.$row['a_descr'].'... &raquo;</p> 
<div class="clear"></div>'

$res.=$list

include 
"footer.php";
?>


Файл header.php

<head></head> 
<body> 

<div class="text">


Файл footer.php

<?php
<?=$res?>
?>
</div> 

</body> 
</html>


Если нужно сделать вывод в таблицу, то так:
<? 

include "header.php";

while (
$row mysql_fetch_assoc($res)) { 
$res=''
$res=
<a href="'
.DIR_WEB_ROOT.$row['s_url'].'/'.$row['c_url'].'/'.$row['a_url'] .'.html" >'.$row['a_title'].'</a> 
<p align="justify">'
.$row['a_descr'].'... &raquo;</p> 
<div class="clear"></div>'

include 
"item.php";

include 
"footer.php";
?>


Файл header.php (например):

<table border=1>


Файл item.php:


<tr>
 <td><?=$res?></td></tr>


Файл footer.php


</table>


Ну я вот так обычно делаю.....

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования