Witam,
próbuję stworzyć zapytanie, które pobierze wiadomości obecnie zalogowanego użytkownika.
Struktura tabel:
CREATE TABLE `konwersacje` (
`konwersacja_id` int(8) NOT NULL,
`konwersacja_temat` varchar(150) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `konwersacje`
ADD PRIMARY KEY (`konwersacja_id`);
ALTER TABLE `konwersacje`
MODIFY `konwersacja_id` int(8) NOT NULL AUTO_INCREMENT;
CREATE TABLE `konwersacje_czlonkowie` (
`id` int(11) NOT NULL,
`konwersacja_id` int(8) NOT NULL,
`uzytkownik_id` int(11) NOT NULL,
`konwersacja_ostatnio_ogladana` int(10) NOT NULL,
`konwersacja_usunieta` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `konwersacje_czlonkowie`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `unikalny` (`konwersacja_id`,`uzytkownik_id`),
ADD KEY `FK_uzytkownicy_konwersacje_czlonkowie1` (`uzytkownik_id`);
ALTER TABLE `konwersacje_czlonkowie`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `konwersacje_czlonkowie`
ADD CONSTRAINT `FK_uzytkownicy_konwersacje_czlonkowie1` FOREIGN KEY (`uzytkownik_id`) REFERENCES `uzytkownicy` (`uzytkownik_id`) ON UPDATE CASCADE;
CREATE TABLE `konwersacje_wiadomosci` (
`wiadomosc_id` int(10) NOT NULL,
`konwersacja_id` int(8) NOT NULL,
`uzytkownik_id` int(11) NOT NULL,
`data_wyslania` int(10) NOT NULL,
`wiadomosc_ogladana` int(1) NOT NULL DEFAULT '0',
`wiadomosc_tresc` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `konwersacje_wiadomosci`
ADD PRIMARY KEY (`wiadomosc_id`),
ADD KEY `konwersacja_id` (`konwersacja_id`),
ADD KEY `uzytkownik_id` (`uzytkownik_id`);
ALTER TABLE `konwersacje_wiadomosci`
MODIFY `wiadomosc_id` int(10) NOT NULL AUTO_INCREMENT;
ALTER TABLE `konwersacje_wiadomosci`
ADD CONSTRAINT `FK_uzytkownicy_konwersacje_wiadomosci` FOREIGN KEY (`uzytkownik_id`) REFERENCES `uzytkownicy` (`uzytkownik_id`) ON UPDATE CASCADE;
CREATE TABLE `uzytkownicy` (
`uzytkownik_id` int(11) NOT NULL,
`login` varchar(32) NOT NULL,
`haslo` varchar(255) NOT NULL,
`imie` varchar(55) NOT NULL,
`nazwisko` varchar(80) NOT NULL,
`tel_komorkowy` varchar(25) NOT NULL DEFAULT '',
`tel_stacjonarny` varchar(25) NOT NULL DEFAULT '',
`email` varchar(200) NOT NULL,
`firma_id` int(1) NOT NULL DEFAULT '0',
`pozwol_email` int(1) NOT NULL DEFAULT '0',
`uprawnienia` int(1) NOT NULL DEFAULT '0',
`ostatnie_logowanie` datetime DEFAULT NULL,
`zdjecie` varchar(150) DEFAULT NULL,
`typ` enum('Normalny','Pracownik','Administrator','Super-Administrator') NOT NULL DEFAULT 'Normalny',
`aktywny` int(1) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `uzytkownicy`
ADD PRIMARY KEY (`uzytkownik_id`),
ADD UNIQUE KEY `login` (`login`),
ADD KEY `firma_id` (`firma_id`);
ALTER TABLE `uzytkownicy`
MODIFY `uzytkownik_id` int(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `uzytkownicy`
ADD CONSTRAINT `FK_firmy_uzytkownicy` FOREIGN KEY (`firma_id`) REFERENCES `firmy` (`firma_id`) ON UPDATE CASCADE;
I przyznam, że się pogubiłem. Czy ktoś może mi pomóc/nakierować?
funkcja nad którą pracuję:
function zlicz_wiadomosci_nieprzeczytane($uzytkownik_id) {
$uzytkownik_id = (int)$uzytkownik_id;
$sql = "SELECT
COUNT(konwersacje_wiadomosci.wiadomosc_ogladana) AS nieczytana
FROM konwersacje_wiadomosci, konwersacje_czlonkowie
WHERE konwersacje_wiadomosci.uzytkownik_id = {$_SESSION['uzytkownik_id']}
AND konwersacje_wiadomosci.wiadomosc_ogladana = 0
AND konwersacje_czlonkowie.konwersacja_ostatnio_ogladana = 0
";
$wynik = mysqli_query($connect, $sql);
if($wynik === FALSE) {
die(mysqli_error
($connect)); } else {
if($row = mysqli_fetch_row($wynik)) {
return $row[0];
}
}
}