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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: шаблонизатор Smarty

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: шаблонизатор Smarty нужно изменить на php
EASeven
Отправлено: 29 Марта, 2014 - 11:22:28
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Март 2014  


Помог: 0 раз(а)




У меня есть система использует Смарти шаблонизатор, я переделываю под себя.
И так вопрос, есть код шаблона: photo.tpl

PHP:
скопировать код в буфер обмена
  1.  {foreach key=id item=photo from=$db_data.photo}
  2.                                           <div>
  3.                                                 <div>
  4.                                                 <div>
  5.                                                 <a href="/{$photo.foto}" class="pics" title="{$photo.name}"><img src="/{$photo.foto}" alt="{$photo.name}" border="0"/></a></div>
  6.                                                 <div></div>
  7.                                                 </div>
  8.                                                 <span>{$photo.name}</span></div>
  9.                                           {/foreach}




Как цикл foreach или любой подобный переделать под Php? Нужно что-бы в файле php выполнялся и потом выводился цикл.
В photo.php код такой:

PHP:
скопировать код в буфер обмена
  1. if ( $news['photo_count'] > 0 ) {
  2.         $news_photo = fetchAll( "select * from news_foto where id_news='{$news['id']}' order by position" );
  3.         $news['photo'] = $news_photo;
  4.                
  5. }
  6.  
  7.  
  8.          <?PHP
  9.          $smarty->assign( 'db_data', $photo );
  10.          $smarty->assign( 'rights', $admlist[$login] );
  11.          $smarty->display( 'photo.tpl' );
  12.          $smarty->clear_all_assign();
  13.          ?>
  14.  

(Отредактировано автором: 29 Марта, 2014 - 11:27:06)

 
 Top
EASeven
Отправлено: 29 Марта, 2014 - 19:54:14
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Март 2014  


Помог: 0 раз(а)




up
 
 Top
3d_killer
Отправлено: 29 Марта, 2014 - 20:34:53
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




не понимаю смысла использования шаблонизатора, больше процессорного времени съесть да увеличить время загрузки страницы чем это хуже?
PHP:
скопировать код в буфер обмена
  1.  
  2. <div style="position:relative; padding-left:2px;">
  3. <div class="white_circle big_banner_scroll big_banner_scroll_back"><div class="arrow arrow_l" id="big_banner_scroll_back" ></div></div>
  4. <div class="white_circle big_banner_scroll big_banner_scroll_forward"><div class="arrow arrow_r" id="big_banner_scroll_forward"></div></div>
  5. <div  id="brends_banners" class="brends_banners">
  6.         <ul>
  7.         <?PHP foreach($controller->reclama as $key=>$value): ?>
  8.                 <li><a href="<?PHP echo $value['url']; ?>" title="<?PHP echo $value['text']; ?>">
  9.             <img class="banner_big acenter vmiddle" src="<?PHP echo $value['logo']; ?>" alt="<?PHP echo $value['text']; ?>"/>
  10.             </a>
  11.         </li>
  12.          <? endforeach; ?>
  13.         </ul>
  14. </div>
  15. </div>
  16.  

или сложнее?
 
My status
 Top
lastdays
Отправлено: 29 Марта, 2014 - 22:02:31
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




Все зависит от задач и самого проекта и сколько пишут людей этот проект.
Я перешел на шаблонизатор и ни капли не жалею, единственный минус - не привычно, но это первое время.

В будущем очень удобно, я хочу отредактировать функцию/запрос/ещё что-то, но не хочу видеть тонны хтмл кода.
В экономии нервов и времени, нужная штука.
Для просто огромных проектов в плане нагрузки, конечно, смарти неок.
 
 Top
3d_killer
Отправлено: 29 Марта, 2014 - 23:14:53
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




так я показал пример, конечно тут не много хтмл кода я в него и не лезу, а полезу так же как и с шаблонизатором в класс движка и буду править этот массив:
, так зачем мне лишний посредник со своим чуть чуть сокращенным синтаксисом?
я вижу только минусы при использовании шаблонизатора
(Добавление)
в шаблоне:

на чистом php
PHP:
скопировать код в буфер обмена
  1. <? echo $controller->photo['name']; ?>

чем шаблон упростил жизнь?

(Отредактировано автором: 29 Марта, 2014 - 23:17:33)

 
My status
 Top
EASeven
Отправлено: 30 Марта, 2014 - 08:33:24
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Март 2014  


Помог: 0 раз(а)




3d_killer пишет:
не понимаю смысла использования шаблонизатора, больше процессорного времени съесть да увеличить время загрузки страницы чем это хуже?
PHP:
скопировать код в буфер обмена
  1.  
  2. <div style="position:relative; padding-left:2px;">
  3. <div class="white_circle big_banner_scroll big_banner_scroll_back"><div class="arrow arrow_l" id="big_banner_scroll_back" ></div></div>
  4. <div class="white_circle big_banner_scroll big_banner_scroll_forward"><div class="arrow arrow_r" id="big_banner_scroll_forward"></div></div>
  5. <div  id="brends_banners" class="brends_banners">
  6.         <ul>
  7.         <?PHP foreach($controller->reclama as $key=>$value): ?>
  8.                 <li><a href="<?PHP echo $value['url']; ?>" title="<?PHP echo $value['text']; ?>">
  9.             <img class="banner_big acenter vmiddle" src="<?PHP echo $value['logo']; ?>" alt="<?PHP echo $value['text']; ?>"/>
  10.             </a>
  11.         </li>
  12.          <? endforeach; ?>
  13.         </ul>
  14. </div>
  15. </div>
  16.  

или сложнее?


Я и хочу уйти от использования Smarty, он для меня неудобен. И я хочу перевести все на php. Просто с циклом разобраться никак не мог.


PHP:
скопировать код в буфер обмена
  1. foreach($controller->reclama as $key=>$value){
  2.                 $catsy = <<<HTML
  3.                                           <div class="divfoto4">
  4.                                                 <div class="wrap">
  5.                                                 <div class="valign-center Ots1">
  6.                                                 <a rel="news-photo-item" href="/{$value['foto']}" class="pics" title="{$value['name']}"><img src="/{$value['foto']}" alt="{$value['name']}" border="0"/></a></div>
  7.                                                 <div class="ieotstoy"></div>
  8.                                                 </div>
  9.                                                 <span class="small3">{$value['name']}</span></div>
  10. HTML;
  11. }
  12.  
  13. $tpl->set( '{cat}', $catsy);



$controller - Что за переменная? И reclama.

А пока ошибка такая:
PHP:
скопировать код в буфер обмена
  1. Warning: Invalid argument supplied for foreach() in F:\test\photo.php on line 82

(Отредактировано автором: 30 Марта, 2014 - 08:47:44)

 
 Top
3d_killer
Отправлено: 30 Марта, 2014 - 11:23:07
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




в моем коде массив из моего движка $controller это экземпляр главного класса reclama это массив с него с набором картинок для прокручивающегося банера на странице,
у вас другие переменные
(Добавление)
вот это не понятно что должно делать:
PHP:
скопировать код в буфер обмена
  1.  
  2. if ( $news['photo_count'] > 0 ) {
  3.         $news_photo = fetchAll( "select * from news_foto where id_news='{$news['id']}' order by position" );
  4.         $news['photo'] = $news_photo;            
  5. }
  6.  

(Добавление)
без полного кода не могу ниче сказать, я не вижу обращения к БД
 
My status
 Top
EASeven
Отправлено: 30 Марта, 2014 - 11:41:33
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Март 2014  


Помог: 0 раз(а)




3d_killer пишет:
в моем коде массив из моего движка $controller это экземпляр главного класса reclama это массив с него с набором картинок для прокручивающегося банера на странице,
у вас другие переменные
(Добавление)
вот это не понятно что должно делать:
PHP:
скопировать код в буфер обмена
  1.  
  2. if ( $news['photo_count'] > 0 ) {
  3.         $news_photo = fetchAll( "select * from news_foto where id_news='{$news['id']}' order by position" );
  4.         $news['photo'] = $news_photo;            
  5. }
  6.  

(Добавление)
без полного кода не могу ниче сказать, я не вижу обращения к БД



ды эт не важно можно и:
PHP:
скопировать код в буфер обмена
  1. $img = mysql_query("SELECT * FROM news_foto WHERE id='{$news['id']}'");


Вообще суть такая, мне надо вывести из БД, все картинки - url, с одинаковым id_news пример таблицы:

и вывести их в шаблоне

это делается циклом? как его правильно реализовать?
если выводить без цикла, то выводится последняя запись

в коде поле показывает есть ли картинки в новости и указывает кол-во например 2, если есть то выполняет запрос

(Отредактировано автором: 30 Марта, 2014 - 11:47:13)

 
 Top
3d_killer
Отправлено: 30 Марта, 2014 - 11:52:33
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




без шаблонизатора, вроде так
PHP:
скопировать код в буфер обмена
  1. $img = mysql_query("SELECT * FROM news_foto WHERE id='$news['id']'");
  2. if ($rowcount($img) > 0 )
  3. {
  4.     $result_img = mysql_fetch_row($img);
  5. }
  6.  
  7. foreach($result_img as $key => $value)
  8. {
  9. echo $value['photo'];
  10. }

(Добавление)
не нужно 2 раза делать запрос
 
My status
 Top
EASeven
Отправлено: 30 Марта, 2014 - 12:03:40
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Март 2014  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. Fatal error: Function name must be a string in F:\test\photo.php on line 83


та строка:
 
 Top
3d_killer
Отправлено: 30 Марта, 2014 - 12:16:42
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




перейдя на пдо все позабывал...
так:
PHP:
скопировать код в буфер обмена
  1.     if (mysql_row_count($img) > 0 )
 
My status
 Top
EASeven
Отправлено: 30 Марта, 2014 - 12:36:29
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Март 2014  


Помог: 0 раз(а)




3d_killer пишет:
перейдя на пдо все позабывал...
так:
PHP:
скопировать код в буфер обмена
  1.     if (mysql_row_count($img) > 0 )



Теперь ошибка:
PHP:
скопировать код в буфер обмена
  1. Fatal error: Call to undefined function mysql_row_count() in F:\test\photo.php on line 83


Возможно так:


Но не работает вывод все равно Растерялся

(Отредактировано автором: 30 Марта, 2014 - 12:39:19)

 
 Top
3d_killer
Отправлено: 30 Марта, 2014 - 12:38:11
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




, сложно в справочнике посмотреть?
(Добавление)
это умирающий синтаксис
(Добавление)
сделайте без WHERE уберите это

и ниже этого

допишите

(Отредактировано автором: 30 Марта, 2014 - 12:40:58)

 
My status
 Top
EASeven
Отправлено: 30 Марта, 2014 - 12:44:11
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Март 2014  


Помог: 0 раз(а)




По итогу выводится это: 11Мuu1 что это значит непонятно?
 
 Top
3d_killer
Отправлено: 30 Марта, 2014 - 12:45:48
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




это колонка 'photo' таблицы news_foto
 
My status
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB