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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Страница размножается вместе с выводом новостей по шаблону
file.shreder
Отправлено: 26 Октября, 2014 - 18:12:13
Post Id


Посетитель


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


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

[+]


наткнулся на фруме на статью о том, что сам по себе PHP и есть не плохой шблонизатор, и справляетс с этой задачей на 95 процентов... использовал тот код. Попробовал на скриптике который сам химичил. Вывод превью новостей из базы со ссылкой Read more///. Вроде бы работало. вот только сколько оборотов делает цикл по массиву из базы, на сколько экранов размножается страница... в чем прикол? я новичок!!! и самоучка

<?php
ini_set('display_errors','On');
error_reporting('E_ALL');
require "admin/database_connection.php";

$result = mysql_query ("SELECT `id` , `title` , `summary` , `content`, `view`,`date`
FROM `articles`
ORDER BY `id`
");
if (!$result){ die (mysql_error());
}
for ($c=0; $c<5; $c++)
{
$f = mysql_fetch_array($result);
$title = "$f[title]";
$summary = "$f[summary]";
$view = "$f[view]";
$date = "$f[date]";
include "template.html";
}
?>


ну и темлейт

<div id="content">
<?=$title?>
<?=$summary?>
<?='<a href="full.php?do=readnews&id= '.$f['id'].'"> Вся стаття... </a>';?>
<div><?=$view?> Переглядів</div>
<?=$date?>
(Добавление)
Никто ничё??? не подскажет?77 с ума с этими пиашпи можна сойти... называется смотрю в книгу вижу фигу
(Добавление)
отключаю CSS - то все нормально конечно, но с таблицей стилей....
 
 Top
dXdYdZ
Отправлено: 26 Октября, 2014 - 19:57:47
Post Id


Посетитель


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


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




Не совсем понятно, в чём проблема.
 
 Top
file.shreder
Отправлено: 27 Октября, 2014 - 17:29:05
Post Id


Посетитель


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


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

[+]


dXdYdZ пишет:
Не совсем понятно, в чём проблема.


---------------------------
header
__________________
новость1

--------------------------
footer
-----------------


и по новой...
---------------------------
header
__________________
новость2

--------------------------
footer
----------------- и так до конца списка.. а должно же быть
хидер
---------------
новость1
новость2
новость3...
----------------------------
футер
(Добавление)
так понятно???
(Добавление)
сам шаблон повторяется
 
 Top
Tyoma5891
Отправлено: 27 Октября, 2014 - 17:47:05
Post Id


Частый посетитель


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


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




так у Вас шаблон инклюдится в цикле каждый раз) от этого и так и получается...
Вам нужно в самом шаблоне в цикле выводить необходимые там где надо Вам данные...
 
 Top
file.shreder
Отправлено: 27 Октября, 2014 - 17:49:38
Post Id


Посетитель


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


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

[+]


Tyoma5891 пишет:
так у Вас шаблон инклюдится в цикле каждый раз) от этого и так и получается...
Вам нужно в самом шаблоне в цикле выводить необходимые там где надо Вам данные...

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

если инклуд вывожу за пределы цыкла то выводится в шаблоне только одна запись
(Добавление)
for ($c=0; $c<5; $c++)
{
$f = mysql_fetch_array($result);
$title = "$f[title]";
$summary = "$f[summary]";
$view = "$f[view]";
$date = "$f[date]";

}
include "template.html"; так что ли?
(Добавление)
А в другом скрипте, все вроде работает, а вот название статьи и анонс не записываются в базу данных на кирилице, а полная статья записывается. и соответственно при выводе отображается только дата, и то при каждом выводе отнимает по одному дню... иногда мне кажется, что програмирование - это что-то непостижимое
 
 Top
Tyoma5891
Отправлено: 27 Октября, 2014 - 17:59:29
Post Id


Частый посетитель


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


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




template.html
сделать template.php
и все делать в нем...
 
 Top
dXdYdZ
Отправлено: 27 Октября, 2014 - 18:06:22
Post Id


Посетитель


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


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




