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
<?php // index.php
// This script adds a blog entry to the database.
// Address error handing.
ini_set ('display_errors', 1);
error_reporting (E_ALL & ~E_NOTICE);
if (isset ($_POST['submit'])) { // Handle the form.
// Connect and select.
if ($dbc = @mysql_connect ('server', 'user', 'pass')) {
if (!@mysql_select_db ('database')) {
die ('<p>Could not select the database because: <b>' . mysql_error() . '</b></p>');
}
} else {
die ('<p>Could not connect to MySQL because: <b>' . mysql_error() . '</b></p>');
}
// Define the query.
$query = "INSERT INTO Mailinglist (Email) VALUES ('{$_POST['Email']}')";
// Execute the query.
if (@mysql_query ($query)) {
print '<p>You are now subscribed.</p>';
} else {
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>";
}
mysql_close();
}
?>
<?php // index.php
// This script adds a blog entry to the database.
// Address error handing.
ini_set ('display_errors', 1);
error_reporting (E_ALL & ~E_NOTICE);
if (isset ($_POST['submit'])) { // Handle the form.
// Connect and select.
if ($dbc = @mysql_connect ('server', 'user', 'pass')) {
if (!@mysql_select_db ('database')) {
die ('<p>Could not select the database because: <b>' . mysql_error() . '</b></p>');
}
} else {
die ('<p>Could not connect to MySQL because: <b>' . mysql_error() . '</b></p>');
}
// Define the query.
$query = "INSERT INTO Mailinglist (Email) VALUES ('{$_POST['Email']}')";
// Execute the query.
if (@mysql_query ($query)) {
print '<p>You are now subscribed.</p>';
$bericht = "een hele hoop meuk hiero \r\n";
$bericht .= "en nog meer meuk ! \r\n";
$bericht .= "etc\r\n";
$headers = .....http://www.sitemasters.be/tutorials/4/1/44/PHP/Mail-functie#headers
mail($_POST['Email'], "Aanmelding", $bericht, $headers);
} else {
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>";
}
mysql_close();
}
?>
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.
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
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:
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:
$query = "DELETE FROM mailinglist WHERE email={$_POST['Email']}";
$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.
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)
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>";
}
}
else if ($keuze == 'unsubscribe') { //Define the query
$query = "DELETE FROM Mailinglist WHERE Email='{$_POST['Email']}'";
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>";
}
}
} else {
die ('<p>Could not connect to MySQL because: <b>' . mysql_error() . '</b></p>');