|
|
|
| Имеются две картинки on.gif и off.gif. Выводятся новости (из базы) с одной из картинок в углу каждой новости. Как сделать так, чтобы увиденные новости были выводились бы с картинкой off, а ещё не увиденные - on? | |
|
|
|
|
|
|
|
для: Nobody
(27.03.2005 в 19:17)
| | Мне кажеться только при помощи плюшек. | |
|
|
|
|
|
|
|
для: Nobody
(27.03.2005 в 19:17)
| | Лучше всего помечать прочитанные новости при помощи cookie - отмечая в них первичные ключи прочитанных новостей. | |
|
|
|
|
|
|
|
для: cheops
(27.03.2005 в 22:22)
| | Можно плиз поподробнее. Тем более я с PK не особо дружу. | |
|
|
|
|
|
|
|
для: Nobody
(28.03.2005 в 11:55)
| | Если нововстей не очень много и они имеют уникальные первичные ключи 1, 2, 3, и т. д. то при открытии новости постетителем можно помечать её как прочитанную, устанавливая посетителю куку new1, new2, new3, и т.д. http://www.softtime.ru/bookphp/gl8_2.php
<?php
setcookie ("new$id_news", "1", time() + 3600*24*30); // Устанавливаем куку на месяц
?>
|
А перед выводом новостей в цикле проверять установлена такая куку или нет
<?php
if(isset($_COOKIE['new1'])) $is_read = true; // Прочитана
else $is_read = false; // Нет
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(28.03.2005 в 22:04)
| | Блин, и почему я не догадался! :) Спасибо огромное!!!
Ещё бы с div'ом разобраться... чтобы он был поверх всего (как в position: absolute), но появлялся относительно родителя (т.е. position: relative). Я этот вопрос задал в разделе Java, ПОЖАААЛУЙСТА посмотрите! :)) Очень надо! :)) | |
|
|
|
|
|
|
|
для: Nobody
(30.03.2005 в 17:58)
| | А можно узнать, как имя переменной new сделать изменяющейся в зависимости от номера новости?
<?php
if(isset($_COOKIE['new1'])) $is_read = true; // Прочитана
else $is_read = false; // Нет
?>
|
Т.е. если у меня в цикле выводится 15 новость, то как мне обозначить $_COOKIE['newНОМЕР_НОВОСТИ15']? | |
|
|
|
|
|
|
|
для: Nobody
(10.04.2005 в 20:34)
| | Вы можете динамически формировать индексы для $_COOKIE
<?php
for($i = 0; $i < 15; $i++)
{
$key = "new".$i;
if(isset($_COOKIE[$key])) $is_read = true; // Прочитана
else $is_read = false; // Нет
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(11.04.2005 в 02:05)
| | Почти получилось. Только при выводе новостей (по вашему способу постраничной навигации) первый три новости отлично пишут куки, а вот остальные ни в какую не пишут... Хоть сколько новостей выводи на странице всё равно после третей, т.е. с четвёртой новости куки не пишутся.
Так проверяются и пишутся куки:
<?
$cook_num="new".$num; // $num - номер новости
if (isset($_COOKIE[$cook_num])) { $is_read="<img src=\"../pics/off.gif\" width=\"20\" height=\"18\">"; }
else { setcookie ("$cook_num", "1", time() + 3600*24*30);
$is_read="<img src=\"../pics/on.gif\" width=\"20\" height=\"18\">"; }
?>
|
Причём если дописать ещё 2 новости, чтобы те 2, которые не записали куки, сдвинулись на вторую страницу (у меня по 5 новостей выводится), то при просмотре их во второй раз, они становятся просмотренными. Т.е. по любому, на любой странице только первые три выводимые новости пишут свои куки... | |
|
|
|
|
|
|
|
для: Nobody
(11.04.2005 в 22:09)
| | А значение $num какие значения принимает, не может он по новой принимать значения 1, 2 и 3 для первых новостей, когда происходит переход на другую страницу или выводятся ещё новости? | |
|
|
|
|
|
|
|
для: cheops
(13.04.2005 в 11:27)
| | Нет, $num у меня уникален для каждой выводимой новости, т.е. PK. Т.е. на какой бы странице новости не выводились, у каждой новости свой $num.
А сейчас я столкнулся с ещё большей проблемой... Теперь у меня всегда выводится off.gif, т.е. любая новости, даже только что выложенная уже прочитана. Хотя я ничего не менял.... | |
|
|
|
|
|
|
|
для: Nobody
(13.04.2005 в 15:06)
| | Здесь очень сложно сказать что-то без кода, не могли бы вы приложить архив с кодом - тогда будет проще найти ошибку. | |
|
|
|
|
|
|
|
для: Nobody
(27.03.2005 в 19:17)
| | Никто не знает чтоли?
Просто ооочень надо!!! | |
|
|
|
|
автор: Cthutq (13.04.2005 в 20:00) |
|
|
для: Nobody
(13.04.2005 в 01:58)
| | А если у тебя 100000 новостей ты сколько времени будешь куки пользователю отправлять? | |
|
|
|
|
|
|
|
для: Cthutq
(13.04.2005 в 20:00)
| | Обычно при таком количестве новостей держат актуальный лист из 20 штук, остальное отправляя в архив. | |
|
|
|
|
|
|
|
для: cheops
(13.04.2005 в 22:15)
| | Пример выше я приводил, но могу и по полнее предоставить:
<?
$result = mysql_query("SELECT * FROM news");
$posts = mysql_num_rows($result);
$total = intval(($posts - 1) / $number)+1;
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $posts-($page * $number);
if ($start < 0) { $start=0; $number=$posts%$number; }
$result = mysql_query("SELECT * FROM news LIMIT $start, $number");
$x=mysql_numrows($result);
while ($x >= 0)
{
$num = mysql_result($result,$x, 'num'); // Вот это и есть номер новости
$id = mysql_result($result,$x, 'id'); // ну а остальное без разницы
$title = mysql_result($result, $x, 'title');
$dat = mysql_result($result, $x, 'dates');
$login = mysql_result($result,$x, 'login');
$picaf = mysql_result($result,$x, 'picaf');
$short = mysql_result($result,$x, 'shortnews');
$comments = mysql_result($result,$x, 'comments');
$cook_num="new".$num;
if (isset($_COOKIE[$cook_num])) { $is_read="<img src=\"../pics/off.gif\" width=\"20\" height=\"18\">"; }
else { setcookie ("$cook_num", "1", time() + 3600*24*30);
$is_read="<img src=\"../pics/on.gif\" width=\"20\" height=\"18\">"; }
/* ----А дальше идет выбор по $id, какой темы новость и выводится сама новость с номером $num соответственно -----*/
?>
|
| |
|
|
|