Маркиране на съобщение като прочетено

C++ JAVA
Post Reply
emptyy
Нов
Нов
Posts: 18
Joined: Tue Sep 18, 2012 10:43 am

Маркиране на съобщение като прочетено

Post by emptyy » Mon May 04, 2020 5:40 pm

Имам група Екип, всяка от която получава според teamnum оплаквания/въпроси и т.н. Идеята ми е следна, след като член от екипа отвори определено съобщени да го маркира като прочетено и да не му показва вече маркираното, но да показва не маркираните. Но на останалите от екипът да им показва че имат непрочетено съобщение.

Пример:
група Модератор има 10 членове, и 3 съобщения, един от екип Модератор маркира 1 съобщене и остават още 2 да прочете. Но на останалите от екипът да си им показва че имат не прочетени 3 съобщения. Надявам се че обяснението е подобаващо...

contact.php

Code: Select all

<form id="comment_form" action="" method="post">
<tr><td>Екип: *</td>
<td><select name='teamnum' class='option'>
		<option value='' selected='selected'>Моля изберете екип</option>
		<option value='1'>Администратор</option>
		<option value='2'>Екип Поддръжка</option>
		<option value='3'>Модератор</option>
		<option value='6'>Екип Банове</option>
	</select>
/td></tr>
</form>
<php
mysqli_query($conn, "INSERT INTO `team_contact` (`userd`,`teamnum`,`tema`,`text_message`,`created_contac`) VALUES ('".$userd."','".$teamnum."','".$tema."','".$text_message."', '".$created_contac."')");
?>
inbox.php

Code: Select all

<?php
					$box = isset($_GET['box']) ? trim($_GET['box']) : "";
					if(!$box){
						?>
						<div class="boxtitle"><h3 class="boxtitlebg"><?php echo $title; ?></h3></div>
						<div class="boxcont">
							<?php
							$sql = mysqli_query($conn, "SELECT * FROM `team_contact` WHERE `teamnum`='".ranks_num($level)."' ORDER BY `id`");
								?>
								<table style="width: 100%; font-size:11px; text-align:center;">
									<tr style="background: #43677F;color: #ffffff;height:21px;">
										<td width="50%" style="text-align: center; border: 1px solid #<?php echo $colorsolid;?>; padding: 5px;">Относно</td>
										<td width="35%" style="text-align: center; border: 1px solid #<?php echo $colorsolid;?>; padding: 5px;">От</td>
										<td width="15%" style="text-align: center; border: 1px solid #<?php echo $colorsolid;?>; padding: 5px;">Дата</td>
									</tr>
									<?php 
									while($row = mysqli_fetch_assoc($sql)){
										?>
										<tr class="cs_hover">
											<td style="border: 1px solid #<?php echo $colorsolid;?>; repeat-x;"><a href="inbox.php?box=<?php echo $row['id']; ?>" title="Виж съобщението !"><?php echo $row['tema']; ?></a></td>
											<td style="border: 1px solid #<?php echo $colorsolid;?>; repeat-x;"><?php echo $row['userime']; ?></td>
											<td style="border: 1px solid #<?php echo $colorsolid;?>; repeat-x;"><?php echo strftime("%d-%b-%y в %H:%M", $row['created_contac']); ?></td>
										</tr>
										<?php
									}
									?>
								</table>
								
						</div>
						<div class="cl"></div>
						<?php
					}else{
						?>
						<div class="boxtitle"><h3 class="boxtitlebg"><?php echo $title; ?></h3></div>
						<div class="boxcont">
							<?php
								$sql = mysqli_query($conn, "SELECT * FROM `team_contact` where `id`='".$box."'");
								while($row = mysqli_fetch_assoc($sql)){
									?>
									<table width="100%" cellspacing="2" cellpadding="0" border="0">
										<td width="20%" style="text-align: center; border: 1px solid #<?php echo "".$colorsolid."";?>; padding: 5px;">От</td><td width="80%" style="text-align: center; border: 1px solid #<?php echo "".$colorsolid."";?>; padding: 5px;"><?php echo $row['userime']; ?><br /><br /></td></tr>
										<td width="20%" style="text-align: center; border: 1px solid #<?php echo "".$colorsolid."";?>; padding: 5px;">Дата</td><td width="80%" style="text-align: center; border: 1px solid #<?php echo "".$colorsolid."";?>; padding: 5px;"><?php echo strftime("%d-%b-%y в %H:%M", $row['created_contac']); ?><br /><br /></td></tr>
										<td width="20%" style="text-align: center; border: 1px solid #<?php echo "".$colorsolid."";?>; padding: 5px;">E-Mail</td><td width="80%" style="text-align: center; border: 1px solid #<?php echo "".$colorsolid."";?>; padding: 5px;"><a href="mailto:<?php echo $row['email']; ?>" title="Отговори на <?php echo $row['userime']; ?>"><?php echo $row['email']; ?></a><br /><br /></td></tr>
										<td width="20%" style="text-align: center; border: 1px solid #<?php echo "".$colorsolid."";?>; padding: 5px;">Относно</td><td width="80%" style="text-align: center; border: 1px solid #<?php echo "".$colorsolid."";?>; padding: 5px;"><?php echo $row['tema']; ?><br /><br /></td></tr>
										<td width="20%" style="text-align: center; border: 1px solid #<?php echo "".$colorsolid."";?>; padding: 5px;">Съобщение</td><td width="80%" style="border: 1px solid #<?php echo "".$colorsolid."";?>; padding: 5px;"><?php echo $row['text_message']; ?></td></tr>
									</table>
									<?php
								}
							?>
						</div>
						<?php
					}
					?>
					

User avatar
Ticketa
Турист
Турист
Posts: 481
Joined: Mon Feb 27, 2012 1:54 pm
Answers: 23
Location: in /root
Contact:

Re: Маркиране на съобщение като прочетено

Post by Ticketa » Mon May 04, 2020 6:55 pm

Правиш една таблица , в нея записваш съобщение ИД, група ИД , член ИД и готово? (записа се добавя когато потребителя е прочел съобщение)

Правиш проверка коя група и кой член както и кое съмнение ИД съществува в таблицата(новата) и кои не и от резултата изваждаш прочетено/непрочетено или направо непоказваш прочетените

emptyy
Нов
Нов
Posts: 18
Joined: Tue Sep 18, 2012 10:43 am

Re: Маркиране на съобщение като прочетено

Post by emptyy » Tue May 05, 2020 7:51 am

Преди да потърся помощ тук съм опитвал различни начини.
Аз таблица съм създал.

Code: Select all

CREATE TABLE `team_contact_views` (
  `id` int(11) NOT NULL,
  `contact_id` int(11) DEFAULT NULL,
  `teamnum` int(11) DEFAULT NULL,
  `teamnum_view` int(11) DEFAULT NULL
)
Но не знам как да направя проверката ?

Code: Select all

$sql = mysqli_query($conn, "SELECT * FROM `team_contact` JOIN `team_contact_views` ON (team_contact.teamnum=team_contact_views.teamnum_view) WHERE `teamnum`='".$level."'");

uphero
Потребител
Потребител
Posts: 750
Joined: Mon Feb 20, 2012 12:26 pm
Answers: 32
Location: Казанлък
Contact:

Re: Маркиране на съобщение като прочетено

Post by uphero » Tue May 05, 2020 11:46 am

сложи им един флаг в базата на тия съобщения - четене/нечетено,видяно/заебано и тн.

User avatar
topchokt
Гуру
Гуру
Posts: 2150
Joined: Fri Nov 14, 2008 5:48 am
Answers: 22
Location: Карнобат

Re: Маркиране на съобщение като прочетено

Post by topchokt » Tue May 05, 2020 12:48 pm

Ще ти трябва допълнителна таблица, където да записваш кой го е видял.
От таблицата, която си показал, виждам, че там съобщенията са на база потребителска група, а не конкретен член, което изключва възможността да можеш да го направиш с флаг в същата таблица. Всъщност, може и с поле в същата таблица - например текстово, където в json формата да пазиш ID-тата на потребителите, които са го видяли.

Дали ще използваш отделна таблица или поле - избора е твой.

tyrla4eto
Нов
Нов
Posts: 153
Joined: Sat Aug 20, 2011 6:13 pm

Re: Маркиране на съобщение като прочетено

Post by tyrla4eto » Thu Jun 04, 2020 1:59 pm

Най-лесният вариант за който се сещам е да си направиш още 1 табличка в SQL примерно 'viewed' и при отваряне на дадено съобщение да записваш вътре ID на потребителя, който го е отворил и ID на съобщението което е отворено. След което като вадиш съобщенията правиш 1 заявка да провериш дали този потребител (ID-то) е отворил това съобщение (ID-то), т.е дали имаш запис в таблицата. Ако имаш запис, значи го е прочел, ако няма запис, значи не е.
Не ти трябва да пишеш вътре групи, статус на съобщението и т.н.

Fakeheal
Гуру
Гуру
Posts: 2704
Joined: Sat Apr 17, 2010 6:37 am
Answers: 351
Location: /r/eyebleach
Contact:

Re: Маркиране на съобщение като прочетено

Post by Fakeheal » Mon Jun 08, 2020 5:45 pm

topchokt wrote:
Tue May 05, 2020 12:48 pm
Всъщност, може и с поле в същата таблица - например текстово, където в json формата да пазиш ID-тата на потребителите, които са го видяли.
Може и да смени ид-тата на потребителите си да са прости числа и в колона да държи произведението на ид-тата на всички потребители, които са видели съобщението. И ако въпросната колона се дели на ид-то на потребителя без остатък, значи я е видял. :dance:

Post Reply