Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 532
1

Как узнать, что пользователь уже прочитал запись?

06.07.2018, 21:40. Показов 2434. Ответов 57
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Сделал страницу новостей на сайте, теперь хочу сделать так, чтобы когда я добавлял новость, то надо выделять слово Новость в меню другим цветом, тем людям, кто еще не читал этот новость.
Цвет знаю как менять, но вот не могу определить тех кто читал и не читал.
Сначала думал добавить в куки и через этот куки проверять, но если человек очистит куки, то меню, снова поменяет цвет.
Потом хотел использовать запись в БД, т.е. создать отдельный столбик, где будет записываться 1, если прочитал и 0 если не читал. И менять цвет меню тем, у кого 0. Потом подумал, что для этого не хочется создать отдельный столбик.
Есть ли другие способы проверки?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.07.2018, 21:40
Ответы с готовыми решениями:

ADO.Recordset - Как узнать, что запись уже редактируется
Если многопользовательский вариант при доступе ADO.Recordset как узнать что запись кем то...

Какова вероятность того, что все три книги читатель уже прочитал раньше
На книжной полке стоят 30 различных книг. Читатель, просмотрев их, обнаружил, что 10 книг он уже...

Как написать, что такой пользователь уже есть при регистрации
Добрый день. Мне нужно делать регистрацию пользователя на сайте. К базе данных я подключилась,...

Как узнать, что ты уже в интернете, функция InternetGetConnectedState().
Здравствуйте! Есть такая функция InternetGetConnectedState(); из WinInet, так вот делаю так:...

57
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 532
10.07.2018, 23:24  [ТС] 21
Author24 — интернет-сервис помощи студентам
andyyy, да, я так и делал, но он работает не правильно.
Сначала я достаю всех у кого кол-во рефералов больше 0, потом ищу их рефералов и сравниваю по условию, но почему-то не работает
0
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
11.07.2018, 07:10 22
Риназ, вы так и будете ходить вокруг и около или наконец напишите в одном сообщении задачу, проблему и ваш неработающий код?
0
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 532
11.07.2018, 08:58  [ТС] 23
Вот, я создал тему: Как сделать конкурс рефералов?

Добавлено через 1 час 3 минуты
tarasalk, Я сделал так: Ищу всех рефералов, которые попадают под условие, все правильно находится.
Вот теперь как найти их реферера.
Вот код, который находит рефералов:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
$query = mysqli_query($db, "SELECT `id`, `name`, `total`, `rating`, `date_reg` FROM `users` WHERE `ref` > '0' AND `rating` > '0' AND `total` > '0' AND `date_reg` >= '$start_date' ");
// $start_date - начала конкурса
if (mysqli_num_rows($query)) {
    while ($row = mysqli_fetch_assoc($query)) {
        $str[] = array($row['id'], $row['name'], $row['kol_ref']);
        
    }
}
?>
<table>
<?
foreach ($str as $str2) {
?>
<tr><td><?=$str2[0];?></td><td><?=$str2[1];?></td><td><?=$str2[2];?></td></tr>
<? } ?>
</table>
0
1113 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
11.07.2018, 10:30 24
Цитата Сообщение от Риназ Посмотреть сообщение
Вот теперь как найти их реферера.
Проблема только в этом?

Очевидно что нужно добавить поле в таблицу юзеров в которое нужно записывать id реферера. А как еще можно узнать кто тебя привлёк в проект?

Если никто не привлек, значение 0. В идеале, конечно бы создать новую базу с полями id_referal и id_referer, но для начала и так сойдёт.

Предвкушаю вопрос о том как узнать кто привлек пользователя на уровне регистрации. Можно поступить двумя способами:
1. Каждому пользователю даём личную ссылку (с гет параметром) для привлечения рефералов (sait.ru/reg.php?referer=id)
2. При регистрации добавить обязательное поле в которое нужно вбить логин или id реферера, если реферера нет, то пишем 0.
0
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 532
11.07.2018, 10:47  [ТС] 25
sasha0012, у меня уже есть столбик, где записывается реферер(ref). Я не могу взять id реферала, так как он в массиве. Если сделать $str2[0], то выводится id последнего реферала, но все равно не работает.
Как сделать чтобы он находил сначала реферера первого реферала, потом второго и так далее. Или есть более лучший способ? А то моим способом надо сделать 2 запроса.
0
1113 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
11.07.2018, 11:05 26
SQL
1
SELECT `id`, `name`, `total`, `rating`, `date_reg` FROM `users` WHERE `ref` > 0 AND `rating` > 0 AND `total` > 0 AND `date_reg` >= '$start_date'
Этот запрос и вернёт всех пользователей у которых есть реферер, рейтинг больше нуля и п.д. Что ещё надо?

