Ja akurat mam takie coś napisane. Miałem problem z wyświetleniem nowych i starych wiadomosci, może przyda się:
<?php
include ("baza/baza.php");
$query="SELECT * FROM wiadomosci_osoby WHERE (id_do_kogo=$id AND typ!=$id)";
$query="SELECT * FROM wiadomosci_osoby WHERE (id_do_kogo=$id && status=1) && typ!=$id "; //typ!=$id zeby nie wyswietlac wiadomosci, do typu dodawalem id usera, coś dziwne...
echo "<center>Masz <u>" . $ile_nowych . "</u> nieprzeczytanych wiadomości.<br />"; echo "Razem <u>" . $ile_razem . "</u> wszystkich wiadomości.<br /><br />"; echo "Aby je przeczytać, przejdź do <a href=\"wiadomosci_uzyt.php\">wiadomości</a>.</center><br /><br />";
?>
Ja mam z kolei podobne pytanie w temacie, jeśli tworze wiadomości i userzy wysyłają je do siebie mam np. wysłane, odebrane, nowe. Mam tylko jedną tabelę na wiadomości - wiadomosci. I gdzie jest tu złe myślenie, że jak user usunie wiadomość z odebranych, skasuje z bazy to wykasuje wiadomość też osobie, która to wysłała? Należy tworzyć tabele dla wysłanych i odebranych osobno ?
-- Struktura tabeli dla `wiadomosci_osoby`
--
CREATE TABLE IF NOT EXISTS `wiadomosci_osoby` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_wiadomosci` varchar(11) NOT NULL DEFAULT '',
`id_do_kogo` varchar(11) NOT NULL DEFAULT '',
`id_od_kogo` varchar(11) NOT NULL DEFAULT '',
`status` varchar(11) NOT NULL DEFAULT '',
`typ` varchar(11) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=7 ;
--
-- Zrzut danych tabeli `wiadomosci_osoby`
--
INSERT INTO `wiadomosci_osoby` (`id`, `id_wiadomosci`, `id_do_kogo`, `id_od_kogo`, `status`, `typ`) VALUES
(1, '1', '27', '23', '0', ''),
(2, '2', '27', '23', '0', ''),
(3, '4', '28', '23', '0', '23'),
(4, '5', '27', '23', '0', ''),
(5, '6', '28 ', '27', '0', ''),
(6, '7', '30 ', '27', '1', 'napisane');