login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Simpel Mailinglist (Opgelost)

Offline krahk - 27/05/2008 15:36
Avatar van krahkNieuw lid Goeiemiddag beste mensen op Sitemasters

Ik ben al een tijdje vaste bezoeker op deze site en heb vaak gevonden waar ik naar zocht (bedankt mensen die tutorials en scripts hebben gepost!) maar zit nu toch met een klein probleempje:

Ik heb nu een uiterst simpele form waarmee mensen hun email adress kunnen submitten zodat ze staan "ingeschreven" voor een nieuwsbrief.

Het bestaat uit 1 veld genaamd "Email" en een submit knop die dat ene veld in de database plaatst in een tabel "mailinglist" met 1 veld "Email"

Vandaar uit exporteer ik alle adressen naar een Excel bestand en kan ik ze vandaaruit kopieren.

Dus in principe is het systeem nu goed.

Alleen ik wil er nog 2 functies bij:

Bevestigings mail:
Iemand ontvangt een standaard mail zodra hij zijn email heeft ingevoerd.
Dat hoeft dus geen mail te zijn met een unieke actieverings links etc gewoon een html mailtje.
Kan je via een php scriptje een bestand laten sturen naar het email adress dat die persoon zojuist heeft ingevoerd?
(als het een klein scriptje is zou je het dan in je comment willen posten als het ingewikkeldre is zou je dan hints willen geven waar ik op kan zoeken? thanks!)

Uitschrijven:
Iemand moet zich natuurlijk kunnen uitschrijven en ik wil dit zo makkelijk mogelijk maken (bijvoorbeeld een linkje in de nieuwsbrief of dat ze een mail kunnen sturen naar een adres aan mijn kant waardoor hun mail ook automatisch uit de database word gehaald)
ik zal mijn code plaatsen zodat jullie eventueel kunnen zien wat mijn opbouw is

  1. <?php // index.php
  2. // This script adds a blog entry to the database.
  3.  
  4. // Address error handing.
  5. ini_set ('display_errors', 1);
  6. error_reporting (E_ALL & ~E_NOTICE);
  7.  
  8. if (isset ($_POST['submit'])) { // Handle the form.
  9.  
  10. // Connect and select.
  11. if ($dbc = @mysql_connect ('server', 'user', 'pass')) {
  12.  
  13. if (!@mysql_select_db ('database')) {
  14. die ('<p>Could not select the database because: <b>' . mysql_error() . '</b></p>');
  15. }
  16.  
  17. } else {
  18. die ('<p>Could not connect to MySQL because: <b>' . mysql_error() . '</b></p>');
  19. }
  20.  
  21.  
  22. // Define the query.
  23. $query = "INSERT INTO Mailinglist (Email) VALUES ('{$_POST['Email']}')";
  24.  
  25. // Execute the query.
  26. if (@mysql_query ($query)) {
  27. print '<p>You are now subscribed.</p>';
  28. } else {
  29. print "<p>You were not subscribed to the list. Please try again later or contact the sitemanager: <b>" . mysql_error() . "</b>. The query was $query.</p>";
  30. }
  31.  
  32.  
  33. }
  34. ?>


dan de html form die erbij hoort:
  1. <form name="mailinglist" method="post" action="index.php" onSubmit="return ValidateForm()">
  2. <input name="Email" type="text" class="form" maxlength="50" onblur="if (value == '') {value = 'Email'}" onfocus="if (value == 'Email') {value =''}" value="Email" />
  3. <input name="submit" type="submit" value="SUBSCRIBE" style="border-right: #cc3300 1px solid; border-top: #cc3300 1px solid; border-left: #cc3300 1px solid; border-bottom: #cc3300 1px solid; font-size: 10px; color: #ffffff; font-family: verdana; background-color:#ff6600" />
  4. </form>


Er zit een javascript email validator bij maar het lijkt me niet nodig om die te posten.

Hoop dat jullie mij kunnen helpen,
Alvast bedankt!

Raoul

12 antwoorden

Gesponsorde links
Offline vinTage - 27/05/2008 15:52
Avatar van vinTage Nieuw lid
  1. <?php // index.php
  2. // This script adds a blog entry to the database.
  3.  
  4. // Address error handing.
  5. ini_set ('display_errors', 1);
  6. error_reporting (E_ALL & ~E_NOTICE);
  7.  
  8. if (isset ($_POST['submit'])) { // Handle the form.
  9.  
  10. // Connect and select.
  11. if ($dbc = @mysql_connect ('server', 'user', 'pass')) {
  12.  
  13. if (!@mysql_select_db ('database')) {
  14. die ('<p>Could not select the database because: <b>' . mysql_error() . '</b></p>');
  15. }
  16.  
  17. } else {
  18. die ('<p>Could not connect to MySQL because: <b>' . mysql_error() . '</b></p>');
  19. }
  20.  
  21.  
  22. // Define the query.
  23. $query = "INSERT INTO Mailinglist (Email) VALUES ('{$_POST['Email']}')";
  24.  
  25. // Execute the query.
  26. if (@mysql_query ($query)) {
  27. print '<p>You are now subscribed.</p>';
  28. $bericht = "een hele hoop meuk hiero \r\n";
  29. $bericht .= "en nog meer meuk ! \r\n";
  30. $bericht .= "etc\r\n";
  31.  
  32. $headers = .....http://www.sitemasters.be/tutorials/4/1/44/PHP/Mail-functie#headers
  33. mail($_POST['Email'], "Aanmelding", $bericht, $headers);
  34. } else {
  35. print "<p>You were not subscribed to the list. Please try again later or contact the sitemanager: <b>" . mysql_error() . "</b>. The query was $query.</p>";
  36. }
  37.  
  38.  
  39. }
  40. ?>


uitschrijven kan je dmv een pagina waar je via de url de juiste email snaait en delete.
  1. "DELETE ... WHERE Email = '".mysql_real_escape_string($_GET['email'])."' "
Offline Joost - 27/05/2008 15:55 (laatste wijziging 27/05/2008 15:57)
Avatar van Joost PHP expert wat is meuk?:D

En een activatie kan je doen door bijvoorbeeld een key te genereren, en die dan in een database te stoppen.
Dan stuur je die persoon een mail met daarin een URL met die key erbij.
Als die key dan in de database staat wordt hij pas toegevoegd.
Offline nick5556 - 28/05/2008 06:54
Avatar van nick5556 PHP beginner Hoe krijg je die key achter een pagina?, gwoon met een pagina met de &_GET functie?
Offline krahk - 28/05/2008 09:35
Avatar van krahk Nieuw lid thanks voor de reacties, ik ga nu ff proberen om alles te laten werken.

Een activatie is denk ik niet nodig want het gaat in dit geval niet om een forum of iets echt groots en ik wil dat bezoekers zo min mogelijk moeite hoeven te doen voor subscriben en unsubscriben
Offline vinTage - 28/05/2008 10:14
Avatar van vinTage Nieuw lid Dus ik kan daar gewoon langskomen en IEDEREE die ik maar ken gewoon aanmelden voor jouw nieuwsbrief ? 
Offline krahk - 28/05/2008 16:43
Avatar van krahk Nieuw lid nee want er zit php code in die dubbele entry's tegenhoudt,
tenzij je heel veel nieuwsbrieven wilt ontvangen 
Offline Frust - 29/05/2008 08:34
Avatar van Frust Nieuw lid vinTage bedoelt dat je iemand anders zijn email kan aanmelden voor uw nieuwsbrief.

Hij kan er nu wel voor uitschrijven indien hij niet geïnteresseerd is  
Offline krahk - 29/05/2008 12:17 (laatste wijziging 29/05/2008 12:20)
Avatar van krahk Nieuw lid heb besloten om toch geen bevestigings mail te sturen want wil nu kijken of het kan dat mensen met een radiobutton kunnen aangeven of ze willen subscriben of unsubscriben:

Voorbeeld:
[url]https://diamondsupplyco.3dcartstores.com/[/url]

de form bestaat uit:
een veld waar je alleen email invult.
2 radio buttons (1 voor subscribe, 2 voor unsubscribe)
en een submit knop.

Heb nu een javascriptje dat email validate op submit.
daarna wil ik dat via php word gekeken welke radio button er word gebruikt zodat hij kan kiezden welke van de 2 queries hij gaat uitvoeren.