Если нужно посмотреть сколько рефералов привлек каждый реферер, то так:
SQL
1
SELECT `ref`, COUNT(*) AS total FROM users GROUP BY `ref`
и циклом while
PHP
1
echo 'referer' . $row['ref'] .' = referal'. $row['total']
0
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 532
11.07.2018, 11:08  [ТС] 27
sasha0012, нет, я уже знаю сколько рефералов попадают под условие. И знаю сколько всего рефералов у реферера.
Вот я же нашел всех рефералов, теперь надо найти их реферера.
0
1113 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
11.07.2018, 11:13 28
Цитата Сообщение от Риназ Посмотреть сообщение
нет, я уже знаю сколько рефералов попадают под условие
Цитата Сообщение от Риназ Посмотреть сообщение
теперь надо найти их реферера
так вы его уже нашли!!!
Цитата Сообщение от Риназ Посмотреть сообщение
WHERE `ref` > '0'
$row['ref'] и есть реферер реферала.
0
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 532
11.07.2018, 11:55  [ТС] 29
Цитата Сообщение от sasha0012 Посмотреть сообщение
так вы его уже нашли!!!
ОЙ! Я вообще про это забыл

Добавлено через 4 минуты
А как теперь посчитать сколько таких рефералов(найти сумму всех рефералов одного реферера). И с помощью этой суммы дать 1 место тому, у кого самое большое кол-во рефералов. Потом 2 место, 3, 4 и 5(т.е. всего 5 мест - 5 призов.)

Добавлено через 25 минут
Цитата Сообщение от Риназ Посмотреть сообщение
ОЙ! Я вообще про это забыл
Кажется я рано радовался. Т.к. этот массив выводит только id реферера, а мне надо его имя, и кол-во рефералов. Т.е. надо сделать новый запрос. А чтобы он нашел всех, а не только последнего, надо добавить этот запрос в цикл. Тем самым будет несколько запросов сразу. Поэтому можно как-то по другому
0
управление сложностью
1687 / 1300 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
11.07.2018, 11:58 30
Риназ, почему не сформируете сразу запрос, который выдавал бы нужную инфу ? Я имею про объединение в запросе.
0
1113 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
11.07.2018, 11:59 31
Цитата Сообщение от Риназ Посмотреть сообщение
Поэтому можно как-то по другому
Можно и одним запросом обойтись. Выше я приводил пример как это сделать.
0
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 532
11.07.2018, 12:12  [ТС] 32
Почтальон, Ведь надо найти сначала рефералов, которые попадают под условие, а потом их реферера. Или можно как-то по другому?

Добавлено через 3 минуты
sasha0012, не могли бы подправить мой код, который я скинул выше, а то я не знаю что куда вставить?

Добавлено через 5 минут
Не знаю, может вы меня не правильно поняли или я Вас.
Но Вот пример такого конкурса: https:// sharkpromotion. net/konkurs?type=ref

Добавлено через 3 минуты
Только надо с другими условиями. Там написано:
" и сделал не менее 10 оплачиваемых кликов по динамическим ссылкам, а также посещал аккаунт не позднее 25 дней(дня) назад."
А мне надо:
Рейтинг реферала не менее 1, записей не менее 1
0
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
11.07.2018, 12:22 33
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT
    t1.*, t2.name
FROM (
    SELECT
        REF, COUNT(id) AS COUNT
    FROM
        users
    GROUP BY
        REF
    HAVING 
        REF > 0
    ) AS t1
LEFT OUTER JOIN
    users AS t2
    ON
    t1.ref = t2.id
ORDER BY
    COUNT DESC
Группируем по рефереру, считаем у каждого кол-во рефералов, сортируем по количеству по убыванию и объединяем с users чтобы получить имя. Условие "записей не менее 1" добавьте сами.
0
1113 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
11.07.2018, 13:16 34
tarasalk, у него на всё про всё одна таблица.

Риназ,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$sql = mysqli_query($conn, "SELECT `ref`, COUNT(*) AS `total` FROM `users` WHERE `ref` > 0 AND `rating` > 0 AND `total` > 0 AND `date_reg` >= '$start_date' GROUP BY `ref`");
$arr_ref=[];
while($row = mysqli_fetch_array($sql)) 
{
    $arr_ref[$row['ref']] = $row['total'];
}
 
