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

emptyy

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

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

contact.php
Код:
<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
Код:
<?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
					}
					?>
 
Правиш една таблица , в нея записваш съобщение ИД, група ИД , член ИД и готово? (записа се добавя когато потребителя е прочел съобщение)

Правиш проверка коя група и кой член както и кое съмнение ИД съществува в таблицата(новата) и кои не и от резултата изваждаш прочетено/непрочетено или направо непоказваш прочетените
 
Преди да потърся помощ тук съм опитвал различни начини.
Аз таблица съм създал.
Код:
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
)

Но не знам как да направя проверката ?
Код:
$sql = mysqli_query($conn, "SELECT * FROM `team_contact` JOIN `team_contact_views` ON (team_contact.teamnum=team_contact_views.teamnum_view) WHERE `teamnum`='".$level."'");
 
сложи им един флаг в базата на тия съобщения - четене/нечетено,видяно/заебано и тн.
 
Ще ти трябва допълнителна таблица, където да записваш кой го е видял.
От таблицата, която си показал, виждам, че там съобщенията са на база потребителска група, а не конкретен член, което изключва възможността да можеш да го направиш с флаг в същата таблица. Всъщност, може и с поле в същата таблица - например текстово, където в json формата да пазиш ID-тата на потребителите, които са го видяли.

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

Може и да смени ид-тата на потребителите си да са прости числа и в колона да държи произведението на ид-тата на всички потребители, които са видели съобщението. И ако въпросната колона се дели на ид-то на потребителя без остатък, значи я е видял. :dance:
 

Горе