Количество новых строк.
1.
Сааааа-нёёёёё-к (29.08.2010 / 23:54)
Как зделать отображение количество новых сообщений за сутки?
Например это гостевая...
Подсчет всех строк зделал, а как сделать подсчет количества новых?
Подскажите...
2.
Денис (30.08.2010 / 00:26)
хм, все зависит от того что и где тебе нужно сделать..
Может enum?
3.
Lugaro (30.08.2010 / 01:01)
Записывай время поста в time, а потом в цикле сравнивай
if($время_добавления_строки > time()-(24*60*60)) {
$newPost++;
}
4.
Сааааа-нёёёёё-к (30.08.2010 / 01:26)
Щас попробую...
5.
Сааааа-нёёёёё-к (30.08.2010 / 01:35)
Лугаро, респект тебе! Работает все...а я голову ломал.
6.
delete (30.08.2010 / 04:12)
гг а у любого движка посмотреть было не вариант..
7.
ктулху (30.08.2010 / 06:18)
3, немного не верный вариант... я думаю корректнее выводить новые сообщения за текущий день (от 12 часов ночи и до текущего времени), а не строго сообщения за прошедшие 24 часа
8.
ramzes (30.08.2010 / 08:42)
time() - (time('H')*3600+time('i')*60) = уникс метка начала дня
9.
Lugaro (30.08.2010 / 09:00)
ShiftBHT_есть_чо7 (30 Августа 2010 / 05:18)
3, немного не верный вариант... я думаю корректнее выводить новые сообщения за текущий день (от 12 часов ночи и до текущего времени), а не строго сообщения за прошедшие 24 часа
Кому как удобней, меня устраивает этот вариант, встав утрецом можно сразу увидеть где что новое, ато отпостят вечером, а утром ты уже не увидишь что нового.
10.
Lugaro (30.08.2010 / 09:14)
Ну а вообще как мне кажется если на сайте много посетителей то все эти отлавливания новых постов это просто лишняя трата ресурсов, ладно там для зц, чтоб юзеры видели что там новые файлы появились, и то это не так важно
11.
Сергей (30.08.2010 / 09:36)
3.
.::lugaro::., плюс ко всему проверять посты нужно начиная с последнего... через while пустить цикл (пока возраст сообщения меньше максимально допустимого)
Так будет менее затратно...
12.
KOZZ (30.08.2010 / 09:45)
11, типа такого чтоли?
<?
$arr = file('gb.dat');
$newPost = 0;
foreach($arr as $val){
list($nick,$msg,$msg_time) = explode('|',$val);
if($msg_time > time()-(24*60*60)) {
$newPost++;
}
}
echo 'Новых постов '.$newPost;
?>
13.
Lugaro (30.08.2010 / 09:49)
12.
Влад Турчинский, нет, это с начала будет, если юзать foreach то нужно сначала массив развернуть, лучше for для этого юзать, там проще идти с конца массива, после того как начнут идти старые посты выходи из цикла с помощью break;
14.
KOZZ (30.08.2010 / 09:51)
13, а если юзать array_reverse(), ну или записывать новые вверху?
15.
ramzes (30.08.2010 / 09:53)
12, переходите на мускул там это одной строкой делается
16.
KOZZ (30.08.2010 / 09:54)
15, его учить еще надо %)
17.
Lugaro (30.08.2010 / 09:58)
14.
Влад Турчинский, записывать новые с верху не удобно, разворачивать массив смысла нет, проще for использовать, просто в место $i=0 пишешь общее количество элементов массива, и в место $i++ пишешь $i--
18.
KOZZ (30.08.2010 / 10:02)
17, считать в обратном порядке? тоже можно...
19.
Lugaro (30.08.2010 / 10:10)
18.
Влад Турчинский,
<?
$arr = array(1,2,3);
$count = count($arr)-1;
for($i=$count; $i>=0; $i--){
echo $arr[$i];
}
Ну а выход из цикла сам думаю напишешь
20.
KOZZ (30.08.2010 / 14:12)
19, ну я так и понял. спасибо )
21.
Мансур (06.09.2010 / 13:41)
Привет. Вот у меня тоже такой фигня проверте плиз.хочу на коммент сделать счетчик новых сообщение.
Как етот код?
<?php
echo'<a href="'.BASEDIR.'news/komm.php?id='.(int)$dtn[5].'&'.SID.'">Комменты</a>';
$new = 0;
$file = file(BASEDIR."local/datakomm/$dtn[5].dat");
$total = count($file);
for ($i = 0; $i < $total; $i++){
$data = explode("|", $file[$i]);
if (date("d.m.y") == date("d.m.y", $data[3])){$new++;}}}
if($new > 0){
echo '('.(int)$total.'/<font color="#FF0000">+'.(int)$new.'</font>)<br>';}
else{
echo '('.(int)$total).')<br>';
}
?>
22.
Мансур (06.09.2010 / 13:42)
Там дата[3] время поста.
23.
KOZZ (06.09.2010 / 14:07)
1) (int)$total - итак будет целое число по любому. только ты проверял бы перед чтением файла на его существование.
2) в твоем случае можно for заменить на foreach, (хотя кому как удобнее)
3) если разметка xhtml - не <br> а <br/>
24.
Мансур (06.09.2010 / 14:35)
23.
МеталлоgетектоР eGo,
да исправил. Еще цвет исправил. Там еще были ошибки на конце тоталом еще лишный }
<?php
$new = 0;
$file = file(BASEDIR."local/datakomm/$dtn[5].dat");
$total = count($file);
for ($i = 0; $i < $total; $i++){
$data = explode("|", $file[$i]);
if (date("d.m.y") == date("d.m.y", $data[3])){$new++;}}
if($new > 0){
echo ' ('.(int)$total.'/<span style="color:#ff0000">+'.(int)$new.'</span>)<br/>';
}else{
echo ' ('.(int)$total.')<br/>';
}
?>
URL:
https://visavi.net/topics/13144