Jump to content

Nieuwsbriefsysteem


Recommended Posts

Geplaatst:

Hallo.

Weet iemand een gratis nieuwsbrief systeem? Ik heb er hier eentje voor $12,00 die er goed uit ziet en waar de demo ook degelijk is. Maar ik zoek eerst een gratis alternatief :) Is er een manier om dit zelf te maken of dat er gewoon een degelijk gratis systeem is.

Wat ik zelf zit te denken om te doen is om een normaal contact-formulier te maken maar dan prive waar alleen ik in kan komen en dat ik dan daarin alles netjes neer kan zetten :) Alleen dan was mijn bedoeling om bij de ontvanger een GET-command te plaatsen die alle gegevens uit een SQL database haalt. Maar nu komt het moeilijke, hoe kan ik zorgen dat een formulier van mij de e-mails juist uit een database haalt? En dan de grootste vraag -al denk ik dit zelf ook wel te kunnen vinden-, hoe maak ik een vakje die ervoor zorgt dat als bijvoorbeeld ik mijn email adres invoeg er automatisch een nieuwe rij in mijn SQL Table word gemaakt die de emails opslaat?

En nu het laatste :Dhttp://www.w3schools.com/php/php_mysql_connect.asp, hier maken ze contact met een Database, maar weet de code dan welke database ik bedoel? Want als ik nou meerdere databases heb dan weet ik niet hoe ik die ene moet kiezen.

Graag hulp :D

//Zammy

Geplaatst:

Mijn stukje code dat ik altijd gebruik en verbinding maakt met de database:

<?php
$dbname = 'dbname'; // naam van je database
$dbhost = 'localhost'; // naam van je host (meestal localhost)
$dbuser = 'root'; // gebruikersnaam van de database-gebruiker
$dbpass = ''; // wachtwoord van de database-gebruiker

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
mysql_select_db($dbname) or die(mysql_error());
?>

Vervolgens wil je e-mailadressen uit een tabel halen. Stel dat je een tabel 'users' hebt met onder andere een kolom 'email' en een kolom 'newsletter' (met een 1 als een gebruiker een nieuwsbrief wilt ontvangen). Dan kan je de e-mailadressen waar men een nieuwsbrief wil ontvangen, zo ophalen:

<?php
$query 		= mysql_query("SELECT * FROM users WHERE newsletter='1'") or die(mysql_error());  
while($results 	= mysql_fetch_array( $query )) {
	// hier komt je formulier te staan, maar om te testen:
	echo "Mail-adres: " . $results->email . "<br />";
	// nu komt bovenstaande er met elk adres te staan
}
?>

Het invoegen in dezelfde tabel gaat eveneens vrij eenvoudig met behulp van een formulier:

<?php
$query = mysql_query("INSERT INTO users (name, email, newsletter)
		VALUES('thunder', 'mijn@email.com', '1')") or die(mysql_error());
?>

Let er op dat je achter users alle kolommen noemt (ik heb zelf vaak nog een id-kolom die automatisch oploopt, maar die hoef je niet te noemen). Mocht je ergens geen waarde in willen zetten, dan typ je gewoon '' .

Hopelijk heb je hier wat aan. Zet de bovenste code in een configuratie-bestand, zodat je die overal kan includen. Dan hoef je dat niet op elke pagina te maken.

Geplaatst: (bewerkt)

[tekst]

Bedankt _O_ Maar als ik zeg maar die form maak, dan gebruik ik het formulier van Ewoud (zie HTML/PHP Hulp) die gebruik maakt van een Send.php, hierin komt dan de ontvanger te staan, hoe krijg ik dit dan geregeld dat er bij de ontvanger automatisch de gebruikers uit de tabel komen? Moet ik de code dan in Sent.php zetten?

Aha, ik heb uitgevonden dat ik bij de ontvanger ' . $results->email . ' moet zetten geloof ik :)

Bewerkt: door Zamg0d1
Geplaatst:

Ja, $results->email heeft het e-mailadres van een gebruiker die de nieuwsbrief heeft geaccepteerd. Die heb je in de regels daarvoor namelijk op gehaald.

Geplaatst:

Bij Cc zijn alle e-mailadressen ook voor iedereen zichtbaar. Je moet het dan als Bcc sturen (blind carbon copy). Maar dan moet je het origineel volgens mij wel naar tenminste één adres sturen, bijvoorbeeld naar één van jezelf.

Geplaatst: (bewerkt)

Kan iemand hier fouten in vinden? Want ik krijg een Parse Error:

Parse error: syntax error, unexpected T_STRING in /usr/home/deb15335/domains/gaming-freak.nl/public_html/Dark/form.php on line 9

Form.php

<?
include_once("config.php");
?>
<?php
       $query          = mysql_query("SELECT * FROM users") or die(mysql_error());  
       while($results  = mysql_fetch_array( $query )) {
               // hier komt je formulier te staan, maar om te testen:
               // nu komt bovenstaande er met elk adres te staan
			"<form name="contact" method="post">
				<table cellspacing="2" cellpadding="2">
				  <tr valign="top" align="left">
					<td> Editie:</td>
					<td>
						<input  name="week" type="text" size="25"/>
						</td>
				</tr>
				<td>Bericht: </td>
				<td><textarea name="bericht" rows="7" cols="40" /></textarea></td>
				</tr>
					<tr valign="top" align="left"> 
					  <td> </td> 
					  <td> 
						<input type="submit" name="Submit" value="Verzend"> 
					  </td> 
				</tr>
				</table>
				</form>";
       }
?>
<?php

$mailsupport= " . $results->email . ";
$titel= "Hillway -" . $_POST['week'];
// set datum 
       $datum = date("d.m.Y H:i"); 
// set ip 
       $ip = $_SERVER['REMOTE_ADDR']; 
// Bericht
$mssg .= $_POST['bericht'] . "\n" . "\n";
$mssg .= "Dit bericht is verstuurd op $datum";
//Afzender
$headers = "From: "Hillway Nieuwsbrief" <"zamg0d1@gaming-freak.nl">"; 

if ($_SERVER['REQUEST_METHOD'] == 'POST'){

} else { 

mail ($mailsupport, $titel, $mssg, $headers);
header ("Refresh: 0; URL=index.php"); 
}
}
?>

Config.php

<?php
       $dbname = 'deb15335_hillway'; // naam van je database
       $dbhost = 'localhost'; // naam van je host (meestal localhost)
       $dbuser = 'xxx'; // gebruikersnaam van de database-gebruiker
       $dbpass = 'xxx'; // wachtwoord van de database-gebruiker

       $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
       mysql_select_db($dbname) or die(mysql_error());
?>

(dbuser en dbpass gecensueerd, die gegevens kloppen gewoon)

Bewerkt: door Zamg0d1
Geplaatst:

Als je tekst wilt plaatsen in HTML-vorm, moet je er wel eerst echo voor plaatsen. Daarnaast moet je voor elke " die niet de tekst afsluit een \ zetten, anders gaat het alsnog compleet mis. Dankzij de backslash negeert hij de " op zo'n manier dat deze niet als PHP mee moet worden genomen. Dus om een begin te maken:

// nu komt bovenstaande er met elk adres te staan
echo "<form name=\"contact\" method=\"post\">
     <table cellspacing=\"2\" cellpadding=\"2\"><table cellspacing=\"2\" cellpadding=\"2\">
    etc etc";

Besef wel dat deze fout een fout is die je moet begrijpen, aangezien dit vaak voorkomt (bij beginners). Tel gewoon de regels en zie wat er fout is gegaan. Hier breekt hij dus gewoon op regel 9 af, omdat hij door het ontbreken van de echo niet weet wat hij moet doen.

Edit:

$mailsupport= " . $results->email . ";

Dat moet je veranderen in:

$mailsupport= $results->email;

Anders is het gewoon een string en zal het niet werken. Dat is toch echt de basis van PHP!

Edit2:

Evenals hier:

$headers = "From: "Hillway Nieuwsbrief" <"zamg0d1@gaming-freak.nl">"; 

Probeer deze zelf op te lossen, maar dit gaat ook gegarandeerd mis.

Geplaatst: (bewerkt)

Ik heb het probleem opgelost, geen error deze keer maar nu krijg ik een wit scherm.... http://gaming-freak.nl/Dark/form.php werkt niet :N

form.php:

<?
include_once("config.php");
?>
<?php
       $query          = mysql_query("SELECT * FROM users") or die(mysql_error());  
       while($results  = mysql_fetch_array( $query )) {
               // hier komt je formulier te staan, maar om te testen:
               // nu komt bovenstaande er met elk adres te staan
			echo '<form name="contact" method="post">
				<table cellspacing="2" cellpadding="2">
				  <tr valign="top" align="left">
					<td> Editie:</td>
					<td>
						<input  name="week" type="text" size="25"/>
						</td>
				</tr>
				<td>Bericht: </td>
				<td><textarea name="bericht" rows="7" cols="40" /></textarea></td>
				</tr>
					<tr valign="top" align="left"> 
					  <td> </td> 
					  <td> 
						<input type="submit" name="Submit" value="Verzend"> 
					  </td> 
				</tr>
				</table>
				</form>';
       }
?>
<?php

$mailsupport= 'zamg0d1@gaming-freak.nl';
$titel= "Hillway Nieuwsbrief -" . $datum;
// set datum 
       $datum = date("d.m.Y H:i"); 
// Bericht
$mssg .= $_POST['bericht'] . "\n" . "\n";
$mssg .= "Dit bericht is verstuurd op $datum";
//Afzender
$headers .= 'From: Hillway  <no-reply@gaming-freak.nl>' . "\r\n";
$headers .= 'Bcc: $results->email' . "\r\n";

if ($_SERVER['REQUEST_METHOD'] == 'POST'){

} else { 

mail ($mailsupport, $titel, $mssg, $headers);
}
?>

En de config.php is niet aangepast.. Iemand die hier fouten in ziet of zou dit in de database kunnen liggen? Al denk ik van wel, iemand die mij hiermee zou kunnen helpen? Bijvoorbeeld met tabellen aanmaken etc.? Dan zou ik die persoon heel dankbaar zijn :D Want ik snap phpMyAdmin wel, met dingen bewerken etc, maar zelf tables/rows/columns maken heb ik nooit gedaan.

Bewerkt: door Zamg0d1
Geplaatst:

staan er rijen in de users-tabel??

Overigens moet je dezes nog even vervangen:

$mssg .= "Dit bericht is verstuurd op $datum";

naar:

$mssg .= "Dit bericht is verstuurd op ".$datum;

$headers .= 'Bcc: $results->email' . "\r\n";

naar:

$headers .= 'Bcc: '.$results['email'] . "\r\n";

Moet die mail trouwens niet IN de while-loop??

Of anders: waarom staan de form EN de mail() in 1 pagina?

Dat gaat niet werken natuurlijk..

Doe dit:

if ($_SERVER['REQUEST_METHOD'] == 'POST'){

en daarin de while-loop van de users, met daarin de mail()-functie met wat daarbij hoort

en dan een else, met daarin het <form>

Overigens, als je elke keer dat je loopt een mail stuurt hoeft die bcc niet, dat hoeft alleen als je in 1 keer de mail verzend.

khoop dat het duidelijk is :puh: .

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...