$arr_ref = arsort($arr_ref, SORT_NUMERIC);
 
$count_user=1;
foreach($arr_ref as $key => $value){
    
    echo 'referer'. $key .' priglasil: '. $value .' referalov i zanimaet '. $count_user .' mesto <br>';
    $count_user++;
    
    if($count_user==5){break;}
}
Добавлено через 5 минут
Возможно даже сработает сортировка с лимитом на уровне выборки:
SQL
1
SELECT `ref`, COUNT(*) AS `total` FROM `users` WHERE `ref` > 0 AND `rating` > 0 AND `total` > 0 AND `date_reg` >= '$start_date' GROUP BY `ref` ORDER BY `total` DESC LIMIT 5
Тогда останется только выводить.
0
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
11.07.2018, 13:46 35
Цитата Сообщение от sasha0012 Посмотреть сообщение
у него на всё про всё одна таблица.
Я для одной таблицы запрос написал. В вашем варианте нет имени юзера, а так в целом тоже самое. Хз только почему COUNT(*) AS `total`.
0
1113 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
11.07.2018, 15:19 36
Цитата Сообщение от tarasalk Посмотреть сообщение
Хз только почему COUNT(*) AS `total`
копипаст
Риназ, COUNT(ref)
0
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 532
11.07.2018, 21:20  [ТС] 37
sasha0012, ничего не выводит

Добавлено через 3 минуты
tarasalk, выводит не правильно и я не понимаю код, который написали.
" t1.*, t2.name" - у меня нет ничего подобного
0
1113 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
11.07.2018, 21:25 38
Риназ, вбейте это условие непосредственно в phpmyadmin:
SQL
1
SELECT `ref`, COUNT(`ref`) AS `total` FROM `users` WHERE `ref` > 0 AND `rating` > 0 AND `total` > 0 AND `date_reg` >= 'дату пропишите сами' GROUP BY `ref` ORDER BY `total` DESC LIMIT 5
посмотрите что выведет. Потом вбейте это:
SQL
1
SELECT `ref`, COUNT(`ref`) AS `total` FROM `users` WHERE `ref` > 0 AND `rating` > 0 AND `total` > 0 AND `date_reg` >= 'дату пропишите сами' GROUP BY `ref`
0
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
11.07.2018, 21:34 39
Цитата Сообщение от Риназ Посмотреть сообщение
выводит не правильно и я не понимаю код, который написали.
Все там правильно, вникайте. Я не могу вложить понимание в вашу голову.
t1, t2 - это алиасы.
users as t1, т.е. вместо users, можно писать t1.
t1.* выбрать все столбцы из t1.
t2.name выбрать name из t2.
left outer join - объединение таблиц.
having - аналог where при использовании group by

Выводит не правильно это не ответ. Когда вы научитесь давать всю инфу?
Что выводит? Что не правильно? Как должно быть?
0
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 532
11.07.2018, 21:45  [ТС] 40
Например: под условие попадает 5 рефералов. У двоих реферер 1, у двоих sasha0012,
Оба кода выводит одну и ту же информацию.

Добавлено через 2 минуты
tarasalk, выводит 2 пользователя,как и должно быть, но они не меняются даже если поменять значения в бд.

Добавлено через 3 минуты
Посмотрите, надо также как на этом сайте:
Не знаю, может вы меня не правильно поняли или я Вас.
Но Вот пример такого конкурса: https:// sharkpromotion. net/konkurs?type=ref

Добавлено через 3 минуты
Только надо с другими условиями. Там написано:
" и сделал не менее 10 оплачиваемых кликов по динамическим ссылкам, а также посещал аккаунт не позднее 25 дней(дня) назад."
А мне надо:
Рейтинг реферала не менее 1, записей не менее 1
0
11.07.2018, 21:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2018, 21:45
Помогаю со студенческими работами здесь

Как узнать, что Microsoft Agent уже загружен?
Kak Mozhno usnat shto Agent uzhe sagruzhen. Naprimer ispolsuyu 2 Agenta . I pered tem kak...

Как узнать, что тактирование порта уже включено?
Запускаю тактирование, например, PA. RCC-&gt;APB2ENR|= RCC_APB2ENR_IOPAEN; Как узнать, что...

Как узнать что соединения уже нет и перезапустить сервер?
Использую сервер с примера:...

Как узнать что пользователь ушел со страницы ???
Как узнать что пользователь ушел со страницы ??? А то ждать таймаута сесии нехорошо ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru