|
|
|
| Здравствуйте.
подскажите по поводу этого шаблонизатора Smarty.
Не могу понять как добавить к нему PHP код.
Сам вид данного шаблона:
{* Smarty *}
{include file="xhtml_header.tpl"}
<div class="logo"><img src="img/logo.jpg" /></div>
<b>Текст</b><br/>
<b>Текст</b><br/>
<b>Текст</b><br/>
{include file="xhtml_footer.tpl"}
|
а вот PHP-код, который необходимо добавить:
<?
$sql = mysql_query("SELECT * FROM table ORDER BY id DESC LIMIT 3");
$row = mysql_fetch_array($sql);
echo '<marquee behavior="scroll" direction="left" bgcolor="#93d5f9" width="100%" height="40" scrolldelay="100" loop="infinite">';
do
{
$text = $row['text'];
echo $text.' <b>|</b> ';
}
while($row = mysql_fetch_array($sql));
echo '</marquee>';
?>
|
Сделать надо после изображения в шаблоне | |
|
|
|
|
|
|
|
для: Minus
(28.04.2009 в 01:42)
| | Если уж шаблоны, то echo '<marquee behavior="scroll"...., echo $text.' <b>|</b> ' - выбросить, не должно быть этого, все это как раз и помещайте в шаблон. mysql_fetch_array - забыть, и использовать mysql_fetch_assoc.
Странно, результат запроса это одна запись или несколько? Если одна, можно понять $row = mysql_fetch_array($sql);, но тогда зачем далее цикл? Если несколько, то что вы получите первой строкой?
А вообще же, нужно в цикле получить массив, например:
<?
$array = array();
while($row = mysql_fetch_assoc($sql)) $array[] = $row ;
//передать этот массив в шаблон
$smarty->assign("array", $array);
|
И уже в шаблоне в нужном месте разложить этот массив, в Смарти для этого есть необходимые инструменты. | |
|
|
|
|
|
|
|
для: sim5
(28.04.2009 в 05:51)
| | Спасибо. Немного стал понимать в этой системе шалонизаторов.
В первой строке запрос на выборку трех последних записей в таблице table.
Можете подробней объяснить почему надо использовать именно mysql_fetch_assoc? | |
|
|
|
|
|
|
|
для: Minus
(28.04.2009 в 07:33)
| | Понял, это я невнимательно просмотрел насчет цикла. Почему не надо использовать mysql_fetch_assoc - потому, что он вам возвращает два идентичных набора массивов, с разницей только в том, что один из них индексный, а другой ассоциативный. Вы работаете со вторым, так зачем вам лишнее? Пользуйтесь той функцией, которую я вам указал. Нужен будет индексный - mysql_fetch_row. | |
|
|
|
|
|
|
|
для: sim5
(28.04.2009 в 09:56)
| | Ясно.
спасибо!
пока вопросов нету. | |
|
|
|
|
автор: Temy (22.09.2009 в 10:44) |
|
|
для: sim5
(28.04.2009 в 05:51)
| | Не понятно, для чего писать: $array = array(); и $array[] = $row
если у нас $row уже является массивом.
mysql_fetch_assoc возращает результат ввиде массива, ключ является именем атрибута. | |
|
|
|
|
|
|
|
для: Temy
(22.09.2009 в 10:44)
| | в общем случае while может и не выполнится. Чтобы не иметь предупреждений, и вообще это дурная практика, работать с неинициализированными переменными | |
|
|
|
|
|
|
|
для: Temy
(22.09.2009 в 10:44)
| | Если внимательно посмотреть на код (даже не зная, что возвращает функция mysql_fetch_assoc()), можно понять, зачем это нужно. Ведь элементом массива $array будет являться массив $row )) | |
|
|
|