Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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 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
lord2105
post
Post #2





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

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


To:
  1. $zap1 = mysql_query("SELECT * FROM `wiadomosci` WHERE `do` = ".$_SESSION['login']."");

Zamien na:
  1.  
  2. $zap1 = mysql_query("SELECT * FROM `wiadomosci` WHERE `do` = '".$_SESSION['login']."'");


Ten post edytował lord2105 14.12.2010, 16:33:57


--------------------
40% rozwiązań znajduje się tutaj.
59,9% tutaj.

Jeśli pomogłem rozwiązać Twój problem wciśnij
Go to the top of the page
+Quote Post
adrianozo
post
Post #3





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

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


Teraz nic nie otrzymuje


--------------------
Go to the top of the page
+Quote Post
lord2105
post
Post #4





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

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


zaloguj sie i daj var_dump($_SESSION);


--------------------
40% rozwiązań znajduje się tutaj.
59,9% tutaj.

Jeśli pomogłem rozwiązać Twój problem wciśnij
Go to the top of the page
+Quote Post
Soulast
post
Post #5





Grupa: Zarejestrowani
Postów: 133
Pomógł: 6
Dołączył: 26.10.2009

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


a spróbuj zastąpić sesje w zapytaniu na wartość przykładowo:
  1. $var_login= $_SESSION['login'];
  2.  
  3. $zapyt = mysql_query("SELECT * FROM `wiadomosci` WHERE `od` = '$var_login' AND `czyj` = 1 ORDER BY `data`");


Ten post edytował Soulast 14.12.2010, 17:05:59
Go to the top of the page
+Quote Post
lord2105
post
Post #6





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

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


Cytat(Soulast @ 14.12.2010, 16:56:41 ) *
a spróbuj zastąpić sesje w zapytaniu na wartość przykładowo:
  1. $var_login= $_SESSION['login'];
  2.  
  3. $zapyt = mysql_query("SELECT * FROM `wiadomosci` WHERE `od` = ".$var_login." AND `czyj` = 1 ORDER BY `data`");


a co to za roznica? mozesz nam powiedziec? hehe


--------------------
40% rozwiązań znajduje się tutaj.
59,9% tutaj.

Jeśli pomogłem rozwiązać Twój problem wciśnij
Go to the top of the page
+Quote Post
ixpack
post
Post #7





Grupa: Zarejestrowani
Postów: 248
Pomógł: 55
Dołączył: 1.06.2010
Skąd: mam to wiedzieć?

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


Daj w zapytaniach stałe wartości, które są w bazie, wyświetl sobie zmienne sesji przed wywołaniem tych if'ów od skrzynek - tak dla pewności.

I wyświetl też sobie wartości ile1 i ile2. A tak poza tym to masz sesję rozpoczętą co?

Ten post edytował ixpack 14.12.2010, 20:17:02


--------------------
Łatwo jest być odważnym za murami własnego zamku.
Go to the top of the page
+Quote Post
adrianozo
post
Post #8





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

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


Po var_dump otrzymuje:

array(6) { ["sprawdz"]=> bool(true) ["adres_ip"]=> string(14) "212.87.240.190" ["access"]=> string(3) "999" ["login"]=> string(6) "nansss" ["id"]=> string(1) "1" ["superadmin"]=> string(2) "ok" }

Wyświetlając zmienne $ile1 i $ile2 nic nie otrzymuje

Panowie głupota była ;d

W zapytaniach brakowało przed i za zmienną apostrofu ;d


--------------------
Go to the top of the page
+Quote Post
iQ12P
post
Post #9





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 14.12.2010

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


Spróbuj ustawić $ile2 na np. 1, po czym sprawdź czy będzie działało, jak tak. - Pokombinuj coś.
Go to the top of the page
+Quote Post
user767
post
Post #10





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

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

 



RSS Aktualny czas: 21.08.2025 - 18:08