Struktura tabeli mysql:
Kod
CREATE TABLE `msg` (
`msg_id` int(11) NOT NULL auto_increment,
`msg_temat` varchar(30),
`msg_tresc` text,
`msg_nadawca` int(11),
`msg_odbiorca` int(11),
`msg_przeczytane` tinyint(1), -- czy wiadomość została przeczytana
`msg_data` datetime,
`msg_czyja` tinyint(1),
PRIMARY KEY (`msg_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
`msg_id` int(11) NOT NULL auto_increment,
`msg_temat` varchar(30),
`msg_tresc` text,
`msg_nadawca` int(11),
`msg_odbiorca` int(11),
`msg_przeczytane` tinyint(1), -- czy wiadomość została przeczytana
`msg_data` datetime,
`msg_czyja` tinyint(1),
PRIMARY KEY (`msg_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Pole msg_czyja pozwala zidentyfikować kto napisał wiadomość. Przy wysłaniu wiadomości powstają dwa wpisy do bazy... msg_czyja = 1 - wiadomość wyświetlana w skrzynce nadawczej nadawcy, msg_czyja = 0 - wiadomość wyświetlana w skrzynce odbiorczej odbiorcy.
Skrypt wysyłający wiadomość:
<?php require_once('connect.php'); require_once('funkcje/skrypty.php'); ?> <html> <head> <title>wylij wiadomoć</title> <?php include('tpl/head.php') ?> </head> <body> <?php include('tpl/naglowek.php') ?> <div id="srodek"> <? { //jeżeli użytkownik jest zalogowany: //sprawdzenie czy zmienna w GET jest liczba: //sprawdzenie czy istnieje taki odbiorca: list($records) = mysql_fetch_row(mysql_query("SELECT count(*) FROM users WHERE login='$odbiorca'")); if ($fotoid == '0' or $records == '0' or $fotoid == NULL) { } else { if ($_POST['wiadomosc']) { //sprawdzenie wprowadzonych przez uzytkownika danych do formularza wiadomosci: if ($_POST['tresc'] == NULL) { $error1 = "Wpisz tresc wiadomosci"; } else { $wyslij ="OK"; } } { //jeżeli wszystko jest OK to wiadomosc jest dodawana do bazy: //Wiadomoć do skrzynki odbiorczej odbiorcy -> czyja=0, wiadomoć do skrzynki nadawczej nadawcy -> czyja =1 $dodaj_nad = "INSERT INTO `msg`(`msg_id`, `msg_temat`, `msg_tresc`, `msg_nadawca`, `msg_odbiorca`, `msg_przeczytane`, `msg_data`, `msg_czyja`) VALUES ('', 'Wiadomość prywatna', '$wiadomosc', '$nadawca', '$odbiorca', '0', DATE_ADD(NOW(),INTERVAL 6 HOUR), '1')"; $dodaj_odb = "INSERT INTO `msg`(`msg_id`, `msg_temat`, `msg_tresc`, `msg_nadawca`, `msg_odbiorca`, `msg_przeczytane`, `msg_data`, `msg_czyja`) VALUES ('', 'Wiadomość prywatna', '$wiadomosc', '$nadawca', '$odbiorca', '0', DATE_ADD(NOW(),INTERVAL 6 HOUR), '0')"; //Dodanie wiadomoci do BD: //komunikat o powodzeniu i przekierowanie do profilu uzytkownika do ktorego poszla wiadomosc } else { //jeżeli są błędy w formularzu lub pierwszy raz formularz został wywietlony: //komunikat dot. kont premium $premium = mysql_fetch_array(mysql_query("SELECT `premium` FROM `users` WHERE `login`='$odbiorca'")); if ($premium['premium'] == '0') echo '<br /><br /><br /><div id="alert">PrĂłbujesz wysĹ‚ać wiadomość do uĹĽytkownika, ktĂłry nie posiada konta premium.<br /> BÄ™dzie on widziaĹ‚ otrzymanÄ… od Ciebie wiadomość, jednakĹĽe nie bÄ™dzie mĂłgĹ‚ jej przeczytać dopĂłki nie uaktywni usĹ‚ugi premium.</div><br /><br />'; ?> <center> <table> <tr> </tr> <tr> <td><textarea name="tresc" rows="4" cols="80"></textarea></td> </tr> <tr> <tr> <td><input type="submit" name="wiadomosc" value="WyĹ›lij" class="button" /></td> </tr> </table> </form> </center> <br /><br /> <? } } } else { //jeżeli użytkownik nie jest zalogowany: } ?> </div> <?php include('tpl/stopka.php'); ?> </body> </html>
Skrypt wyświetlający wiadomość w kolejnym poście, gdyż aktualne jest za długi... ->
Skrypt wyświetlający wiadomość:
<? if ($_GET['box'] == "out") { //zmienna w GET wskazuje na skrzynkę nadawczą: //Tworzymy menu dla skrzynki wiadomosci wyslanych: $nadawca = $users['login']; //tablica users tworzona jest w pliku php który includuje ten kod { //jeżeli zmienna GET['show'] jest przesłana w linku to wyswietlamy wiadomosc o przesłanym id (jako wartoc GET[show]: if ($msgid == '0') { //jezeli zmienna show nie jest liczba to komunikat o bledzie } else { //jezeli jest liczba to laczymy sie z baza i wyciagamy dane o wiadomosci $connect = mysql_query("SELECT * FROM `msg` WHERE `msg_id`='$msgid' AND `msg_nadawca`='$nadawca' AND `msg_czyja`='1'"); if ($records == '1') { //jezeli w bazie danych jest wiadomosc o przeslanym id i o okreslonym odbiorcy i ma zmienna czyja=0: //oznaczenie wiadomoci jako przeczytana: mysql_query("UPDATE `msg` SET `msg_przeczytane`='1' WHERE `msg_id`='$msgid' AND `msg_nadawca`='$nadawca' AND `msg_czyja`='1'") } else { //jezeli nie ma takiej wiadomoci to komunikat o bledzie } } } else { //jeżeli zmienna GET[show] jest pusta to wyswietlamy wiadomoci wysłane //Wyswietlanie wiadomosci wyslanych: $temp = mysql_query("SELECT * FROM msg WHERE msg_nadawca='$nadawca' AND msg_czyja='1' ORDER BY msg_data DESC"); //pierwszy wiersz z oznaczeniami nazw kolumn: if ($users['premium'] == '0') { //jeżeli uztkownik nie ma premium to komunikat i zachęta do zakupu echo "Tylko użytkownicy premium mają dostęp do systemu wiadomoci.<br />Aktywuj usługę premium i korzystaj z systemu wiadomoci -link- !"; } else { //jeżeli ma premium to wyswietlamy wiadomosci if ($ile == 0) { } else { $x = 0; { if ($msg['msg_przeczytane'] == '0') { $b = "<b>"; $bb = "</b>"; } $x = $x+1; } } } } } else { //tutaj skrzynka odbiorcza:
else { //Tworzymy menu dla skrzynki odbiorczej: $odbiorca = $users['login']; { //jeżeli zmienna GET['show'] jest przesłana w linku to wyswietlamy wiadomosc o przesłanym id: if ($msgid == '0') { //jezeli zmienna show nie jest liczba to komunikat o bledzie } else { //jezeli jest liczba to laczymy sie z baza i wyciagamy dane o wiadomosci $connect = mysql_query("SELECT * FROM `msg` WHERE `msg_id`='$msgid' AND `msg_odbiorca`='$odbiorca' AND `msg_czyja`='0'"); if ($records == '1') { //jezeli w bazie danych jest wiadomosc o przeslanym id i o okreslonym odbiorcy i ma zmienna czyja=0: mysql_query("UPDATE `msg` SET `msg_przeczytane`='1' WHERE `msg_id`='$msgid' AND `msg_odbiorca`='$odbiorca' AND `msg_czyja`='0'") } else { //jezeli nie to komunikat o bledzie } } } else { //Wyswietlanie wiadomosci w skrzynce odbiorczej: $temp = mysql_query("SELECT * FROM msg WHERE msg_odbiorca='$odbiorca' AND msg_czyja='0' ORDER BY msg_data DESC"); $temp_admin = mysql_query("SELECT * FROM msg WHERE msg_odbiorca='$odbiorca' AND msg_nadawca='Administracja' AND msg_czyja='0' ORDER BY msg_data DESC"); //pierwszy wiersz z oznaczeniami nazw kolumn: if ($users['premium'] == '0') { //jeżeli uztkownik nie ma premium to wyswietlam wiadomosci od admina, komunikat i zachęta do zakupu $x = 0; { if ($admin['msg_przeczytane'] == '0') { $b = "<b>"; $bb = "</b>"; } $x = $x+1; } echo "<br /><br />Tylko użytkownicy premium mają dostęp do systemu wiadomoci.<br />Aktywuj usługę premium i korzystaj z systemu wiadomoci -link- !"; } else { //jeżeli ma premium to wyswietlamy wiadomosci if ($ile == 0) { } else { $x = 0; { //wyswitla wiadomosci od administracji jako pierwsze if ($admin['msg_przeczytane'] == '0') { $b = "<b>"; $bb = "</b>"; } $x = $x+1; } $y = 0; { //wyswietla wiadomosci od usytkowników if ($msg['msg_przeczytane'] == '0') { $b = "<b>"; $bb = "</b>"; } $y = $y+1; } } } } } ?>