Помогни ни да направим Uroci.net по - богат! Добави урок

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

PHP » PHP
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.

Иначе скрипта няма да работи!!!!

 

 

Урока е предоставен от www.it-uroci.eu

 

Забранявам копирането му в други сайтове без моето разрешение!!!



Коментари (4)

nasko569 на 09.10 2010 в 13:15ч.
Перфектен урок :)
nasko569 на 10.10 2010 в 13:45ч.
Всичко тръгна на сайта ми, с един приятел си изпратихме взаимно съобщения отброяват се горе, всичко върви безупречно, благодаря много на пичагата, качил този урок, такъв и да търсиш няма да намериш!
danieldrebus на 23.06 2011 в 10:58ч.
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in D:\xampp\htdocs\neshta\chatbox\index.php on line 83 Защо е така оправих MySql-а и сложих Sql-a и промених най от горе да се свърже какво още :? Дай линк за да я изтегля или ми пиши лс .
mitkodkn на 30.08 2011 в 13:14ч.
Моля, помогнете ми! Искам да направя така, че сайта ми да го виждат и други хора освен аз, като хоствам с Localhost.

Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: IT Новини