Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]System wiadomości między użytkownikami
Forum PHP.pl > Forum > Przedszkole
adrianozo
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. ?>
lord2105
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']."'");
adrianozo
Teraz nic nie otrzymuje
lord2105
zaloguj sie i daj var_dump($_SESSION);
Soulast
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`");
lord2105
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
ixpack
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?
adrianozo
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
iQ12P
Spróbuj ustawić $ile2 na np. 1, po czym sprawdź czy będzie działało, jak tak. - Pokombinuj coś.
user767
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');
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.