Перейти к содержимому



Личная переписка между пользователями

#1 oduvan4ik

oduvan4ik
  • Пользователь
  • 45 сообщений
  • Репутация: 0
0

Отправлено 10 Август 2008 - 11:29

Подскажите как можно организовать личную переписку между пользователями ??? и например чтобы при получение сообщений выдавалось кол-во полученных, а потом это значение убиралось при прочтении ???

 

 

  • 0

#2 Прокурор

Прокурор
  • Пользователь
  • 222 сообщений
  • Репутация: 0

Отправлено 10 Август 2008 - 11:32

Если у Вас определенный движок, то для этого существуют специальные модули или компоненты. По-моему на Joomla что-то такое есть.
  • 0

#3 Vialls

Vialls
  • Пользователь
  • 581 сообщений
  • Репутация: 1

Отправлено 10 Август 2008 - 14:12

MySQL, две таблицы - пользователи, личный сообщения.
Таблица пользователей содержит примерно след. поля:
id - идентификатор, name - имя, password - пароль, еще какие-нибудь по нужде.
У таблицы сообщений:
id - идентификатор; from - ID пользователя, который отправил сообщение; to - ID пользователя, от которого отправлено сообщение; message - текст сообщения; read - если прочтенное, то значение - 1, если нет, то - 0.
Ну, а сам скрипт, состоит в основном из SQL запросов :)
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 19 Август 2008 - 01:45

Vialls +1
Но всё равно, человеку сложно понять...
Приотсылании сообщения, записывается id получателя, которое находится по имени + само сообщение + поле прочтения 1 или 0
При заходе в ЛС, id пользователя находятся все сообщения адресованые ему. Всё очень просто
  • 0

#5 dimka

dimka
  • Пользователь
  • 1 сообщений
  • Репутация: 0

Отправлено 29 Июнь 2009 - 21:45

А нет ли ни у кого готового скрипта, или хотябы набросок?
Вот тоже понадобилась переписку сделать.

Если есть у кого - поделитесь, буду очень благодарен.
  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 30 Июнь 2009 - 22:07

dimka, за 10 минут вот что получилось, реальный набросок:
1) Файл с формой отправки и занесением письма pm.php
<?php
//подключаемся к БД

if(!empty($_POST['pm_post']))
{
   //обезапасим себя
   $_POST['pm_from'] = intval($_POST['pm_from']);
   $_POST['pm_to'] = mysql_escape_string($_POST['pm_to']);
   $_POST['pm_subject'] = mysql_escape_string($_POST['pm_subject']);
   $_POST['pm_msg'] = mysql_escape_string($_POST['pm_msg']);

   //найдём кому отправляем и возьмём его id
   $sql = "SELECT * FROM users WHERE name LIKE '{$_POST['pm_to']}' LIMIT 1";
   $resource = mysql_query($sql);
   if(mysql_num_rows($resource) == 0)
   {
	  //если таковых не нашлось
	  header("location:".$_SERVER['PHP_SELF']);
	  exit();
   }
   $array = mysql_fetch_array($resource);
   $id = intval($array['id']);

   //добавляем сообщение юзеру(id_msg,id_from,id_to,subject,msg)
   $sql = "INSERT INTO pm (id_from, id_to, subject, msg) VALUES ({$_POST['pm_from']}, {$id}, '{$_POST['pm_subject']}', '{$_POST['pm_msg']}')";
   mysql_query($sql);
}

?>

<html>
<head>
<title>PM</title>
</head>
<body>
<a href="pm.php">Отправить</a> | <a href="from.php">Отправленные</a> | <a href="to.php">Полученные</a>
<form method="POST" action="">
<input type="hidden" name="pm_from" value="[id_отправителя_из_БД]">
<br>
Имя получателя: <input type="text" name="pm_to" value="">
<br>
Тема: <input type="text" name="pm_subject" value="">
<br>
<textarea name="pm_msg"></textarea>
<br>
<input type="submit" name="pm_post" value="Отправить ЛС">
</form>
</body>
</html>

2) Файл вывода отправленных писем from.php
<?php
//подключаемся к БД

$sql = "SELECT pm.subject, pm.msg, users.name FROM pm LEFT JOIN users ON pm.id_to = users.id WHERE id_from=[id_текущего_пользователя]";
$resource = mysql_query($sql);
if(mysql_num_rows($resource) != 0)
{
   $array = array();
   while($array[] = mysql_fetch_assoc($resource));
}


?>

<html>
<head>
<title>PM - отправленные</title>
</head>
<body>
<a href="pm.php">Отправить</a> | <a href="from.php">Отправленные</a> | <a href="to.php">Полученные</a>
<br>
<h1>Отправленные</h1>

<?php
if(empty($array))
{
   echo "Нет отправленных писем";
} else {
   foreach($array as $value)
   {
	  echo "<b>{$value['name']} - {$value['subject']}</b><br>{$value['msg']}<br><br>";
   }
}
?>

<br>
</body>
</html>

3) Файл вывода полученных писем to.php
<?php
//подключаемся к БД

$sql = "SELECT pm.subject, pm.msg, users.name FROM pm LEFT JOIN users ON pm.id_from = users.id WHERE id_to=[id_текущего_пользователя]";
$resource = mysql_query($sql);
if(mysql_num_rows($resource) != 0)
{
   $array = array();
   while($array[] = mysql_fetch_assoc($resource));
}


?>

<html>
<head>
<title>PM - полученные</title>
</head>
<body>
<a href="pm.php">Отправить</a> | <a href="from.php">Отправленные</a> | <a href="to.php">Полученные</a>
<br>
<h1>Полученные</h1>

<?php
if(empty($array))
{
   echo "Нет полученных писем";
} else {
   foreach($array as $value)
   {
	  echo "<b>{$value['name']} - {$value['subject']}</b><br>{$value['msg']}<br><br>";
   }
}
?>

<br>
</body>
</html>

  • 0


Оформление форума – IPBSkins.ru