Форум сетевых администраторов
Показаны 12 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- VBulletin 3.x.x (http://netadmin.ws/forum/forumdisplay.php?forumid=74)
-- [seek] Кто автор сообщения под номером № на форуме (http://netadmin.ws/forum/showthread.php?threadid=10278)


Помещено Xrobak 10-02-2005 в 16:13:

[seek] Кто автор сообщения под номером № на форуме

На главной странице форума есть внизу "раздел" Статистика форума, в к-ром перечисляется сколько на форуме создано тем, сообщений, зарегистрировано пользователей.
Интересует вопрос - как можно узнать кто запостил на форуме например 500-тое сообщение. Не 500-тое сообщение в личном активе, а именно пятисотое сообщение в сумме на всем форуме.
Зачем это нужно - ну к примеру можно каждому человеку, к-рый запостит сообщение и оно окажется в сумме всех сообщений на форуме скажем 500-тым, то ему полагается приз какой-то... Сразу же скажу что номер сообщения, что прописуется в УÐ_Л это не то.

ЗЫ: надеюсь всем понятно что не обязательно что 500-тое сообщение должно быть, можно любое. Ð_ылся в админке где бы это там вычислить, так и не нашол. Может хак есть какой ?


Помещено miXei 10-02-2005 в 18:53:

Xrobak
А если сообщение какое-то будет удалено, то автор 500-го уже другой получается и так круговорот постоянный?

__________________
miXei.ru - Дискуссионный клуб


Помещено Xrobak 12-02-2005 в 18:06:

miXei
да, круговорот, но мне собственно нужно один раз узнать кто запостил 500 сообщение, дать ему приз к примеру и жадть кто запостит уже к примеру 1000-ное сообщение и т.п. А далее - удаляй не удаляй посты, это уже не важно, приз дан и все

ЗЫ: и все же ближе к вопросу - как такое сделать то? Отследить визуально это очень-очень проблематично...


Помещено N0SFERATU 26-02-2005 в 02:10:

вижу, на конкретные вопросы отвечать не умеем...


Помещено prosto 26-02-2005 в 05:30:

select username from post where postid = '500';


Помещено Xrobak 26-02-2005 в 15:47:

quote:
вижу, на конкретные вопросы отвечать не умеем...

это к чему было сказано?
quote:
select username from post where postid = '500';

ты видать плохо прочитал мое первое сообщение:
quote:
Сразу же скажу что номер сообщения, что прописуется в УÐ_Л это не то.

Если сомневаешся в моей правоте - зайди в таблицу с постами в БД и посмотри на айди самого последнего поста в базе, а теперь сравни его с общим кол-вом сообщений на форуме, и ты увидиш что эти цифры не совпадают. А все потому, что значение постайди установлено автоинкремент, вот, но ты забыл что посты некоторые то с базы удаляются админами/супермодерами... посему и не стыковка тут...


Помещено prosto 26-02-2005 в 19:59:

Т.е. тебе нужен автор конкретно 500-го поста по счёту, который сейчас в базе после всех удалений. А не с postid = 500. Так?

Тогда вот так:

select username from post order by postid asc limit 499, 1;


Помещено Xrobak 28-02-2005 в 20:50:

Спасибо, с меня 5! Совсем забыл про limit, хм...


Помещено GenUS 02-03-2005 в 04:30:

prosto
А как на счет постов, мягко удаленных? ...

__________________
.


Помещено prosto 03-03-2005 в 04:18:

quote:
Первоначальное сообщение от GenUS
prosto
А как на счет постов, мягко удаленных? ...


Извини, не совсем понял твоего вопрса...
Что значит "мягко удалённых"?


Помещено GenUS 03-03-2005 в 08:19:

Ну ... в 3-й вобле есть две возможности удаления постов/тем: безвозвратно (жесткое удаление) и с возможностью восстановления (мягкое удаление) .... во втором случае посты только отмечаются как удаленые и остаются в базе ...

__________________
.


Помещено prosto 04-03-2005 в 17:24:

Понял, о чём ты.
Информация о "мягко" удалённых постах и темах лежит в deletionlog.
Причём, primaryid может случайно совпадать...
Поэтому, в один запрос тут никак.

В общем, enjoy:

set @deleted_posts := '|';
set @posts_in_deleted_threads := '|';
select @deleted_posts := concat(@deleted_posts, primaryid, '|') from deletionlog where type = 'post';
select @posts_in_deleted_threads := concat(@posts_in_deleted_threads, postid, '|') from deletionlog, post where type = 'thread' and threadid = primaryid;
select username, postid from post where @posts_in_deleted_threads not like concat('%|', postid, '|%') and @deleted_posts not like concat('%|', postid, '|%') order by postid asc limit 499, 1;


Формат времени GMT. Текущее время 05:23.
Показаны 12 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.