is het radiobutton 1 dan moet hij dus gewoon entry in de db zetten (dat lukt nu) alleen wil ik nu ook dat hij checked of er dan geen dubbele entries in komen.

is het radiobutton 2 dan verwijdert hij de entry met dezelfde email als dat men in het veld heeft getypt.
Dat lukt me nog niet helemaal...
script:
  1. $query = "DELETE FROM mailinglist WHERE email={$_POST['Email']}";


krijg hierbij de error :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@live.nl' at line 1. The query was DELETE FROM Mailinglist WHERE Email=krahk@live.nl.

terwijl Email gewoon de waarde is uit mn form
Offline Martijn - 29/05/2008 12:52 (laatste wijziging 29/05/2008 12:52)
Avatar van Martijn Crew PHP
  1. "WHERE email='".$_POST['Email']."'
Offline krahk - 29/05/2008 13:02 (laatste wijziging 29/05/2008 13:41)
Avatar van krahk Nieuw lid aight thanks!
dat werkt (met een beetje tekens omwisselen)

heb nu de code :
  1. $query = "DELETE FROM Mailinglist WHERE Email='{$_POST['Email']}'";


en hij verwijdert nu dus de emails uit de tabel 

nu nog dat ik kan kiezen met mn radiobutton welke actie hij uitvoert
(add of delete)

ik dacht zelf aan een standaard variabele die wanneer je submit veranderd in de waarde van de gekozen radiobutton

$keuze='subscribe'

if $keuze="subscribe" add to database...
elseif $keuze="unsibscribe" delete from database
else die (oid)

nu weet ik alleen niet hoe ik die $keuze moet laten veranderen in de value van de radio


en kijken voor dubbele entries

Kom al aardig op weg met jullie hulp! 
Offline TotempaaltJ - 29/05/2008 13:53
Avatar van TotempaaltJ PHP interesse Even die radiobuttons:
  1. <input type="radio" name="sub_unsub" value="subscribe" /> Subscribe<br />
  2. <input type="radio" name="sub_unsub" value="unsubscribe" /> Unsubscribe


En dan kan je deze met de volgende php opvragen:
  1. $keuze = $_POST['sub_unsub'];
Offline krahk - 29/05/2008 14:16 (laatste wijziging 29/05/2008 14:48)
Avatar van krahk Nieuw lid thanks, nu meteen ff proberen!

heb al middel tegen dubbele posts, UNIQUE index op de email kolom dat werkt perfect, naast dat bezoekers een mysql error zien als ze dubbel toevoegen.
Maar het kan iig niet gebeuren 

Edit: Het werkt thanks!

nog het allerlaatste ding:
hoe zorg ik ervoor dat als iemand een dubbele entry toevoegd ipv:
You were not subscribed to the mailinglist. Please try again later or contact the sitemanager: Duplicate entry 'krahk@live.nl' for key 2. The query was INSERT INTO Mailinglist (Email) VALUES ('krahk@live.nl').You were not subscribed to the mailinglist. Please try again later or contact the sitemanager: Duplicate entry 'krahk@live.nl' for key 2. The query was INSERT INTO Mailinglist (Email) VALUES ('krahk@live.nl').

dat ik mijn eigen foutmelding kan gebruiken zoiets als:
U bent al toegevoegd.

thanks again!
Raoul


ik post nu de code die ik heb voor het geval andere mensen hem willen gebruiken (ik haal alleen mn wachtwoord eruit enzo dus moet je zelf nog veranderen als je het gebruikt)

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  5. <title>Mailinglist Subscribe/Unsubscribe</title>
  6. <style type="text/css">
  7. body {
  8. color:#FFFFFF;
  9. }
  10. </head>
  11.  
  12. <body bgcolor=#000000>
  13. <table align="center">
  14. <tr><td align="center">
  15.  
  16. <script language = "Javascript">
  17. <!--
  18. /**
  19. * DHTML email validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
  20. */
  21.  
  22. function echeck(str) {
  23.  
  24. var at="@"
  25. var dot="."
  26. var lat=str.indexOf(at)
  27. var lstr=str.length
  28. var ldot=str.indexOf(dot)
  29. if (str.indexOf(at)==-1){
  30. alert("Invalid E-mail ID")
  31. return false
  32. }
  33.  
  34. if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
  35. alert("Invalid E-mail ID")
  36. return false
  37. }
  38.  
  39. if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
  40. alert("Invalid E-mail ID")
  41. return false
  42. }
  43.  
  44. if (str.indexOf(at,(lat+1))!=-1){
  45. alert("Invalid E-mail ID")
  46. return false
  47. }
  48.  
  49. if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
  50. alert("Invalid E-mail ID")
  51. return false
  52. }
  53.  
  54. if (str.indexOf(dot,(lat+2))==-1){
  55. alert("Invalid E-mail ID")
  56. return false
  57. }
  58.  
  59. if (str.indexOf(" ")!=-1){
  60. alert("Invalid E-mail ID")
  61. return false
  62. }
  63.  
  64. return true
  65. }
  66.  
  67. function ValidateForm(){
  68. var emailID=document.mailinglist.Email
  69.  
  70. if ((emailID.value==null)||(emailID.value=="")){
  71. alert("Please Enter your Email ID")
  72. emailID.focus()
  73. return false
  74. }
  75. if (echeck(emailID.value)==false){
  76. emailID.value=""
  77. emailID.focus()
  78. return false
  79. }
  80. return true
  81. }
  82. -->
  83.  
  84. <form name="mailinglist" method="post" action="index.php" onSubmit="return ValidateForm()">
  85. <input name="Email" type="text" class="form" maxlength="50" onblur="if (value == '') {value = 'Email'}" onfocus="if (value == 'Email') {value =''}" value="Email" />
  86. <input name="submit" type="submit" value="SUBMIT" style="border-right: #cc3300 1px solid; border-top: #cc3300 1px solid; border-left: #cc3300 1px solid; border-bottom: #cc3300 1px solid; font-size: 10px; color: #ffffff; font-family: verdana; background-color:#ff6600" /><br />
  87. <input type="radio" name="sub_unsub" value="subscribe" checked="checked" /> Subscribe
  88. <input type="radio" name="sub_unsub" value="unsubscribe" /> Unsubscribe
  89. </form>
  90.  
  91. <?php // index.php
  92. // This script adds an entry to the database.
  93.  
  94. // Address error handing.
  95. ini_set ('display_errors', 1);
  96. error_reporting (E_ALL & ~E_NOTICE);
  97.  
  98. if (isset ($_POST['submit'])) { // Handle the form.
  99.  
  100. // Connect and select.
  101. if ($dbc = @mysql_connect ('server', 'user', 'password')) {
  102.  
  103. if (!@mysql_select_db ('database')) {
  104. die ('<p>Could not select the database because: <b>' . mysql_error() . '</b></p>');
  105. }
  106.  
  107. $keuze = $_POST['sub_unsub'];
  108. if ($keuze == 'subscribe') { // Define the query.
  109. $query = "INSERT INTO Mailinglist (Email) VALUES ('{$_POST['Email']}')";
  110.  
  111. // Execute the query.
  112. if (@mysql_query ($query)) {
  113. print '<p>You are now subscribed.</p>';
  114. } else {
  115. print "<p>You were not subscribed to the mailinglist. Please try again later or contact the sitemanager: <b>" . mysql_error() . "</b>. The query was $query.</p>";
  116. }
  117. }
  118.  
  119. else if ($keuze == 'unsubscribe') { //Define the query
  120. $query = "DELETE FROM Mailinglist WHERE Email='{$_POST['Email']}'";
  121.  
  122. // Execute the query.
  123. if (@mysql_query ($query)) {
  124. print '<p>You are removed from the list.</p>';
  125. } else {
  126. print "<p>You were not removed from the list. Please try again later or contact the sitemanager: <b>" . mysql_error() . "</b>. The query was $query.</p>";
  127. }
  128. }
  129.  
  130. } else {
  131. die ('<p>Could not connect to MySQL because: <b>' . mysql_error() . '</b></p>');
  132. }
  133.  
  134. mysql_close();
  135.  
  136. }
  137. ?>
  138.  
  139. </td></tr></table>
  140. </body>
  141. </html>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.278s