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 :: Правильная настройка шаблонизатора в цикле

 PHP.SU

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


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

> Описание: Шаблонизатор неправильно работает внутри цикла
Алексеей
Отправлено: 28 Июня, 2013 - 12:34:01
Post Id


Посетитель


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


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




Здравствуйте.
Недавно я создал тему по этому вопросу, но тот вопрос уже решил сам, но и появился еще одна проблема, это самая большая проблема.
Шаблонизатор работает, показывает значение тега, но оно работает неправильно, посмотрите на этот код:
PHP:
скопировать код в буфер обмена
  1.  
  2. $tpl_blog = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/site/templates/blog_post_des.tpl'); //указываю путь к файлу tpl
  3. $queryBlog = "SELECT * FROM blog";
  4. $resultBlog = mysql_query($queryBlog);
  5. if (mysql_num_rows($resultBlog) > 0) {
  6.     while ($rBlog = mysql_fetch_array($resultBlog)) {
  7.        //создаю теги
  8.         codes::set('blog_author', $rBlog["author"]);
  9.         codes::set('blog_id', $rBlog["id"]);
  10.         codes::set('blog_cats', $rBlog["tags"]);
  11.         codes::set('blog_img', $rBlog["img"]);
  12.         codes::set('blog_date', $rBlog["date"]);
  13.         codes::set('blog_time', $rBlog["time"]);
  14.         codes::set('blog_message', $rBlog["dmess"]);
  15.         codes::set('blog_title', $rBlog["title"]);
  16.     }
  17. } else {
  18.         codes::set('blog_body', "Нет записей");
  19. }
  20. echo codes::tpl($tpl_blog); # все теги будут работать в этом tpl файле
  21.  

Я создал цикц для того, чтобы выводились все записи в таблице blog, а там на данный момент 3 записей, а выводит только первую запись (1 запись из 3) Глазки в кучку
Какая ошибка в коде?
Спасибо за внимание.

(Отредактировано автором: 28 Июня, 2013 - 12:36:01)

 
 Top
VenZell
Отправлено: 28 Июня, 2013 - 12:39:18
Post Id


Частый гость


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


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




Алексеей, я намекну, выводить записи на экран тебе тоже надо в цикле.
 
 Top
dubasua
Отправлено: 28 Июня, 2013 - 12:40:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012  


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




Я шаблонизаторы не юзаю, но скажите что конкретно делает метод codes::set()? Его разве можно переназначить?
(Добавление)
ну в смысле если сделать так
PHP:
скопировать код в буфер обмена
  1. codes::set('any', 'some_text1');
  2. codes::set('any', 'some_tex2');

Что будет в codes::get('any')?
 
 Top
Алексеей
Отправлено: 28 Июня, 2013 - 13:07:39
Post Id


Посетитель


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


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




dubasua, codes::set() - это класс, создает теги. Например:
PHP:
скопировать код в буфер обмена
  1. codes::set("name", "Алексей");
  2. echo codes::tpl(file_get_contents('page.tpl'));

- в файле page.tpl, тег $NAME$ будет как "Алексей".
dubasua пишет:

ну в смысле если сделать так
PHP:
скопировать код в буфер обмена
  1. codes::set('any', 'some_text1');
  2. codes::set('any', 'some_tex2');


Ну ведь в цикле это должно само делаться, а там выводит только один.
dubasua пишет:
Что будет в codes::get('any')?

Вроде ничего, нет такого класса
 
 Top
VenZell
Отправлено: 28 Июня, 2013 - 13:20:51
Post Id


Частый гость


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


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




Алексеей, намекну еще разок:
PHP:
скопировать код в буфер обмена
  1. for ($i = 0; $i<=3; ++$i):
  2.    $a = $i . ' test<br>';
  3. endfor;
  4. echo $a;
  5.  
  6.  /*Выведет на экран:
  7. 3 test
  8.  
  9. , а не вот это:
  10. 0 test
  11. 1 test
  12. 2 test
  13. 3 test
  14. */
  15.  
  16. /* Надо так */
  17. for ($i = 0; $i<=3; ++$i):
  18.    $a = $i . ' test<br>';
  19.    echo $a;
  20. endfor;

Теперь понятней объяснил?

(Отредактировано автором: 28 Июня, 2013 - 13:21:23)

 
 Top
Алексеей
Отправлено: 28 Июня, 2013 - 13:32:15
Post Id


Посетитель


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


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




VenZell, А можно без намеков? Я попробовал сделать как вы намекнули, но выводит один и тот же запись, но уже несколько рас
 
 Top
dubasua
Отправлено: 28 Июня, 2013 - 13:32:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012  


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




PHP:
скопировать код в буфер обмена
  1. codes::set("name", "Алексей");
  2. codes::set("name", "Василий");
  3. echo codes::tpl(file_get_contents('page.tpl'));

На что теперь изменится тег $NAME$ в файле page.tpl?
 
 Top
Алексеей
Отправлено: 28 Июня, 2013 - 13:37:06
Post Id


Посетитель


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


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




dubasua, пишет только "Василий"
 
 Top
dubasua
Отправлено: 28 Июня, 2013 - 13:38:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012  


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




Вот Вам и ответ на Ваш вопрос.
 
 Top
VenZell
Отправлено: 28 Июня, 2013 - 13:42:34
Post Id


Частый гость


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


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




Алексеей, у вас переменная в цикле постоянно перезаписывается. При выводе ее на экран вне цикла, выводится ее последнее значение.

Точно не знаю, как у вас там шаблонизатор работает, но попробуйте сделать так:
PHP:
скопировать код в буфер обмена
  1. $tpl_blog = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/site/templates/blog_post_des.tpl'); //указываю путь к файлу tpl
  2. $queryBlog = "SELECT * FROM blog";
  3. $resultBlog = mysql_query($queryBlog);
  4. if (mysql_num_rows($resultBlog) > 0) {
  5.     while ($rBlog = mysql_fetch_array($resultBlog)) {
  6.        //создаю теги
  7.         codes::set('blog_author', $rBlog["author"]);
  8.         codes::set('blog_id', $rBlog["id"]);
  9.         codes::set('blog_cats', $rBlog["tags"]);
  10.         codes::set('blog_img', $rBlog["img"]);
  11.         codes::set('blog_date', $rBlog["date"]);
  12.         codes::set('blog_time', $rBlog["time"]);
  13.         codes::set('blog_message', $rBlog["dmess"]);
  14.         codes::set('blog_title', $rBlog["title"]);
  15.         echo codes::tpl($tpl_blog); # все теги будут работать в этом tpl файле
  16.    }
  17. } else {
  18.         codes::set('blog_body', "Нет записей");
  19. }

(Отредактировано автором: 28 Июня, 2013 - 13:43:46)

 
 Top
esterio
Отправлено: 28 Июня, 2013 - 14:50:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




1. подправлю set - не класс, а метод класса. Ет на будущее
2. VenZell какой там цыкл. Что Вы подсказиваете
3.
dubasua пишет:
codes::set("name", "Алексей");
codes::set("name", "Василий");
echo codes::tpl(file_get_contents('page.tpl'));
пишет только "Василий"

так и должно быть, тоесть по логике у вас есть
PHP:
скопировать код в буфер обмена
  1. $name = 'name1';
  2. $name = 'name2';
  3. echo $name;

что должно быть.


Вывод:
ТС нужно реализовать что-нибудь похожее на блокы в тих же шаблонизаторах, которых у него нет
 
 Top
Алексеей
Отправлено: 29 Июня, 2013 - 06:13:28
Post Id


Посетитель


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


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




Какие варианты есть? как мне вывести все данные из таблицы Blog в .tpl файл?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB