Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 1
Регистрация: 15.02.2017
Сообщений: 93

Создаю чат (как вывести приват)

21.01.2020, 02:05. Показов 1070. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте,вот сам код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
$max = 10;
$count = mysql_result(mysql_query('SELECT COUNT(*) FROM `chat` '),0);
if($count >= 100){ $count=100;}
$pages = ceil($count/$max);
$page = _string(_num($_GET['page']));
 
if($page > $pages) {$page = $pages;}
if($page < 1) {$page = 1;}
$start = $page * $max - $max;
$tim=time()-604800;
 
if($count > 0) {
$q = mysql_query("SELECT * FROM `chat` WHERE `time`>'$tim' AND `privat`='0' ORDER BY `id` DESC LIMIT $start, $max");
$qr = mysql_query("SELECT * FROM `chat` WHERE `time`>'$tim' AND `privat`='1' AND (`user`='$user[login]' OR `to`='$user[login]') ORDER BY `id` DESC ");
$privat = mysql_fetch_array($qr);
  while($row = mysql_fetch_array($q)) {
      echo'<div class="empty_block">';
 
  $sender = mysql_query('SELECT * FROM `users` WHERE `id` = "'.$row['user'].'"');
  $sender = mysql_fetch_array($sender);
  if($user['access'] > 0) {//Удаляем сообщение
  echo'<a href="/ban/'.$sender['id'].'/"><span style="color:red">[m]</span></a>';}
$i_clan_memb = mysql_query('SELECT * FROM `clan_memb` WHERE `user` = "'.$row['user'].'"');
  $i_clan_memb = mysql_fetch_array($i_clan_memb);
  if($i_clan_memb) {
$CLAN='<img src="/images/ico/png/clan.png" alt="*"/>';
  }
 
if($user[login]==$row[to] OR $user[login]==$row[user]){
    $colors="#cdd840";
}else{
    $colors="white";
}
if($row[to]!=''){
echo"<a href='/chat/?to=$row[user]'> <span style=\"color:$colors\"> $CLAN $row[user] </span> </a> для <a href='/chat/?to=$row[to]'> <span style=\"color:$colors\"> $CLAN $row[to] </span> </a> :";
}else{
echo" <a href='/chat/?to=$row[user]'> <span style=\"color:$colors\"> $CLAN $row[user] </span> </a> :";  
}
 
 
echo'<span style="float: right;"><small>'.vremja($row['time']).'</small></span>';
 
if($user['access'] > 2) {//Удаляем сообщение
echo'<span style="float: right;"><a href="/chat/delmsg/'.$row['id'].'/"><span style="color:red">[x]</span></a></span>';}
 
echo'<font color="'.color($sender[id]).'">';//Цвет сообщений
echo''.bbcode(smile($row['text'])).'';//Сообщение
echo'</font>';//Закрываем цвет сообщений
 
  echo'</div>
<div class="line"></div>';
}
 
 
}else{ 
echo '<div class="line"></div>
<div class="empty_block item_center"> Сообщений нет </div>
<div class="line"></div>';
}
 
echo''.pages('/chat/?').'';
Т.е. все в нем есть,но не могу понять как вывести приват в месте с общими сообщениями.

Думал сделать так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 while($row = mysql_fetch_array($q)) {
      echo'<div class="empty_block">';
 
  $sender = mysql_query('SELECT * FROM `users` WHERE `id` = "'.$row['user'].'"');
  $sender = mysql_fetch_array($sender);
  if($user['access'] > 0) {//Удаляем сообщение
  echo'<a href="/ban/'.$sender['id'].'/"><span style="color:red">[m]</span></a>';}
$i_clan_memb = mysql_query('SELECT * FROM `clan_memb` WHERE `user` = "'.$row['user'].'"');
  $i_clan_memb = mysql_fetch_array($i_clan_memb);
  if($i_clan_memb) {
$CLAN='<img src="/images/ico/png/clan.png" alt="*"/>';
  }
 
if($user[login]==$row[to] OR $user[login]==$row[user]){
    $colors="#cdd840";
}else{
    $colors="white";
}
if($row[to]!=''){
echo"<a href='/chat/?to=$row[user]'> <span style=\"color:$colors\"> $CLAN $row[user] </span> </a> для <a href='/chat/?to=$row[to]'> <span style=\"color:$colors\"> $CLAN $row[to] </span> </a> :";
}else{
echo" <a href='/chat/?to=$row[user]'> <span style=\"color:$colors\"> $CLAN $row[user] </span> </a> :";  
}
$qr = mysql_query("SELECT * FROM `chat` WHERE `time`>'$tim' AND `privat`='1' AND (`user`='$user[login]' OR `to`='$user[login]') ORDER BY `id` DESC");
  while($privat = mysql_fetch_array($qr)) {
      echo"<a href='/chat/?to=$privat[user]'> <span style=\"color:$colors\"> $CLAN $privat[user] </span> </a> для <a href='/chat/?to=$privat[to]'> <span style=\"color:$colors\"> $CLAN $privat[to] </span> </a> :";
      echo''.bbcode(smile($privat['text'])).'';//Сообщение
  }
 
echo'<span style="float: right;"><small>'.vremja($row['time']).'</small></span>';
 
if($user['access'] > 2) {//Удаляем сообщение
echo'<span style="float: right;"><a href="/chat/delmsg/'.$row['id'].'/"><span style="color:red">[x]</span></a></span>';}
 
echo'<font color="'.color($sender[id]).'">';//Цвет сообщений
echo''.bbcode(smile($row['text'])).'';//Сообщение
echo'</font>';//Закрываем цвет сообщений
 
  echo'</div>
<div class="line"></div>';
}
Но сообщения привата дублируются рядом с другими сообщениями
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.01.2020, 02:05
Ответы с готовыми решениями:

Создаю чат. Как сделать модуль "Кто онлайн"?
Всем привет, как сделать модуль &quot;Кто онлайн&quot; в чате, пишу чат на SocketServer &amp; SocketClient.

Как сделать поток с доступом в приват класса?
В общем есть поток, нужно чтобы он имел доступ к приватным методам одного класса, как это реализовать?

Telegram.Bot Как используя бота пригласить пользователя в приват канал?
Не подскажите как можно при помощи бота пригласить пользователя в приват канал, зная номер этого юзера?

1
Невнимательный
 Аватар для ft4l
2835 / 1260 / 357
Регистрация: 08.02.2013
Сообщений: 7,332
Записей в блоге: 2
21.01.2020, 05:04
Лучший ответ Сообщение было отмечено TopusT как решение

Решение

Цитата Сообщение от TopusT Посмотреть сообщение
с общими сообщениями.
типа просто так же по id отсортировано как если получить одним запросом
PHP
1
2
3
4
5
6
7
8
9
"SELECT * FROM `chat`
WHERE `time`>'$tim'
    AND (`privat`='0'
        OR `privat`='1'
        AND (
            `user`='{$user[login]}' OR `to`='{$user[login]}'
        )
    )
ORDER BY `id` DESC LIMIT $start, $max"
если не напутал со скобками ))

Цитата Сообщение от TopusT Посмотреть сообщение
Создаю чат
Почему php_mysql ? ))) его выпилили из новых версий php
php_pdo_mysql большинством используется или php_mysqli
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.01.2020, 05:04
Помогаю со студенческими работами здесь

Создаю две структуры с данными, хочу вывести их на экране.
Добрый день! Пожалуйста, помогите найти ошибку! Создаю две структуры с данными, хочу вывести их на экране. После компиляции...

приват "комната" для чата, как это сделать на сервере?
Доброго времени суток гос-да. Появилась потребность в приват &quot;комнате&quot; чата, в которой должно быть не более 7ми клиентов. Если кто...

Приват в чате
В общем есть таблица в базе id | from | to | message | is_private | date ид / кто / кому / сообщение / приват / дата Кусок кода с...

Получить доступ в приват
Не получается получить доступ к полям привата. Вот написал такой код на с++. #include &lt;iostream&gt; using namespace std; ...

API Приват Банк
API Приват Банк. Пытаюсь получить текущий баланс по счету https://api.privatbank.ua/balance.html. Все время получаю ошибку invalid...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru