Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] wysyłanie e-meila do wszystkich rekordów
Forum PHP.pl > Forum > Przedszkole
Tasilvar
Witam, od razu zaznaczam że z mysql dopiero zapoznaje się od kilku dni. Postanowiłem na wstępie stworzyć coś w stylu newslettera który w danym momencie wysyłałby automatycznie e-meila do wszystkich rekordów w tablicy. Problem pojawia się na etapie finalizacji, kiedy chcę aby za pomocą funkcji mail(); wysłać e-maila z konkretną wiadomością do wszystkich adresów zgromadzonych w polu. Generalnie cały index wygląda tak:


  1.  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  3. <html>
  4. <head>
  5. <meta name="generator" content="WebSite PRO 4.3" />
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  7. <meta name="robots" content="all,index,follow"/>
  8. <meta name="revisit-after" content="6 days"/>
  9. <link rel="Shortcut icon" href="favicon.png" />
  10. <title>Tasjen.pl</title>
  11. <!--[if !IE]>--><style type="text/css"> @import url('theme/style.css'); </style><![endif]-->
  12. <!--[if gt IE 6]><style type="text/css">@import url('theme/style.css'); </style><![endif]-->
  13. <!--[if lte IE 6]><style type="text/css">@import url("theme/old_ie_hack.css"); </style><![endif]-->
  14. <script type="text/javascript" src="theme/skrypty.js"></script>
  15. <?php
  16. $polaczenie = @mysql_connect('localhost','root','') or die ("Nie udało się połączyć z bazą danych");
  17.  
  18. /*mysql_create_db('tasjen');*/
  19. mysql_select_db('tasjen') or die ("Nie mogłem znaleźć bazy danych");
  20.  
  21. ?>
  22. </head>
  23. <body>
  24. <div class="kontener">
  25. <div class="kontener2">
  26. <div class="top">
  27. <div class="logo"></div>
  28. <div class="newsletter">
  29. <h2>newsletter</h2>
  30. <?php
  31. echo '
  32. <form name="wyslij" method="post">
  33. <input type="text" id="inpucik" name="newsletter_input" style="padding:3px;font-size:11px;margin-left:60px;margin-top:-10px;border:0px;border-radius:5px;background:#ffffff;color:#d2d2d2;width:220px;" value="wpisz adres e-mail" />
  34. <br/> <input type="submit" title="prześlij" name="wyslij" style="margin:3px 0px 0px 260px;width:59px; height:19px;background:url(\'theme/images/submit.jpg\') no-repeat;border:0px;" value=" "/>
  35. </form>
  36. ';
  37.  
  38. if (!empty($_POST['newsletter_input']) && ($_POST['wyslij'] == true)) {
  39. INSERT INTO newsletter (`e-mail`)
  40. VALUES
  41. ('".$_POST['newsletter_input']."')
  42. ") or die ("Wystąpił błąd przy zapisie rekordu");
  43. echo "<script type=\"text/javascript\">window.location.href='index.php';</script>";
  44. }
  45. else if (($_POST['newsletter_input'] == "wpisz adres e-mail") || ($_POST['newsletter_input'] == "") && ($_POST['wyslij'] == true)) {
  46. echo "<script type=\"text/javascript\">window.location.href='index.php';</script>";
  47. }
  48.  
  49. else {
  50. /* mysql_query("
  51.   DELETE FROM `newsletter` WHERE `e-mail` not in ('%@%')
  52.   ") or die ("Nie udało się usunąć rekordów");*/
  53. }
  54.  
  55. ?>
  56. </div>
  57. <div class="find">
  58. znajdziesz mnie takĹźe na: <br/>
  59. <div class="icons">
  60. <div class="gg"><a href="#"></a></div>
  61. <div class="nk"><a target="_blank" href="#"</a></div>
  62. <div class="fb"><a target="_blank" href="#"</a></div>
  63. <div class="mail"><a href="#"></a></div>
  64. <div class="skype"><a href="#"></a></div>
  65. </div>
  66. </div>
  67. </div>
  68. <div class="main_contain">
  69. <div class="menu">
  70. <a href="#" title="główna" class="a_home"></a>
  71. <a href="#" title="oferta" class="a_referens"></a>
  72. <a href="#" title="portfolio" class="a_portfolio"></a>
  73. <a href="#" title="kontakt" class="a_contact"></a>
  74. </div>
  75. <div class="preview">
  76. <div class="paddinguj_preview">
  77. <div class="projects">
  78. <a href="#"><img src="theme/proj/proj4.jpg" name="view" alt="" style="overflow:auto;border-width:0px;"/></a>
  79. </div>
  80. <div class="comment">Aby w pełni zobaczyć wszystkie moje projekty zapraszam do mojego portfolia : <a href="#">[portfolio]</a>
  81. </div>
  82. </div>
  83. </div>
  84. <div class="quote"> "Twoja <br/> &nbsp; &nbsp; &nbsp;wizytówka <br/> &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; w sieci"
  85. </div>
  86. <div class="main_text">
  87. <div class="left">
  88. <h1>strona główna</h1>
  89. <p> Lorem ipsum dolor sit <a href="#">amet consectetuer</a> Curabitur justo Aliquam dui aliquet. Ipsum In morbi <a href="#">Quisque</a> habitasse et non tincidunt magna <a href="#">cursus sit</a> . Condimentum Aenean non Lorem Phasellus adipiscing ligula semper sociis nisl urna. <a href="#">Eget</a> lacinia neque lorem dui ut vitae sed.
  90. Commodo eu id et semper vel Curabitur fringilla <a href="#">molestie lacinia</a> nec. Ipsum diam Donec sem Vestibulum fermentum <a href="#">Curabitur</a> Nunc Donec justo malesuada. Id Cum ornare laoreet justo <a href="#">sodales</a> turpis congue Phasellus tincidunt lorem. Id at magnis magna dictumst habitasse libero scelerisque laoreet <a href="#">sollicitudin</a> massa. A amet feugiat eros at.
  91. Non id elit nunc Aenean <a href="#">Phasellus</a> montes at pellentesque volutpat justo. Vestibulum et gravida <a href="#">vitae</a> auctor pede tincidunt sollicitudin felis nec Aliquam.
  92. </p>
  93. </div>
  94. <div class="right">
  95. <h1>gdzie pracujemy?</h1>
  96. <div class="frame_border">
  97. <iframe width="385" height="180" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="#"></iframe>
  98. </div>
  99. </div>
  100. </div>
  101. </div>
  102. <div class="footer">
  103. <div class="nav_foot">
  104. <a href="#">strona główna</a> :: <a href="#">oferta</a> :: <a href="#">portfolio</a> :: <a href="#">kontakt</a>
  105. </div>
  106. <div class="design">desgin by Tasjen</div>
  107. </div>
  108. </div>
  109. </div>
  110. <div class="right_plane"></div>
  111. <?php
  112. $result = mysql_query("SELECT `e-mail` FROM newsletter") or die("Nie udało się zaznaczyć rekordów");
  113.  
  114. // echo mysql_num_rows($resultat)."<br/>"; - ilość rekordów w tablicy newsletter
  115. // echo mysql_num_fields($resultat)."<br/>"; - ilość pól w tablicy newsletter
  116.  
  117.  
  118. for ($i = 0;$i<=mysql_num_rows($result);$i++) {
  119. $row = mysql_fetch_array($result);
  120.  
  121. //echo $row[0]."<br/>"; wyświetlenie rekordów z pola `e-mail`
  122. $meile = $row[0];
  123. echo $meile."<br/>";
  124. }
  125.  
  126.  
  127. @mail($meile,"Wiadomość z serwisu tasjen.pl","Zapraszamy na stronę www.tasjen.pl!","od tasjen.pl");
  128.  
  129.  
  130. mysql_close($polaczenie);
  131. ?>
  132. </body>
  133. </html>
  134.  



Ulysess
zamiast FOR użyj while,

  1.  
  2. $temat = "".$title." - Kalahir.pl";
  3. $headers = "MIME-Version: 1.0\r\n";
  4. $headers .= "Content-type: text/html; charset=UTF-8\r\n";
  5. $headers .= "From: support@kalahir.pl <support@kalahir.pl>\r\n";
  6.  
  7. while($row = mysql_fetch_assoc($result))
  8. {
  9. mail($email, $temat, $wiadomosc, $headers);
  10. }


nie wiem czy sobie zdajesz sprawe ale dając w FOR zapytanie zliczające przy każdym wywołaniu pętli liczy jeszcze raz :| co oznacza że jeśli w bazie jest 100000 emaili tyle razy to zapytanie się wykona..
Tasilvar
Extra! działa winksmiley.jpg dzięki za wskazówki. Temat można zamknąć smile.gif
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.