А Вы привели полный шаблон, или в нём у Вас действительно инклудится хидер и футер?
Если действительно инклудится, то тут есть 2 варианта:
1) Убрать их оттуда и инклудить отдельно.
2) (Мне кажется, что этот вариант даже лучше) Изменить код на следующий:
PHP:
скопировать код в буфер обмена
  1.  
  2. ini_set('display_errors','On');
  3. error_reporting('E_ALL');
  4. require "admin/database_connection.php";
  5.  
  6. $result = mysql_query ("SELECT `id` , `title` , `summary` , `content`, `view`,`date`
  7. FROM `articles`
  8. ORDER BY `id`
  9. ");
  10. if (!$result){ die (mysql_error());
  11. }
  12. $articles=array();
  13. for ($c=0; $c<5; $c++)
  14. {
  15. $articles[] = mysql_fetch_array($result);
  16. }
  17. include "template.php";
  18.  

А кусок шаблона тогда будет такой:
PHP:
скопировать код в буфер обмена
  1. <div id="content">
  2. <? foreach($articles as $article): ?>
  3.    <div class='article'>
  4.       <div class='title'>
  5.          <?=$article['title']?>
  6.       </div>
  7.       <div class='summary'>
  8.          <?=$article['summary']?>
  9.       </div>
  10.       <a href="full.php?do=readnews&id=<?=$article['id']?>"> Вся стаття... </a>
  11.       <div class='view'><?=$article['view']?> Переглядів</div>
  12.       <div class='date'>
  13.          <?=$article['date']?>
  14.       </div>
  15.    </div>
  16. <? endforeach; ?>
  17. </div>

(Отредактировано автором: 27 Октября, 2014 - 18:12:47)

 
 Top
file.shreder
Отправлено: 27 Октября, 2014 - 18:13:11
Post Id


Посетитель


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


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

[+]


Tyoma5891 пишет:
template.html
сделать template.php
и все делать в нем...

дело в том, что смысл в чем тогда? идет речь о том, что сам php может послужить инструментом разделения кода и представления.. и именно такой пример я нашел в интернете...
 
 Top
dXdYdZ
Отправлено: 27 Октября, 2014 - 18:17:54
Post Id


Посетитель


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


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




file.shreder пишет:
идет речь о том, что сам php может послужить инструментом разделения кода и представления.. и именно такой пример я нашел в интернете...

Ну в предыдущем моём посте я привёл Вам пример разделения. На PHP можно делать полноценные шаблоны. Может, не так удобно, как на других шаблонизаторах, но это уже как кому нравится. Зато эти шаблоны работают с максимальной скоростью.

(Отредактировано автором: 27 Октября, 2014 - 18:21:13)

 
 Top
file.shreder
Отправлено: 27 Октября, 2014 - 18:29:47
Post Id


Посетитель


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


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

[+]


dXdYdZ пишет:
file.shreder пишет:
идет речь о том, что сам php может послужить инструментом разделения кода и представления.. и именно такой пример я нашел в интернете...

Ну в предыдущем моём посте я привёл Вам пример разделения. На PHP можно делать полноценные шаблоны. Может, не так удобно, как на других шаблонизаторах, но это уже как кому нравится. Зато эти шаблоны работают с максимальной скоростью.

Я попробую!!!! У меня пока получилось то что Tyoma5891 предложил. Сделал template.php
include "header.php";
for ($c=0; $c<mysql_num_rows($result); $c++)
{
$f = mysql_fetch_array($result);
$title = "$f[title]";
$summary = "$f[summary]";
$view = "$f[view]";
$date = "$f[date]";

echo $title;
echo $summary;
echo $date;

echo $view;
echo '<a href=\"full.php?do=readnews&id='.$f['id'].'\"> Вся статья... </a>';
}
include "footer.php";
но теперь после всех манипуляций перестала работать ссылка на полную статью
You don't have permission to access /"full.php on this server
 
 Top
dXdYdZ
Отправлено: 27 Октября, 2014 - 18:39:27
Post Id


Посетитель


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


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




file.shreder пишет:
Я попробую!!!! У меня пока получилось то что Tyoma5891 предложил. Сделал template.php
include "header.php";
for ($c=0; $c<mysql_num_rows($result); $c++)
{
$f = mysql_fetch_array($result);
$title = "$f[title]";
$summary = "$f[summary]";
$view = "$f[view]";
$date = "$f[date]";

echo $title;
echo $summary;
echo $date;

echo $view;
echo '<a href=\"full.php?do=readnews&id='.$f['id'].'\"> Вся статья... </a>';
}
include "footer.php";

Ну, в данном случае Вы сделали разделение обработчика и отображения не полностью. У Вас информация о статье выводится прямо из обработчика, что не очень хорошо.

(Отредактировано автором: 27 Октября, 2014 - 18:40:37)

 
 Top
file.shreder
Отправлено: 27 Октября, 2014 - 18:40:32
Post Id


Посетитель


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


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

[+]


dXdYdZ пишет:
file.shreder пишет:
идет речь о том, что сам php может послужить инструментом разделения кода и представления.. и именно такой пример я нашел в интернете...

Ну в предыдущем моём посте я привёл Вам пример разделения. На PHP можно делать полноценные шаблоны. Может, не так удобно, как на других шаблонизаторах, но это уже как кому нравится. Зато эти шаблоны работают с максимальной скоростью.


ты молодчага! все работает, в смысле как шаблон все четко вывело, и все оказалось так просто, когда кто то как ты обьясняет. Но вот со ссылкой проблема... на странице full.php GET по ходу не принимает ИД, или хрен его знает что!!!!
 
 Top
dXdYdZ
Отправлено: 27 Октября, 2014 - 18:43:02
Post Id


Посетитель


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


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




file.shreder пишет:
ты молодчага! все работает, в смысле как шаблон все четко вывело, и все оказалось так просто, когда кто то как ты обьясняет. Но вот со ссылкой проблема... на странице full.php GET по ходу не принимает ИД, или хрен его знает что!!!!

Если можете, выложите код full.php

(Отредактировано автором: 27 Октября, 2014 - 18:44:27)

 
 Top
file.shreder
Отправлено: 27 Октября, 2014 - 19:05:17
Post Id


Посетитель


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


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

[+]


dXdYdZ пишет:
file.shreder пишет:
ты молодчага! все работает, в смысле как шаблон все четко вывело, и все оказалось так просто, когда кто то как ты обьясняет. Но вот со ссылкой проблема... на странице full.php GET по ходу не принимает ИД, или хрен его знает что!!!!

Если можете, выложите код full.php

Извини... работает все... !!! Ты гениален!!!!!!! Подмигивание
(Добавление)
А как эти массивы переворачивать, чтобы отображались выводилсь с начала страницы новые а в конце старые, а то выводит по ИД с базы, то есть с первого, который является по времени последним
 
 Top
dXdYdZ
Отправлено: 27 Октября, 2014 - 19:08:45
Post Id


Посетитель


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


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




Радость Переворачивать - с помощью ORDER BY
Например,

(Отредактировано автором: 27 Октября, 2014 - 19:10:01)

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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB