Система за съобщения между потребителите
cech трудност:

видян:
7707
Като за начало трябва да имате таблица с потребители, която да има
поне потребителско име (username) и пореден номер (ID). След това
трябва да създадете таблица в която ще се съхраняват съобщенията. За
целта ползвайте следния код:
CREATE TABLE `messages` ( `id` INT NOT NULL ,
`sender_id` INT NOT NULL ,
`receiver_id` INT NOT NULL ,
`title` VARCHAR( 255 ) NOT NULL ,
`message` TEXT NOT NULL ,
`time` INT NOT NULL ,
`read` TINYINT NOT NULL
)
Това създава таблица със седем полета:
1.
id-Пореден номер на съобщението
2. sender_id-Поредния номер на
потребителя, изпратил съобщението
3. receiver_id-Пореден номер на
потребителя, получaващ съобщението
4. title- Заглавие на
съобщението
5. message- Самото съобщение
6. time- Часът в
който е изпратено съобщението (unix timeshtamp формат)
7. read-
Дали съобщението е прочетено или не
След това трябва да
създадете три файла : inbox.php , view_message.php
, send_message.php
inbox.php
<?php
$link=mysql_connect("localhost",
"root", "") or die (mysql_error());/* променете в зависимост от вашите
настройки*/
mysql_query("SET NAMES cp1251");
mysql_select_db("test")
or die (mysql_error()); /*на мястото на "test" напишете името на базата
данни, която използвате*/
?>
<html>
<head>
<title>
Кутия
</title>
<script
type="text/javascript">
checked=false;
function checkedAll
(form1) {
var aa= document.getElementById('form1');
if
(checked == false)
{
checked = true
}
else
{
checked = false
}
for (var i =0; i < aa.elements.length; i++)
{
aa.elements[i].checked = checked;
}
}
</script>
<head>
<body>
<center>
<a
id="link" href="send_message.php">Изпрати съобщение</a><br
/>
</p>
<?php
$q_messages="SELECT *
FROM messages
WHERE receiver_id='$user_id'
ORDER BY `time` DESC";
$r_messages=mysql_query($q_messages, $link)
or die (mysql_error());
$count=mysql_num_rows($r_messages);
if
($count==0){
echo "<div align='center'>Нямате получени
съобщения!</div>";
} else {
?>
<form name="form1"
id="form1" method="post" action="">
<table width="750px"
align="right">
<tr>
<td id="link"
width="17px"><input type='checkbox' name='checkall'
onclick='checkedAll(form1);'></td>
<td id="link"
width="30px">№:</td>
<td id="link"
width="153px">От:</td>
<td id="link"
width="400px">Относно:</td>
<td id="link"
width="150px">Изпратен на:</td>
</tr>
<?php
function
get_sender(){
global $sender_id;
global $sender_name;
$q_function="SELECT name
FROM users
WHERE id='$sender_id'";
$r_function=mysql_query($q_function)
or die (mysql_error());
$row=mysql_fetch_array($r_function);
$sender_name=$row['name'];
}
$nomer=1;
while
($row=mysql_fetch_array($r_messages)){
$sender_id=$row['sender_id'];
$title=$row['title'];
$message=$row['message'];
$time=$row['time'];
$message_id=$row['id'];
$read=$row['read'];
$date=date('d-m-Y в G:i ч.', $time);
echo
"<tr>n<td><input name='checkbox[]' type='checkbox'
id='checkbox[]' value='";
echo $message_id;
echo
"'></td>n<td>";
echo $nomer;
echo
"</td>n<td><a id='link' href='view_user.php?user_id=";
echo $sender_id;
echo "'>";
get_sender();
echo
$sender_name;
echo "</a></td>n<td><a
id='link' href='view_message.php?id=";
echo $message_id;
echo "'>";
if ($read==1){
echo "<font
color='#555555'>";
}
echo $title;
if ($read==1){
echo "</font>";
}
echo
"</a></td>n<td>";
echo $date;
echo
"</td>n</tr>n";
$nomer++;
}
?>
<td
colspan="5" align="center"><input name="delete" type="submit"
id="delete" value="Изтрий"></td>
<?php
if($_POST['delete']){
for($i=0;$i<$count;$i++){
$del_id
= $_POST['checkbox'][$i];
$sql = "DELETE FROM messages WHERE
id='$del_id'";
$result = mysql_query($sql) or die (mysql_error());
}
if($result){
echo
"<meta http-equiv="refresh" content="0;URL=inbox.php">";
}
}
?>
</table>
<?php
}
>
</center>
</body>
</html>
send_message.php
<html>
<head>
<title>
Изпрати
Съобщение
</title>
</head>
<body>
<?php
$link=mysql_connect("localhost",
"root", "") or die (mysql_error());/* променете в зависимост от вашите
настройки*/
mysql_query("SET NAMES cp1251");
mysql_select_db("test")
or die (mysql_error()); /*на мястото на "test" напишете името на базата
данни, която използвате*/
if (isset($_POST['submit'])){
if(!empty($_POST['title'])&&!empty($_POST['receiver'])&&!empty($_POST['message'])){
$receiver=htmlspecialchars(mysql_real_escape_string($_POST['receiver']));
$title=htmlspecialchars(mysql_real_escape_string($_POST['title']));
$message=htmlspecialchars(mysql_real_escape_string($_POST['message']));
$q="SELECT id
FROM users
WHERE name='$receiver'";
$r=mysql_query($q, $link)or die
(mysql_error());
if (mysql_num_rows($r)==1){
$row=mysql_fetch_array($r);
$receiver_id=$row['id'];
$time=time();
$sql = "INSERT INTO `messages`
(
`id`,
`sender_id`,
`receiver_id`,
`title`,
`message`,
`time`,
`read`)
VALUES
(NULL, '$user_id', '$receiver_id', '$title', '$message',
'$time', '0');";
$sql_result=mysql_query($sql)or die
(mysql_error());
echo "<p>Съобщението изпратено
успешно!</p>";
$done=1;
} else {
echo "<div style='background-color:#ff8888'
align='center'>Не е намерен потребител с такова име!</div>";
}
} else {
echo "<div
style='background-color:#ff8888' align='center'>Всички полета са
задължителни!</div>";
}
}
if ($done==0){
?>
<form target="" method="post">
<div
style="float:left;width:100px;" align="right">
До:<br />
Относно:<br
/>
Съобщение:<br /><br /><br /><br
/><br />
</div>
<div
style="float:left;width:650px;">
<input type="text"
name="receiver"
<?php
if (isset($_GET['user'])){
$user=htmlspecialchars(mysql_real_escape_string($_GET['user']));
echo
"value='";
echo $user . "'";
}
?>><br />
<input
type="text" name="title"><br />
<textarea rows="5"
cols="70" name="message">
</textarea>
<input
type="submit" name="submit" value="Изпрати">
</form>
</div>
<?php
}
?>
</body>
</html>
view_message.php
<html>
<head>
<title>
Преглед
на Съобщение
</title>
</head>
<body>
<?php
$link=mysql_connect("localhost",
"root", "") or die (mysql_error());/* променете в зависимост от вашите
настройки*/
mysql_query("SET NAMES cp1251");
mysql_select_db("test")
or die (mysql_error()); /*на мястото на "test" напишете името на базата
данни, която използвате*/
$q="SELECT *
FROM messages
WHERE `id`='$_GET[id]' AND `receiver_id`='$user_id'";
$r=mysql_query($q,
$link) or die (mysql_error());
$row=mysql_fetch_array($r);
if
(mysql_num_rows($r)==0){
echo "<div
style='background-color:#ff8888' align='center'>Съжалявам, но не
откривам резултат.</div>";
} else {
$sender_id=$row['sender_id'];
$title=$row['title'];
$message=$row['message'];
$time=$row['time'];
$date=date('d-m-Y
в G:i ч.', $time);
$read=$row['read'];
$q_user="SELECT name
FROM users
WHERE id='$sender_id'";
$r_user=mysql_query($q_user)
or die (mysql_error());
$row=mysql_fetch_array($r_user);
$sender_name=$row['name'];
if
($read==0){
$q_read="UPDATE messages
SET `read` = '1'
WHERE `id` =$_GET[id]";
$r_read=mysql_query($q_read) or die
(mysql_error());
}
echo "<hr>От:";
echo $sender_name;
echo
"<br />Относно:";
echo $title;
echo "<br />Изпратен
на:";
echo $date;
echo "<br />Съобщение:<p>";
echo
$message . "</p><hr>";
}
?>
</body>
</html>
ЗАБЕЛЕЖКА:
В
началото на всеки файл в PHP кода трябва да предоставите ID на
влезналия (логнатия) потребител под името: "user_id". Например:
$user_id=$logged_user.
Иначе скрипта няма да работи!!!!
Забранявам
копирането му в други сайтове без моето разрешение!!!
Коментари (4)