Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]System wiadomości między użytkownikami
adrianozo
post
Post #1





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


Witam wszystkich. Mam problem. Nie wiem dlaczego, ale jakoś nie tak działa mi system prywatnych wiadomości. Jeżeli chodzi o wysyłanie wiadomości wszystko działa ok, natomiast przy skrzynce odbiorczej i nadawczej jest coś nie tak. Mimo, że rekordy są w bazie to wyświetlany jest komunikat, który ma zostać wyświetlony, kiedy nie ma żadnej wiadomości. Proszę o pomoc (IMG:style_emoticons/default/smile.gif)

  1. <?php
  2. echo '<a href="/sienkiewiczak/index.php?page=messages&ordner=new" />Napisz nową wiadomość</a> ';
  3. $zap1 = mysql_query("SELECT * FROM `wiadomosci` WHERE `do` = ".$_SESSION['login']."");
  4. $ile1 = mysql_num_rows($zap1);
  5. $zap2 = mysql_query("SELECT * FROM `wiadomosci` WHERE `od` = ".$_SESSION['login']."");
  6. $ile2 = mysql_num_rows($zap2);
  7. $data = date('Y-m-d');
  8. echo ' <a href="/sienkiewiczak/index.php?page=messages&ordner=inbox" />Odebrane</a> ';
  9. echo ' <a href="/sienkiewiczak/index.php?page=messages&ordner=outbox" />Wysłane</a>';
  10. if($_GET['ordner']=='new')
  11. {
  12. $tresc = zabezpiecz($_POST['tresc']);
  13. $do = zabezpiecz($_POST['do']);
  14. $temat = zabezpiecz($_POST['temat']);
  15. echo '<form action="/sienkiewiczak/index.php?page=messages&ordner=new" method="post">
  16. <input type="hidden" name="send" value="1"><br />
  17. Do: <select name="do"> ';
  18. $zapytanie = "SELECT * FROM `user` ORDER BY `id` DESC";
  19. $idzapytania = mysql_query($zapytanie);
  20. while ($wiersz = mysql_fetch_array($idzapytania))
  21. echo '<option value="'.$wiersz['id'].'">'.$wiersz['loginek'].'</option>';
  22. </select><br /><br />
  23. Temat: <input type="text" name="temat" value="Temat" /><br /><br />
  24. Treść: <br /><textarea name="tresc" cols="50" rows="10" id="textarea" id="textarea">Treść</textarea><br />
  25. <input name="wyslij" type="submit" value="Wyślij" />
  26. <br /><br />
  27. </form>';
  28. if(isset($_POST['wyslij']))
  29. {
  30. if(empty($_POST['temat']) || empty($_POST['tresc']) and isset($_POST['temat']))
  31. {
  32. echo 'Nie wypełniono wszystkich pól.<br />';
  33. }
  34. else
  35. {
  36. $zapytko = mysql_query("INSERT INTO `wiadomosci` (`tresc`, `od`, `do`, `przeczytane`, `data`, `temat`, `czyj`) VALUES (1,2,3,4,5,6,7)") or die(mysql_error());
  37. if($zapytko === TRUE)
  38. {
  39. echo 'Wysłano';
  40. }
  41. else
  42. {
  43. echo 'Nie udało się wysłać wiadomości. Prosimy spróbować za jakiś czas.';
  44. }
  45. }
  46. }
  47. }
  48. if($_GET['ordner']=='inbox')
  49. {
  50. $zapyt = mysql_query("SELECT * FROM `wiadomosci` WHERE `do` = ".$_SESSION['login']." AND `czyj` = 0 ORDER BY `data`");
  51. if($ile1 == 0)
  52. {
  53. echo '<br /><br />Ta skrzynka z wiadomościami jest pusta';
  54. }
  55. else
  56. {
  57. if($_GET['msg_read']==''.$wierszus['id'].'')
  58. {
  59. while($rekord = mysql_fetch_array($zapyt))
  60. {
  61. echo 'Od: '.$rekord['od'].'<br />';
  62. echo 'Data: '.$rekord['data'].'<br />';
  63. echo 'Temat: '.$rekord['temat'].'<br />';
  64. echo $rekord['tresc'];
  65. }
  66. }
  67. else
  68. {
  69. echo '<br /><br />Temat: ';
  70. while($wiersz = mysql_fetch_array($zapyt))
  71. {
  72. echo ''.$wiersz['temat'].'';
  73. }
  74. echo 'Od: ';
  75. while($wierszyk = mysql_fetch_array($zapyt))
  76. {
  77. echo ''.$wierszyk['od'].'';
  78. }
  79. echo 'Data: ';
  80. while($wierszyczek = mysql_fetch_array($zapyt))
  81. {
  82. echo ''.$wierszyczek['data'].'';
  83. }
  84. }
  85. }
  86. }
  87. if($_GET['ordner']=='outbox')
  88. {
  89. $zapyt = mysql_query("SELECT * FROM `wiadomosci` WHERE `od` = ".$_SESSION['login']." AND `czyj` = 1 ORDER BY `data`");
  90. if($ile2 == 0)
  91. {
  92. echo '<br /><br />Ta skrzynka z wiadomościami jest pusta';
  93. }
  94. else
  95. {
  96. if($_GET['msg_read']==''.$wierszus['id'].'')
  97. {
  98. while($rekord = mysql_fetch_array($zapyt))
  99. {
  100. echo 'Do: '.$rekord['do'].'<br />';
  101. echo 'Data: '.$rekord['data'].'<br />';
  102. echo 'Temat: '.$rekord['temat'].'<br />';
  103. echo $rekord['tresc'];
  104. }
  105. }
  106. else
  107. {
  108. echo '<br /><br />Temat: ';
  109. while($wiersz = mysql_fetch_array($zapyt))
  110. {
  111. echo ''.$wiersz['temat'].'';
  112. }
  113. echo 'Do: ';
  114. while($wierszyk = mysql_fetch_array($zapyt))
  115. {
  116. echo ''.$wierszyk['do'].'';
  117. }
  118. echo 'Data: ';
  119. while($wierszyczek = mysql_fetch_array($zapyt))
  120. {
  121. echo ''.$wierszyczek['data'].'';
  122. }
  123. }
  124. }
  125. }
  126. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
user767
post
Post #2





Grupa: Zarejestrowani
Postów: 178
Pomógł: 5
Dołączył: 13.09.2010

Ostrzeżenie: (40%)
XX---


Ja akurat mam takie coś napisane. Miałem problem z wyświetleniem nowych i starych wiadomosci, może przyda się:

  1. <?php
  2. include ("baza/baza.php");
  3.  
  4. $query="SELECT * FROM wiadomosci_osoby WHERE (id_do_kogo=$id AND typ!=$id)";
  5.  
  6. $wynik=mysql_query($query);
  7. $ile_razem = mysql_num_rows($wynik);
  8.  
  9. $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...
  10. $wynik2 = mysql_query($query);
  11. $ile_nowych = mysql_num_rows($wynik2);
  12.  
  13. echo "<center>Masz <u>" . $ile_nowych . "</u> nieprzeczytanych wiadomości.<br />";
  14. echo "Razem <u>" . $ile_razem . "</u> wszystkich wiadomości.<br /><br />";
  15. echo "Aby je przeczytać, przejdź do <a href=\"wiadomosci_uzyt.php\">wiadomości</a>.</center><br /><br />";
  16.  
  17. ?>
  18.  
  19. 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 ?
  20.  



  1. -- Struktura tabeli dla `wiadomosci_osoby`
  2. --
  3.  
  4. CREATE TABLE IF NOT EXISTS `wiadomosci_osoby` (
  5. `id` int(11) NOT NULL AUTO_INCREMENT,
  6. `id_wiadomosci` varchar(11) NOT NULL DEFAULT '',
  7. `id_do_kogo` varchar(11) NOT NULL DEFAULT '',
  8. `id_od_kogo` varchar(11) NOT NULL DEFAULT '',
  9. `status` varchar(11) NOT NULL DEFAULT '',
  10. `typ` varchar(11) NOT NULL DEFAULT '',
  11. PRIMARY KEY (`id`)
  12. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=7 ;
  13.  
  14. --
  15. -- Zrzut danych tabeli `wiadomosci_osoby`
  16. --
  17.  
  18. INSERT INTO `wiadomosci_osoby` (`id`, `id_wiadomosci`, `id_do_kogo`, `id_od_kogo`, `status`, `typ`) VALUES
  19. (1, '1', '27', '23', '0', ''),
  20. (2, '2', '27', '23', '0', ''),
  21. (3, '4', '28', '23', '0', '23'),
  22. (4, '5', '27', '23', '0', ''),
  23. (5, '6', '28 ', '27', '0', ''),
  24. (6, '7', '30 ', '27', '1', 'napisane');


Ten post edytował user767 17.12.2010, 13:26:21
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: 6.10.2025 - 16:31