Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: system mailowy
Forum PHP.pl > Forum > Bazy danych > MySQL
grzesio
musze rozwinąć serwis
Mam konta użytkowników, mozliwosc logowania,....itp
teraz chciałbym aby mogli miedzy sobą wysyłać listy,

1. czy dla kazdego uzytkownika zrobic osobna tabelę
czy tylko zrobic jedna tabelę na listy ?

2. które jest lepsze rozwiązanie ?

trzeba zrobic zalozenie ze uzytkownikow moze byc : infinity

czy taka tabelka jak poniżej:
gdzie są podstawowe pola:
nadawca
odbiorca
status przeczytane nie przeczytane...
WYSTARCZY ?


CREATE TABLE `maile` (
`mail_id` int(10) unsigned NOT NULL auto_increment,
`tytul` varchar(100) NOT NULL default '',
`tresc` text NOT NULL,
`nadawca` varchar(100) NOT NULL default '',
`odbiorca` varchar(100) NOT NULL default '',
`stan` varchar(100) NOT NULL default '',
`data_nadania` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`mail_id`)
);


4.jakie są znane proste systemy mailowe
oczywiście dobre i sprawdzone,...i jak to jest tam rozwiązane ?

Pozdrawiam
-G.
siemakuba
Cytat
1. czy dla kazdego uzytkownika zrobic osobna tabelę
czy tylko zrobic jedna tabelę na listy ?
+
Cytat
trzeba zrobic zalozenie ze uzytkownikow moze byc : infinity
pozwala chyba stwierdzić, że lepiej zrobić jedną tabelę i w niej trzymać wszystkie wiadomości. Bo, w innym układzie należałoby założyć, że tabelek, podobnie jak użytkowników może być: infinity ;)

Co do twojej tabelki - dziwne, że pola nadawca i odbiorca są typu varchar - nie lepiej żeby były to tylko id użytkowników wiążące tabelę wiadomości z tabelą userów?

Ja dodałbym, jeszcze dwa pola:
data_odebrania - wiadomo
odpowiedz_na - id maila na którego odpowiedzią jest wysyłana wiadomość. Możesz wtedy grupować w wątki, czy coś.

pozdr.
dr_bonzo
php Pro -> MySQL
grzesio
Co jest lepiej ?

1. usuwac listy z bazy ?
2. czy moze lepiej wpisac stan: skasowany, a list nadal pozostawałby w bazie tylko
bylby niewidoczny dla uzytkownika
3. czy moze przenosic usuniete do drugiej tabeli ..

- Grzes



  1. <?php
  2. //********************************************************************************
    **********
  3. //** ProStY SYSTEM MAILOWY  **
  4. //********************************************************************************
    **********
  5.  
  6. /*
  7.  CREATE TABLE `maile2` ( 
  8. `mail_id` int(10) unsigned NOT NULL auto_increment, 
  9. `mail_id_odpowiedz` int(10),
  10. `tytul` varchar(100) NOT NULL default '', 
  11. `tresc` text NOT NULL, 
  12. `nadawca` int(10) NOT NULL, 
  13. `odbiorca` int(10) NOT NULL, 
  14. `stan` varchar(14) NOT NULL default 'NOWY', 
  15. `data_odebrania` datetime NOT NULL default '0000-00-00 00:00:00', 
  16. `data_nadania` datetime NOT NULL default '0000-00-00 00:00:00', 
  17. PRIMARY KEY (`mail_id`) 
  18. );
  19.  
  20. */
  21.  
  22. $user_id =2;
  23.  
  24. $db_server = "127.0.0.1";
  25. $db_uname = "root";
  26. $db_pass = "yyy";
  27. $db_name = "mail";
  28.  
  29.  
  30.  
  31.  mysql_connect("$db_server","$db_uname","$db_pass");
  32.  mysql_select_db($db_name); 
  33.  
  34. $title = "phpNewsManager $newman_ver";
  35.  
  36.  
  37. // if (is_user($user)) {
  38.  
  39. // dla wszytkich danych przekazanych metoda POST formularz jest POST
  40. foreach($_POST as $key =>$value){
  41. $$key=$value;
  42. }
  43.  
  44.  
  45. // link edit jest typu: GET: <a href=pnews.php?action=edit&id_maila=
  46. foreach($_GET as $key =>$value){
  47. $$key=$value;
  48. }
  49.  
  50.  
  51.  
  52.  if ($action == "edit") edit_mail(0,$id_maila);
  53.  else if ($action == "delete") DeleteNews(0,$id_maila);
  54.  else if ($action == "multidel") MultiDelete($db_pnews,"id","pnews_del");
  55.  else if ($action == "zapisz") write_mail();
  56.  
  57.  else formularz();
  58.  
  59.  
  60.  
  61. function ShowMain() {
  62.  
  63. // pobierz ilosc rekordow:
  64. $res = mysql_query("SELECT * FROM maile2") or die("<b>LINE 31:</b>".mysql_error());
  65. $num = mysql_num_rows($res);
  66.  
  67. echo "<CENTER>";
  68. $myopt = ShowPages($num,$GLOBALS['page'],$GLOBALS['hits'],$GLOBALS['show']);
  69. echo "</CENTER>";  
  70.  
  71.  
  72.  
  73. $sql="SELECT * from maile2 order by data_nadania desc limit $myopt[0],$myopt[1]";
  74.  
  75.  
  76. //echo $sql;
  77. echo "<BR><CENTER><TABLE border=1>";
  78.  
  79. $wyn= mysql_query($sql);
  80.  
  81. echo "<TR><TD>Numer listu</TD><TD>NADAWACA </TD><TD>ODBIORCA </TD><TD>TYTUL</TD><TD>TRESC</TD></TR>";
  82.  
  83.  while ($ar = mysql_fetch_array($wyn))
  84.  {
  85.  
  86. echo "<TR><TD>". $ar['mail_id']." </TD><TD>". $ar['nadawca']." </TD><TD>". $ar['odbiorca']." </TD><TD>". $ar['tytul'] ."</TD><TD>". $ar['tresc'] ."</TD></TR>";
  87.  
  88.  
  89.  }
  90.  
  91.  
  92. echo "</TABLE></CENTER>";
  93.  
  94. }
  95.  
  96.  
  97.  
  98. function edit_mail($user,$id_mail) {
  99.  
  100.  
  101.  $sql = "SELECT * from maile2 WHERE mail_id=$id_mail";
  102. // echo $sql;
  103.  
  104. echo "<CENTER><TABLE border=1 width=400>";
  105.  
  106.  $res = mysql_query($sql);
  107.  while ($ar = mysql_fetch_array($res))
  108.  {
  109.  
  110. echo "<TR><TD>Nadawca: </TD><TD>". $ar['nadawca']." </TD><TD> Odbiorca: ". $ar['odbiorca']." </TD></TR>";
  111. echo "<TR><TD>Nr. listu: </TD><TD>". $ar['mail_id']." </TD></TR>";
  112. echo "<TR><TD>Tytul: </TD><TD>". $ar['tytul'] ."</TD></TR>";
  113. echo "<TR><TD>Tresc: </TD><TD>". $ar['tresc'] ."</TD></TR>";
  114.  
  115.  }
  116. // zaznacz ze przeczytany:
  117.  
  118. $sql = "UPDATE `maile2` SET `stan` = 'przeczytany' WHERE `maile2`.`mail_id` =$id_mail LIMIT 1" ;
  119.  
  120. //echo $sql;
  121.  
  122. mysql_query($sql) or die("Error 99:".mysql_error());
  123.  
  124.  
  125.  
  126.  
  127. echo "</TABLE></CENTER>";
  128.  
  129. }
  130.  
  131.  
  132.  
  133. function formularz() {
  134.  
  135. global $user_id;
  136.  
  137.  
  138. print '<CENTER><form action="pnews.php" method="POST"> <INPUT type="hidden" value="zapisz" name="action"><p>Temat: <input type="text" name="temat" size="40" maxsize="100" ></p> <p>Treść: <textarea name="tresc" columns="80" rows="5" ></textarea></p> <p>Adresat: <input type="text" name="odbiorca" maxsize="50" value='.$user_id.'> Nadawca <input type="text" name="nadawca" value='.$user_id.' maxsize="50" ><BR> <input type="submit" name="wyslij" value="Wyślij wiadomość"> </form></CENTER>';
  139.  
  140. }
  141.  
  142.  
  143.  
  144. function wyswietl($nadawca_id) {
  145.  
  146.  // Ile listow wyslanych i odebranych ma dany user....
  147.  $res = mysql_query("SELECT * FROM maile2 WHERE nadawca=$nadawca_id ") or die("<b>LINE 31:</b>".mysql_error());
  148.  $num = mysql_num_rows($res);
  149.  echo "<CENTER><HR width=400></CENTER>";
  150.  echo "<CENTER> NADAWCA: $nadawca_id ma $num listow</CENTER>";
  151.  
  152.  echo "<CENTER>";
  153.  $myopt = ShowPages1($num,$GLOBALS['page'],$GLOBALS['hits'],$GLOBALS['show']);
  154.  echo "</CENTER>";
  155. ////////////////////////////////////////
  156.  
  157.  $sql = "SELECT * from maile2 WHERE nadawca=$nadawca_id order by data_nadania desc l
    imit $myopt[0],$myopt[1]"
    ;
  158.  //echo $sql;
  159.  
  160.  $res = mysql_query($sql);
  161.  
  162.  
  163. echo "<CENTER><TABLE border=1>";
  164. echo "<TR><TD>Numer listu </TD><TD>NADAWCA</TD><TD>TYTUŁ</TD><TD>TREŚĆ</TD><TD>OTWÓRZ</TD><TD>USUŃ</TD><TD>PRZECZYTANY</TD></TR>";
  165.  while ($ar = mysql_fetch_array($res))
  166.  {
  167.  
  168. echo ' <tr><td width="100">';
  169.  
  170.  
  171. echo "<TR><TD>". $ar['mail_id']." </TD><TD>". $ar['nadawca']." </TD><TD>". $ar['tytul'] ."</TD><TD>". $ar['tresc'] ."</TD>";
  172.  
  173. echo "<TD><a href=pnews.php?action=edit&id_maila=".$ar['mail_id']."> open </A></TD>";
  174. echo "<TD><a href=pnews.php?action=delete&id_maila=".$ar['mail_id']."> delete </A></TD>";
  175. echo "<TD>".$ar['stan']."</TD>";
  176.  
  177. echo '</tr>';
  178.  
  179.  
  180.  }
  181.  
  182.  
  183. echo "</TABLE></CENTER>";
  184.  
  185.  
  186.  
  187. /////////////////////////////////////////////
  188.  
  189. }
  190.  
  191.  
  192.  
  193. function DeleteNews($user,$id_mail) {
  194.  
  195.  $sql = "DELETE FROM maile2 WHERE mail_id='".$id_mail."'";
  196.  
  197.  //echo $sql;
  198.  mysql_query($sql);
  199.  
  200. }
  201.  
  202.  
  203.  
  204. function write_mail() {
  205.  
  206.  
  207. //$GLOBALS['db_pnews'] = "mail";
  208.  
  209.  
  210. $temat = $_GET['temat'];
  211. $tresc = $_GET['tresc'];
  212. $nadawca = $_GET['nadawca'];
  213. $odbiorca = $_GET['odbiorca'];
  214.  
  215. global $temat,$tresc,$nadawca,$odbiorca;
  216.  
  217.  
  218.  
  219. // $sql = "INSERT INTO maile2 ( mail_id_odpowiedz, tytul, tresc, nadawca, odbiorca, stan, data_odebrania, 
    data_nadania) VALUES (0,'$temat', '$tresc', '$nadawca', '$odbiorca', 'nadana',Now(), Now())"; 
  220.  
  221. $sql = "INSERT INTO `maile2` ( `mail_id` , `mail_id_odpowiedz` , `tytul` , `tresc` , `nadawca` , `odbiorc
    a` , `stan` , `data_odebrania` , `data_nadania` ) VALUES (NULL , '3', '$temat', '$tresc', '$nadawca', '$odbiorca', 'nowy', '0000-00-00 00:00:00', Now());"
    ;
  222.  
  223.  
  224.  
  225.  
  226. echo $sql;
  227.  
  228.  
  229. mysql_query($sql) or die("Error 103:".mysql_error());
  230.  
  231.  
  232.  }
  233.  
  234.  
  235. // dla wszystkich listow
  236. function ShowPages($xnum)
  237. {
  238.  global $sort,$order,$id,$page,$hits,$show;
  239.  
  240.  if ($page == 0)  {$page=1;}
  241.  if (empty($page)) {$page=1;}
  242.  if (empty($hits)) {$hits=10;}
  243.  if (empty($show)) {$show = 7;}
  244.  
  245.  $start = $hits*($page-1);
  246.  $stw2 = ($xnum/$hits);
  247.  $stw2 = (int) $stw2;
  248.  if ($xnum%$hits > 0) {$stw2++;}
  249.  
  250.  $np = $page+1;
  251.  $pp = $page-1;
  252.  if ($page == 1) { $pp=1; }
  253.  
  254.  $l1 = $page - $show;
  255.  $d1 = $page + $show;
  256.  
  257.  $n1 = $page - $show;
  258.  if($n1<1) {$n1=1;}
  259.  $n2 = $page + $show;
  260.  if($n2>$stw2) {$n2=$stw2;}
  261.  
  262.  $d1 = 2 * $show + $l1;
  263.  if($d1>$stw2) {$d1=$stw2;$l1=$stw2-$show*2;}
  264.  if($l1<1) {$l1 = 1;}
  265.  
  266.  if ($np>$stw2) { $np=$stw2; }
  267.  
  268.  echo "<a href="".$GLOBALS['PHP_SELF']."?page=$pp&sort=$sort&id=$id">&laquo;</a> ";
  269.  echo "<a href="".$GLOBALS['PHP_SELF']."?page=$n1&sort=$sort&id=$id"><</a> ";
  270.  for($i=$l1;$i<=$d1;$i++)
  271.  {
  272. if($page==$i) {echo "<b>$i</b>";} 
  273. else{echo " <a href="".$GLOBALS['PHP_SELF']."?page=$i&sort=$sort&id=$id">$i</a> ";}
  274.  }
  275.  echo " <a href="".$GLOBALS['PHP_SELF']."?page=$np&sort=$sort&id=$id">></a> ";
  276.  echo " <a href="".$GLOBALS['PHP_SELF']."?page=$n2&sort=$sort&id=$id">&raquo;</a>";
  277.  return array($start,$hits);
  278. }
  279.  
  280.  
  281.  
  282. // pokaz dla danego usera 
  283. function ShowPages1($xnum)
  284. {
  285.  global $sort1,$order1,$id1,$page1,$hits1,$show1;
  286.  
  287.  if ($page1 == 0)  {$page1=1;}
  288.  if (empty($page1)) {$page1=1;}
  289.  if (empty($hits1)) {$hits1=10;}
  290.  if (empty($show1)) {$show1 = 7;}
  291.  
  292.  $start = $hits1*($page1-1);
  293.  $stw2 = ($xnum/$hits1);
  294.  $stw2 = (int) $stw2;
  295.  if ($xnum%$hits1 > 0) {$stw2++;}
  296.  
  297.  $np = $page1+1;
  298.  $pp = $page1-1;
  299.  if ($page1 == 1) { $pp=1; }
  300.  
  301.  $l1 = $page1 - $show1;
  302.  $d1 = $page1 + $show1;
  303.  
  304.  $n1 = $page1 - $show1;
  305.  if($n1<1) {$n1=1;}
  306.  $n2 = $page1 + $show1;
  307.  if($n2>$stw2) {$n2=$stw2;}
  308.  
  309.  $d1 = 2 * $show1 + $l1;
  310.  if($d1>$stw2) {$d1=$stw2;$l1=$stw2-$show1*2;}
  311.  if($l1<1) {$l1 = 1;}
  312.  
  313.  if ($np>$stw2) { $np=$stw2; }
  314.  
  315.  echo "<a href="".$GLOBALS['PHP_SELF']."?page1=$pp&sort1=$sort1&id1=$id1">&laquo;</a> ";
  316.  echo "<a href="".$GLOBALS['PHP_SELF']."?page1=$n1&sort1=$sort1&id1=$id1"><</a> ";
  317.  for($i=$l1;$i<=$d1;$i++)
  318.  {
  319. if($page1==$i) {echo "<b>$i</b>";} 
  320. else{echo " <a href="".$GLOBALS['PHP_SELF']."?page1=$i&sort1=$sort1&id1=$id1">$i</a> ";}
  321.  }
  322.  echo " <a href="".$GLOBALS['PHP_SELF']."?page1=$np&sort1=$sort1&id1=$id1">></a> ";
  323.  echo " <a href="".$GLOBALS['PHP_SELF']."?page1=$n2&sort1=$sort1&id1=$id1">&raquo;</a>";
  324.  return array($start,$hits1);
  325. }
  326.  
  327.  
  328.  
  329.  
  330.  
  331. ShowMain();
  332.  
  333.  
  334.  
  335. wyswietl($user_id);
  336.  
  337.  
  338.  
  339. ?>
Jarod
Popraw ten kod bo forum się rozjechało.
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-2024 Invision Power Services, Inc.