06.06.2020, 09:00 [+3 UTC]
в нашей команде: 4 599 чел. | участники онлайн: 2 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.89 (25.04.2020)
JS-v.1.45 | CSS-v.3.39

Общие новости:
13.04.2020, 00:02

Форум:
05.06.2020, 04:11

Последний вопрос:
06.06.2020, 08:50
Всего: 152581

Последний ответ:
05.06.2020, 16:55
Всего: 260249

Последняя рассылка:
06.06.2020, 04:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
08.02.2019, 13:25 »
dar777
Это самое лучшее решение! [вопрос № 194594, ответ № 277408]
05.01.2019, 13:00 »
Степанов Иван /REDDS
Все подробно разъяснил и показал. [вопрос № 194330, ответ № 277227]

РАЗДЕЛ • PHP / Perl / Python

Создание программ на языках PHP, Perl и Python.

[администратор рассылки: Коцюрбенко Алексей Владимирович (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Старший модератор
Рейтинг: 1564
Хватов Сергей
Статус: Академик
Рейтинг: 36
SAW
Статус: 10-й класс
Рейтинг: 22

Перейти к консультации №:
 

Консультация онлайн # 145999
Раздел: • PHP / Perl / Python
Автор вопроса: Vadman
Отправлена: 04.10.2008, 18:38
Поступило ответов: 0

Добрый вечер уважаемые эксперты.

Вопрос на тему Smarty. Я пытаюсь сделать страницу на которой будут отображены фото в табличке 3x4 (3 толбца на 4 строки). Ссылки на эти фото хранятся в бд. Не могу понять, с чего начать.

файл gallary.php

require_once ('smarty2_6_20/libs/Smarty.class.php');
$smarty = new Smarty;
....
 $page=0;
 $photonumber=12;
     $db->sql_query("SELECT * FROM `gallary` order by `id` DESC LIMIT $page, $photonumber");
     $rows=array();
     while ($row=$db->sql_fetchassoc())
     $rows[]=$row;
     $smarty->assign('new', $rows);
....
$smarty -> display('gallary.tpl');  



Файл gallary.tpl (Понимаю, что не правильно организовано)

<table>
<tr>
 {foreach key=key item=item from=$new}
  <td><img src="{$item.small}"></img></td>
 {/foreach}
</tr>
</table>

При таком шаблоне, под каждую фотку создаётся свой столбец. А нужно чтобы, чтобы по 3 фотки в 1й строке отображалось. Первая строка заполнилась -> переходим на вторую и т.д. Как-то переключатель надо сделать, но как. Пожалуйста помогите :)

Состояние: Консультация закрыта

Oтветов пока не поступило.

Мини-форум консультации № 145999
C4tnt

# 1

= общий = | 04.10.2008, 19:18

К сожалению я точно не знаю, что умеет smarty в шаблонах, но если в этих шаблонах есть IF, ваша проблема решается довольно просто:

Подправим цикл:

$id = 0;
while ($row=$db->sql_fetchassoc())
{
$row['ID'] = $id;
$rows[]=$row;
$id=$id+1;
}

Теперь у вас в строчках есть поле ID с номером строки. (Если у вас ID уже занят - выбирайте другое название)
В шаблоне примерно так:

<table>
<tr>
{foreach key=key item=item from=$new}
<td><img src="{$item.small}"></img></td>
{if $item.ID кратно трём}</tr><tr>{endif}
{/foreach}
</tr>
</table>

неизвестный

# 2

= общий = | 04.10.2008, 21:56

Спасибо за помощь,

На страничке всё выстраивается в ряд...

html код генерируется следующий:


<table>
  <tr>
    <td><img src="images/gallary/small/30.jpg"></img></td>
    <td><img src="images/gallary/small/19.jpg"></img></td>
    <td><img src="images/gallary/small/5.jpg"></img></td>
    <td><img src="images/gallary/small/1.jpg"></img></td>
  </tr><tr></tr>
</table>



что ж делать то...

неизвестный

# 3

= общий = | 04.10.2008, 21:59

Владимир, спасибо Вам ещё раз, я поставил в условии не кратное 3м, а кратное 2м и всё отлично стало работать!

C4tnt

# 4

= общий = | 04.10.2008, 22:02

Лучше поставьте $id = 1, тогда иды будут начинаться не с 0, а с 1. Это я слегка ошибся

неизвестный

# 5

= общий = | 04.10.2008, 22:08

Ага, уже сделал smile красота...

неизвестный

# 6

= общий = | 04.10.2008, 22:19

Рано радуюсь....

Начал добавлять в бд ссылки на изображения, получил следующую картину:


<table>
 <tr>
  <td><img src="images/gallary/small/63.jpg"></img></td>
  <td><img src="images/gallary/small/56.jpg"></img></td> 
  <td><img src="images/gallary/small/33.jpg"></img></td>
 </tr>
 <tr>
  <td><img src="images/gallary/small/40.jpg"></img></td>
  <td><img src="images/gallary/small/46.jpg"></img></td>
  <td><img src="images/gallary/small/47.jpg"></img></td>
  <td><img src="images/gallary/small/30.jpg"></img></td>
  <td><img src="images/gallary/small/19.jpg"></img></td>
  <td><img src="images/gallary/small/5.jpg"></img></td>
  <td><img src="images/gallary/small/1.jpg"></img></td>
 </tr>
</table>



досадно :(

неизвестный

# 7

= общий = | 04.10.2008, 22:21

что-то я с кратным недопомнимаю...

C4tnt

# 8

= общий = | 04.10.2008, 22:40

Ощущение, что у вас там просто равнство. Попробуйте вывести IDы, может в них глюк?

неизвестный

# 9

= общий = | 04.10.2008, 22:44

Да, стояло равенство (мой косяк, поэтому он доходил до 3х и дальше всё в одну строку выводил), сейчас поднял документацию пытаюсь разобраться, пока безуспешно.

C4tnt

# 10

= общий = | 04.10.2008, 22:53

Если в шаблоне не будет - переделайте код так:

$id = 1;
while ($row=$db->sql_fetchassoc())
{
$row['ID'] = $id;
$rows[]=$row;
$id=$id+1;
if ($id > 3) $id=1;
}
Тогда id будет меняться по принципу 1,2,3,1,2,3 но в шаблоне уже поменять не получиться.

неизвестный

# 11

= общий = | 04.10.2008, 23:03

В шаблонах есть возможность использовать mod (остаток от деления), чётно (is not even), не чётно (is not odd), is not div by (возможно деление без остатка).

Если сделать
...
if ($id>3) $id=1;
...

Тогда я не смогу использовать id'шники самих изображений в бд которые лежат, на случай если буду делать увеличенный просмотр.

неизвестный

# 12

= общий = | 04.10.2008, 23:09

ааа всё разобрался!
:) спасибо за внимание

C4tnt

# 13

= общий = | 04.10.2008, 23:09

Тогда {if ($item.ID mod 3) = 2}</tr><tr>{endif}

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.14291 сек.

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.89 от 25.04.2020
Версия JS: 1.45 | Версия CSS: 3.39