Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Pobranie nieprzeczytanych wiadomości użytkownika
gogomania
post
Post #1





Grupa: Zarejestrowani
Postów: 51
Pomógł: 1
Dołączył: 7.02.2013

Ostrzeżenie: (0%)
-----


Witam,
próbuję stworzyć zapytanie, które pobierze wiadomości obecnie zalogowanego użytkownika.

Struktura tabel:
  1. CREATE TABLE `konwersacje` (
  2. `konwersacja_id` int(8) NOT NULL,
  3. `konwersacja_temat` varchar(150) NOT NULL
  4. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  5. ALTER TABLE `konwersacje`
  6. ADD PRIMARY KEY (`konwersacja_id`);
  7. ALTER TABLE `konwersacje`
  8. MODIFY `konwersacja_id` int(8) NOT NULL AUTO_INCREMENT;
  9.  
  10. CREATE TABLE `konwersacje_czlonkowie` (
  11. `id` int(11) NOT NULL,
  12. `konwersacja_id` int(8) NOT NULL,
  13. `uzytkownik_id` int(11) NOT NULL,
  14. `konwersacja_ostatnio_ogladana` int(10) NOT NULL,
  15. `konwersacja_usunieta` int(1) NOT NULL
  16. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  17. ALTER TABLE `konwersacje_czlonkowie`
  18. ADD PRIMARY KEY (`id`),
  19. ADD UNIQUE KEY `unikalny` (`konwersacja_id`,`uzytkownik_id`),
  20. ADD KEY `FK_uzytkownicy_konwersacje_czlonkowie1` (`uzytkownik_id`);
  21. ALTER TABLE `konwersacje_czlonkowie`
  22. MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
  23. ALTER TABLE `konwersacje_czlonkowie`
  24. ADD CONSTRAINT `FK_uzytkownicy_konwersacje_czlonkowie1` FOREIGN KEY (`uzytkownik_id`) REFERENCES `uzytkownicy` (`uzytkownik_id`) ON UPDATE CASCADE;
  25.  
  26. CREATE TABLE `konwersacje_wiadomosci` (
  27. `wiadomosc_id` int(10) NOT NULL,
  28. `konwersacja_id` int(8) NOT NULL,
  29. `uzytkownik_id` int(11) NOT NULL,
  30. `data_wyslania` int(10) NOT NULL,
  31. `wiadomosc_ogladana` int(1) NOT NULL DEFAULT '0',
  32. `wiadomosc_tresc` text NOT NULL
  33. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  34. ALTER TABLE `konwersacje_wiadomosci`
  35. ADD PRIMARY KEY (`wiadomosc_id`),
  36. ADD KEY `konwersacja_id` (`konwersacja_id`),
  37. ADD KEY `uzytkownik_id` (`uzytkownik_id`);
  38. ALTER TABLE `konwersacje_wiadomosci`
  39. MODIFY `wiadomosc_id` int(10) NOT NULL AUTO_INCREMENT;
  40. ALTER TABLE `konwersacje_wiadomosci`
  41. ADD CONSTRAINT `FK_uzytkownicy_konwersacje_wiadomosci` FOREIGN KEY (`uzytkownik_id`) REFERENCES `uzytkownicy` (`uzytkownik_id`) ON UPDATE CASCADE;
  42.  
  43. CREATE TABLE `uzytkownicy` (
  44. `uzytkownik_id` int(11) NOT NULL,
  45. `login` varchar(32) NOT NULL,
  46. `haslo` varchar(255) NOT NULL,
  47. `imie` varchar(55) NOT NULL,
  48. `nazwisko` varchar(80) NOT NULL,
  49. `tel_komorkowy` varchar(25) NOT NULL DEFAULT '',
  50. `tel_stacjonarny` varchar(25) NOT NULL DEFAULT '',
  51. `email` varchar(200) NOT NULL,
  52. `firma_id` int(1) NOT NULL DEFAULT '0',
  53. `pozwol_email` int(1) NOT NULL DEFAULT '0',
  54. `uprawnienia` int(1) NOT NULL DEFAULT '0',
  55. `ostatnie_logowanie` datetime DEFAULT NULL,
  56. `zdjecie` varchar(150) DEFAULT NULL,
  57. `typ` enum('Normalny','Pracownik','Administrator','Super-Administrator') NOT NULL DEFAULT 'Normalny',
  58. `aktywny` int(1) NOT NULL DEFAULT '0'
  59. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  60. ALTER TABLE `uzytkownicy`
  61. ADD PRIMARY KEY (`uzytkownik_id`),
  62. ADD UNIQUE KEY `login` (`login`),
  63. ADD KEY `firma_id` (`firma_id`);
  64. ALTER TABLE `uzytkownicy`
  65. MODIFY `uzytkownik_id` int(11) NOT NULL AUTO_INCREMENT;
  66. ALTER TABLE `uzytkownicy`
  67. 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ę:
  1. function zlicz_wiadomosci_nieprzeczytane($uzytkownik_id) {
  2. global $connect;
  3.  
  4. $uzytkownik_id = (int)$uzytkownik_id;
  5.  
  6. $sql = "SELECT
  7. COUNT(konwersacje_wiadomosci.wiadomosc_ogladana) AS nieczytana
  8. FROM konwersacje_wiadomosci, konwersacje_czlonkowie
  9. WHERE konwersacje_wiadomosci.uzytkownik_id = {$_SESSION['uzytkownik_id']}
  10. AND konwersacje_wiadomosci.wiadomosc_ogladana = 0
  11. AND konwersacje_czlonkowie.konwersacja_ostatnio_ogladana = 0
  12. ";
  13.  
  14. $wynik = mysqli_query($connect, $sql);
  15.  
  16. if($wynik === FALSE) {
  17. die(mysqli_error($connect));
  18. } else {
  19. if($row = mysqli_fetch_row($wynik)) {
  20. return $row[0];
  21. }
  22. }
  23.  
  24. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
gogomania
post
Post #2





Grupa: Zarejestrowani
Postów: 51
Pomógł: 1
Dołączył: 7.02.2013

Ostrzeżenie: (0%)
-----


W pierwszej kolejności dziękuję za poświęcony czas na rozwiązanie problemu.

Wrócę do początku tego wątku bo wydaje mi się, że nie wyraziłem się jasno stąd powstałe nieścisłości.


Działanie przepływu wiadomości dla konwersacji od użytkownika do użytkownika/ów mam już opracowane w pełni, w zasadzie wszystko mam już zrobione. Pozostał tylko problem a w zasadzie szczegół ze zliczeniem wiadomości nieprzeczytanych.

Nie chodzi mi tutaj o odczytanie pojedynczej wiadomości bo to by kłóciło się z tym co już mam.
Wywnioskowałem, że piszesz o stworzeniu mechanizmu gdyż jak się domyślam, założyłeś, że takiego nie mam. Otóż jest wszystko i ładnie działa. Jedynie pozostaje ta nieszczęsna kwestia zapytania SQL by pobrać wiadomości nieprzeczytane dla zalogowanego obecnie użytkownika ze wszystkich konwersacji w funkcji którą podałem w pierwszym poście.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 12:36