Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> system mailowy, odbieranie wysylanie listów
grzesio
post
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 24.12.2003
Skąd: Wisła

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


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.

Ten post edytował grzesio 14.02.2007, 12:55:59
Go to the top of the page
+Quote Post
siemakuba
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


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.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


php Pro -> MySQL
Go to the top of the page
+Quote Post
grzesio
post
Post #4





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 24.12.2003
Skąd: Wisła

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


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. ?>


Ten post edytował grzesio 25.02.2007, 21:52:08
Go to the top of the page
+Quote Post
Jarod
post
Post #5





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Popraw ten kod bo forum się rozjechało.
Go to the top of the page
+Quote Post

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: 19.09.2025 - 01:57