login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Automatisch email verzenden als er nieuw nieuwtje is (Opgelost)

Offline SimonDW - 30/03/2012 23:49
Avatar van SimonDWNieuw lid Ik heb op mijn website een mailinglist. E-mail adressen zitten in een database.

Verder plaats ik regelmatig nieuws op m'n site. Zit uiteraard ook in een database. Nu zou ik graag de mensen automatisch een mailtje sturen als ik een nieuwsitem online zet.

Hoe kan ik mijn database 'email' koppelen aan de database 'nieuws' en vervolgens de laatste gegevens uitlezen (nl. het id en nieuwstitel).

Wie helpt me op weg?

Tnx!

7 antwoorden

Gesponsorde links
Offline icemar - 31/03/2012 09:14
Avatar van icemar Lid Je kan bv na het online zetten een functie maken die er voor zorgt als je je artikel online zet de mailijst aan roept met de link naar het artikel.

Momenteel weet ik niet hoe en wat je gebruikt daarvoor.

Offline SimonDW - 31/03/2012 14:14 (laatste wijziging 31/03/2012 14:15)
Avatar van SimonDW Nieuw lid Dit gebruik ik, maar probleem is dat de mail 3x verzonden wordt met daarin elke keer één nieuwsitem ipv 1 mail met 3 nieuwsitems...

  1. <?php
  2. include("database.php");
  3. if ($submit) {
  4. $server = mysql_connect("$host","$login","$pass");
  5. mysql_select_db("$database", $server);
  6. $sql = "SELECT * FROM mailing";
  7. $resultaat = mysql_query($sql);
  8. while ($record = mysql_fetch_object($resultaat))
  9. {
  10. $query = "SELECT * FROM nieuws ORDER BY id DESC limit 0,3";
  11. $result = mysql_query($query);
  12. while ($row = mysql_fetch_array($result))
  13. {
  14. $headers = "MIME-Version: 1.0\n";
  15. $headers .= "Content-Type: text/html; charset=utf-8\n";
  16. $headers .= "From: Nieuwsbrief <mijn@emailadres.be>\n";
  17. $message = "
  18. <html>
  19. <body>
  20. <font face=\"verdana\" size=\"2\">
  21. <p>Recentste nieuwtjes:</p>
  22. <p>$row[titel]</p>
  23. ".$bericht."
  24. <p>&nbsp;</p>
  25. </font>
  26. <font face=\"verdana\" size=\"1\">
  27. <a href=\"#\">Klik hier om u uit te schrijven.</a>
  28. </font>
  29. </body>
  30. </html>
  31. ";
  32. mail($record->email, $onderwerp, $message, $headers);
  33. }}
  34. echo "<center>";
  35. echo "<p>Mailing werd succesvol verzonden.<br>";
  36. echo "<a href=\"index.php?module=mailing\">Keer terug naar het overzicht</a>.</p>";
  37. echo "</center>";
  38. }
  39. else {
  40. ?>
Offline Pieter - 31/03/2012 19:03
Avatar van Pieter Gouden medaille

SEO guru
Je moet dan ook geen mail in die while zetten hé... Per nieuwsitem wordt zo een mail verstuurd.

Die mail() zet je beter buiten je 2e while.
Offline christophe195 - 31/03/2012 20:01 (laatste wijziging 31/03/2012 20:05)
Avatar van christophe195 Lid
het is beter om net na het invoegen van gegevens in de database de mail te versturen
anders worden

hoe?
zet dit bovenaan of in een instellinge bestand
  1. // Geef GELDIGE adressen op
  2. // Een korte benaming voor jouw website
  3. $website_naam = 'Mijn Site';
  4. // Jouw eigen geldige emailadres
  5. $eigen_emailadres = 'mijn_emailadres@mijn_domein.nl';
  6. // Een geldig emailadres voor errors
  7. $error_emailadres = 'mijn_emailadres@mijn_domein.nl';
  8. // Een geldig emailadres of helemaal leeg laten
  9. $bcc_emailadres = 'geldig_emailadres@geldig_domein.nl';
  10. // HTML mail? True/False
  11. $html = true;

zet dit in het bestand
  1. if($_SERVER['REQUEST_METHOD'] == "POST") {
  2. // gegevens invoegen
  3. $invoegen_sql = "
  4. INSERT INTO werknemers // dit is een voorbeeld dit moet je zelf nog aanpassen
  5. (
  6. voornaam,
  7. tussenvoegsel,
  8. achternaam,
  9. geboortedatum,
  10. salaris_schaal
  11. )
  12. VALUES
  13. (
  14. 'Nico',
  15. 'de',
  16. 'Boer',
  17. '1958-03-24',
  18. 18
  19. )
  20. ";
  21.  
  22. if(!$invoegen_uitvoer = mysql_query($invoegen_sql))
  23. {
  24. echo 'Oeps een error,<br><hr>'.mysql_error().'<br />In query: '.$invoegen_sql;
  25. }
  26. else
  27. {
  28. echo 'Gegevens zijn toegevoegd<br>';
  29. // gegevens naar waar de mail verstuurt moet worden ophalen
  30. $mailergegevens_ophalen = "
  31. SELECT
  32. voornaam
  33. FROM
  34. werknemers
  35. ";
  36.  
  37. if(!$mailergegevens = mysql_query($mailergegevens_ophalen))
  38. {
  39. echo 'Oeps er was een foutje<br><hr>'.mysql_error().'<br />In query: '.$mailergegevens_ophalen;
  40. }
  41. elseif(mysql_num_rows($mailergegevens) == 0)
  42. {
  43. echo 'Geen resultaten gevonden';
  44. }
  45. else
  46. {
  47. while($mailergegeven = mysql_fetch_assoc($mailergegevens))
  48. { // mailtjes versturen.
  49. //verstuurder in orde brengen
  50. // De naam van de verzender
  51. $naam_verzender = 'Afzender';
  52. // Het geldige emailadres van de afzender
  53. $email_verzender = 'emailadres_van_verzender@zijn_domein.nl';
  54. // De headers samenstellen
  55. $headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . PHP_EOL;
  56. $headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . PHP_EOL;
  57. $headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . PHP_EOL;
  58. $headers .= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . PHP_EOL : '';
  59. $headers .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL;
  60. $headers .= 'X-Priority: Normal' . PHP_EOL;
  61. $headers .= ($html) ? 'MIME-Version: 1.0' . PHP_EOL : '';
  62. $headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL : '';
  63. }
  64. }
  65. }
  66. } else {
  67. //form
  68. }


dit kan je gebruiken voor 1 item de keer
( sorry had verkeert gelezen )
Offline SimonDW - 31/03/2012 22:58 (laatste wijziging 01/04/2012 12:55)
Avatar van SimonDW Nieuw lid
Pieter schreef:
Je moet dan ook geen mail in die while zetten hé... Per nieuwsitem wordt zo een mail verstuurd.

Die mail() zet je beter buiten je 2e while.


Als ik dat doe Pieter dan wordt er helemaal geen mail verzonden...


Update: ik heb de gegevens m.b.t. nieuws in het formulier gezet. Werkt perfect :-) Dus case closed.
Offline Pieter - 01/04/2012 13:59 (laatste wijziging 01/04/2012 14:00)
Avatar van Pieter Gouden medaille

SEO guru
Ik zag nergens in je bovenstaande code een formulier..  

BTW: je eigen antwoord als oplossing aanduiden is not done. Je had beter dan de persoon aangeduid die je best op weg hielp of gewoon het topic als opgelost beschouwd (zonder jezelf de credits te geven).
Bedankt door: SimonDW
Offline SimonDW - 01/04/2012 16:08 (laatste wijziging 03/04/2012 09:33)
Avatar van SimonDW Nieuw lid Ik zal de volledige code eens posten.

met de if ($submit) kon je vermoeden dat er een formulier oid bij hoorde 

Ivm eigen antwoord en oplossing: wou gewoon forum overzichtelijk houden zonder mezelf credits te geven  

[update] bij deze de code. Hopelijk is iemand hier iets mee

  1. <?php
  2. include("database.php");
  3. if ($submit) {
  4. $server = mysql_connect("$host","$login","$pass");
  5. mysql_select_db("$database", $server);
  6. $sql = "SELECT * FROM mailing";
  7. $resultaat = mysql_query($sql);
  8. while ($record = mysql_fetch_object($resultaat))
  9. {
  10. $headers = "MIME-Version: 1.0\n";
  11. $headers .= "Content-Type: text/html; charset=utf-8\n";
  12. $headers .= "From: Nieuwtjes van vandaag <mijn@mailadres.be>\n";
  13. $message = "
  14. <html>
  15. <body>
  16. <font face=\"verdana\" size=\"2\">
  17. ".$nieuwtjes."
  18. ".$bericht."
  19. <p>&nbsp;</p>
  20. </font>
  21. <font face=\"verdana\" size=\"1\">
  22. <a href=\"#\">Klik hier om u uit te schrijven.</a>
  23. </font>
  24. </body>
  25. </html>
  26. ";
  27. mail($record->email, $onderwerp, $message, $headers);
  28. }
  29. echo "<center>";
  30. echo "<p>Mailing werd succesvol verzonden.<br>";
  31. echo "<a href=\"#\">Keer terug naar het overzicht</a>.</p>";
  32. echo "</center>";
  33. }
  34. else {
  35. ?>
  36.  
  37. <p>Hiermee worden de 3 recentste items via e-mail naar de website adressenlijst verzonden.</p>
  38. <p>Desgewenst kan u nog tekst typen, bijvoorbeeld <em>'verwacht morgen extra nieuws ivm nieuwe programmatie VT4'</em>,...</p>
  39. <p>De zelf bijgevoegde tekst komt onderaan het mailbericht (dus onder de 3 recentste items) te staan.</p>
  40. <p>&nbsp;</p>
  41. <form action="#" method="post" name="FormName">
  42. <table border="0" cellspacing="2" cellpadding="0" align="center">
  43. <tr>
  44. <td width="150">Onderwerp:</td>
  45. <td width="350"><input type="text" name="onderwerp" size="30" border="0" value="Recente nieuwtjes"></td>
  46. </tr>
  47. <tr>
  48. <td width="150" valign="top">Bericht:</td>
  49. <td width="350"><textarea name="bericht" rows="15" cols="150"></textarea>
  50. <?
  51. $query = "SELECT * FROM nieuws ORDER BY id DESC limit 0,3";
  52. $result = mysql_query($query);
  53. ?>
  54. <textarea name="nieuwtjes" rows="10" cols="150" style="display: none;">
  55. <? while ($row = mysql_fetch_array($result))
  56. {
  57. if ($row[cat]=='nws') {print("<p>Nieuws: $row[titel]. <a href=#>Klik hier voor het artikel</a>.</p>");}
  58. else if ($row[cat]=='upd') {print("<p>Update: $row[titel]. <a href=#>Klik hier voor het artikel</a>.</p>");}
  59. else {print(""); }
  60. }
  61. ?>
  62. </textarea></td>
  63. </tr>
  64. <tr>
  65. <td colspan="2" valign="top"><div align="center">
  66. <input type="hidden" name="submit" value="yes" border="0">
  67. <input type="submit" name="verzenden" class="input" value="Versturen" border="0">
  68. </div></td>
  69. </tr>
  70. </table>
  71. </form>
  72. <?
  73. }
  74. ?>
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.219s