|
|
|
| есть таблица с колонками "картинка" "описание" "id" в ней 7 записей
как используя смарти получить все записи из колонки "картинка"?
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
делаю так:
<?
$sql=mysql_query("select * from models");
$data=mysql_fetch_array($sql);
$smarty->assign('tt',$data); //$data['img']
$smarty->display('models.tpl');
?>
|
в шаблоне
{section name=items loop=$tt}
{$tt.img}
{/section}
|
выводит 8 раз значение первой колонки!!! | |
|
|
|
|
|
|
|
для: mindless
(15.03.2007 в 03:20)
| | А почему в секции Смарти вы не указывате ее индекс? И что означает {.img}? У вас должно быть типа такой записи: {$tt[items]} | |
|
|
|
|
|
|
|
для: sim5
(15.03.2007 в 07:14)
| | типа такой записи {$tt[items]} выводит только последнее значение из колонки
-----------
покажите плиз на примере как надо!
что означает {.img}?
это имя колонки в БД
img - выводит 8 раз имя первого файла
id например 8 раз id первой колонки ...etc | |
|
|
|
|
|
|
|
для: mindless
(15.03.2007 в 07:57)
| | Ну вы же не имя колонки в БД передавть должны на страницу. Я не знаю что у вас в БД, но допустим у вас там у казано имя файла картики, а другой ячейке, значение атрибута title.
Вы передали этот массив в Смарти под именем $tt.
Дальше в Смарти выводим (опускаем для простоты ячейки вашей таблицы), при этом, если у вас картинки находятся в папке folderimg, выводим:
{section name=i loop=$tt}
<img src=./folderimg/{$tt[i][0]} title="{$tt[i][1]}">
{/section}
Вам же надо указывать индекс массива, как вы это и в циклах делаете, иначе как вы получите то, чего хотите.
Прикрепляю мануал по section. | |
|
|
|
|
|
|
|
для: sim5
(15.03.2007 в 09:51)
| | спасибо за мануал... но к сожелению это тот же кусок из хелпа со смарти.нет.. там показана раота самого смарти по выборке данных из уже переданого массива и ничего о передаче этого же массива.. вот тут http://doc.hive.kiev.ua/smarty/language.function.section.html] например даже приводится php код демонструющий что имено и как передали в секцию.. эти примеры ясны и работает на 100 %... у меня же что-то не выходит так как надо :)
----------------------------------------------------------------------------------------------------------------------
давайте еще раз с начала
- выбрали все данные из БД
$sql=mysql_query("select * from models");
- поместили их в именновано/нумерованный массив
$data=mysql_fetch_array($sql);
- передаем весь массив в переменую $tt для смарти
$smarty->assign('tt',$data);
|
дальше в шаблоне
- начало секции с производным именем с обращением к переменной $tt в которой массив
{section name=ext loop=$tt}
- тут вы пишите про индексы
- как по мне недолжно быть разницы меж записью
- массив[номер эллемента] и массив[имя эллемента] тоесть
-$tt[i][0]=$tt[i][img] - или что то типа того.....
- вот здесь у меня проблема я незнаю как правельно обратится к переменной
- если смотреть хелп то надо вроде как $tt[ext]
но оно выдает первую строку всех колонок а не конкретную колонку !:(]
$tt[ext][0] - вот это дает воопще символы отдельно!
{/section}
|
покажите пример ! | |
|
|
|
|
|
|
|
для: mindless
(15.03.2007 в 11:50)
| | А вы проверяли - что у вас вообще передается в Смарти? Вы вообще уверены что передали туда массив? | |
|
|
|
|
|
|
|
для: mindless
(15.03.2007 в 03:20)
| | >выводит 8 раз значение первой колонки!!!
разумеется. Других-то вы ему не передаете... смарти ждет на входе двумерный массив, а вы ему передаете одномерный.
И синтаксис у смарти другой:
{section name=items loop=$tt}
{$tt[items].img}
{/section}
|
| |
|
|
|
|
|
|
|
для: Loki
(15.03.2007 в 14:15)
| | и так не то выдает :((( | |
|
|
|
|
|
|
|
для: mindless
(16.03.2007 в 01:10)
| | Дважды пытался открыть вашу ссылку - не открывается, ну и бог сней. Я вобще не понимаю, как это вы, вместо значений колонки таблицы, можете передать ее имя, и просто уже по этому имени - получить значения. Ну и бог с ним, можете - значит можете. Чего вы голову морочите. Вот пример:
//php
$primer = array('img1','img2','img3','img4','img5','img6','img7','img8');
$smarty->assign("images", $primer);
//tpl
{section name=i loop=$images}
{$images[i]}<br>
{/section}
|
запустите его, и вы получите список всех 8 значений массива. Если вы передали в смарти значения под именем $tt, то под этим именем вы и можете обратиться к этим значениям, не важно что это у вас - массив или просто строка. А прикрепленного мануала вполне достаточно, чтобы понять как работает section. Можно передать значения и по другому, но так как это делаете вы, то обратиться можно так как я написал, НО может я и не прав. | |
|
|
|
|
|
|
|
для: sim5
(16.03.2007 в 11:32)
| | http://doc.hive.kiev.ua/smarty/language.function.section.html
ненужны мне примеры с мануалов - простые прммеры они всенгда работают
почему тут $data=mysql_fetch_array($sql);
не нужен while?
кто нить может дать работающий свой пример работы с БД а не только обрезаные примеры из хелпа | |
|
|
|
|
|
|
|
для: mindless
(16.03.2007 в 12:39)
| | Посмотрел, и что? А что вас не устраивает? Или у вас массив содержит данные, которые таким "некрасивым" способ никак не выведешь? Вы внимательно прочитайте то, что написано в вашей ссылке... | |
|
|
|
|
|
|
|
для: sim5
(16.03.2007 в 13:06)
| | а вы сами то пробывали что мне пишете?
или так тяжело восоздать мой пример и посмотреть что выходит а?
index.php
$query = "SELECT * FROM test";
$result = mysql_query($query);
$data=mysql_fetch_array($result);
$smarty->assign('gg',$data);
$smarty->display('tt.tpl');
|
tt.tpl
{section name=h loop=$gg}
{$gg[h]}
{/section}
|
дамп
--
-- Структура таблицы `test`
--
CREATE TABLE `test` (
`text` text NOT NULL,
`id` int(11) NOT NULL auto_increment,
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;
--
-- Дамп данных таблицы `test`
--
INSERT INTO `test` (`text`, `id`) VALUES
('aaa', 1),
('bbb', 2),
('ccc', 3),
('ddd', 4);
|
| |
|
|
|
|
 562 байт |
|
|
для: mindless
(16.03.2007 в 14:56)
| | >а вы сами то пробывали что мне пишете?
А вы думаете я вам анекдот рассказываю?
Повторяю пример (уже с таблицей) и прикрепляю рисунок результата его выполнения:
//php
$primer = array('img1','img2','img3','img4','img5','img6','img7','img8');
$smarty->assign("images", $primer);
//tpl
<table bgcolor="#000000" cellpadding="4" cellspacing="1">
<tr bgcolor="#ffffff">
{section name=i loop=$images}
<td>{$images[i]}</td>
{/section}
</tr>
</table>
|
| |
|
|
|
|
|
|
|
для: sim5
(16.03.2007 в 16:01)
| | меня не интересует это
$primer = array('img1','img2','img3','img4','img5','img6','img7','img8');
$smarty->assign("images", $primer);
это работает как пить дать!
массив четкий
все правельно..
вы попробуйте с данными из БД мой пример! | |
|
|
|
|
|
|
|
для: mindless
(16.03.2007 в 17:05)
| | Вы в своем примере, прежде чем передать это в Смарти, проверьте, что вы туда передаете. Сомнительно что вы туда передаете массив... Посмотрите внимательно... | |
|
|
|
|
|
|
|
для: sim5
(16.03.2007 в 17:19)
| | товарищь
а как вы думаете зачем я код привел?
чтоб можно было оценить все ли верно!
while($data[]=mysql_fetch_array($result))
{$smarty->assign('gg',$data);
{section name=h loop=$gg}
{$gg[h].text}
{/section}
вот так работает | |
|
|
|
|
|
|
|
для: mindless
(16.03.2007 в 19:04)
| | От товарищьча товарищьчу. Вы в своем первом посте, привели все свои "действия". Я вас и спрашивал... Вы в нем неверно обращаетесь к таблице для получения всех записей в массив. Там нет массива переданного в Смарти, а обращение к элеметам массива (которого нет) "разворачиваемого" в шаблоне, вы производили не правильно... Вы спрашивали о section - я вам ответил... Ну если не нравиться как - извиняйте. | |
|
|
|