mailen met php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Nathan f

nathan f

26/08/2010 17:13:51
Quote Anchor link
dit is de nieuwe post, hopelijk komt het nu duidelijker over.

wat heb ik, een Linux machine met apache php en mysql.

functionaliteit:
ik heb een mysql database gevuld met data (inclusief mail adressen)
Ik heb een php script geschreven dat bepaalde data uit de mysql database op zoekt en weer geeft in php. Nu is het de bedoeling dat deze data in html verstuurd word naar e-mail adressen die ik ook uit de database gehaald heb.

Er zijn een aantal php files die ik hiervoor gebruik, te weten:

index.php - hierin kun je een zoekopdracht invoeren

results.php - hier word de connectie met de mysql opgebouwt en de queries uitgevoerd om de gegevens die ik nodig heb te verzamelen. Vanuit results word het verstuurd naar viewmail.php

viewmail.php - in deze file word template.php geinclude en worden gegevens die zijn opgehaald via results.php toegevoegd. je ziet dus een pagina die zo gestuurd kan worden.

mailing.php - hier word de mail verstuurd naar de e-mail adressen die zijn opgehaald via results.php.

Om de informatie door te sturen naar de volgende pagina gebruik ik bv: :

<form name="form" action="results.php"> (of viewmail.php / mailing.php
<input type="submit" name="submit" Value="Send" ><br />
</form>

Het probleem is, dat zodra ik bij mailing.php aankom er 2 dingen niet gebeuren.

de gegevens die zijn gevuld, worden in viewmail.php niet meegenomen.
dit zie ik door in mailing.php include("viewmail.php); te doen

Ik dacht eerst dat ik de variabelen opnieuw moest definieren in een string ($) op de pagina mailing.php, echter heeft dit geen zin. de velden blijven leeg.

het script mailt niet het template dat ik wil.
Ik moet eerlijk zeggen dat ik niet weet hoe ik moet zeggen dat ik niet weet hoe het script viewmail.php moet sturen. M.a.w. hoe defineer ik dit?

mail($to,$subject,$headers,$body); is wat ik voor het mailen gebruik.

Echter mailt het script wel, zoals gezegd word in results.php het mail adres opgehaald, en word gebruikt in het mail script.
wat gemaild word is plain txt dat toegevoegd word via:

$body =" Dit is een Test Bericht ";

hopelijk is het nu duidelijk wat ik wil bereiken.

thx
nathan
 
PHP hulp

PHP hulp

08/05/2024 21:46:06
 
Arjan -

Arjan -

26/08/2010 17:28:18
Quote Anchor link
Je kan inderdaad een $_POST variabele niet meenemen naar de 2e pagina die je aanroept vanaf dat je de post request maakt. Hiervoor kan je SESSIONS gebruiken ($_SESSION['jouwtekst'] = $_POST['bericht'];).

Wel vraag ik mij af waarom je zoveel bestanden gebruikt voor maar een paar bewerkingen?

En ik raad je aan om in ieder geval PHPMailer of SwiftMailer te gebruiken voor het versturen van je e-mails.

En hoe ziet je template er precies uit, want je kan bijvoorbeeld via file_get_contents($bestand); een template (bijvoorbeeld html) inladen en bepaalde woorden vervangen door een tekst, bijvoorbeeld:

Template:
<html>
<body>
#tekst#
</body>
</html>

viewmail.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$tekst
= $_SESSION['tekst']; // Dit zal dan een POST waarde moeten bevatten of zoiets...
$tekst = htmlspecialchars($tekst);
$tekst = nl2br($tekst);

$template = file_get_contents('template.html');

$template = str_replace('#tekst#',$tekst,$template);
?>



Of begrijp ik het nu nog steeds niet?
Gewijzigd op 26/08/2010 17:30:11 door Arjan -
 
Nathan f

nathan f

26/08/2010 17:40:47
Quote Anchor link
hmm nee thx, dit helpt me wel op weg.

kan ik ook 2 x dit doen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

$template
= str_replace('#tekst#',$tekst,$template);
$template = str_replace('#tekst1#',$tekst1,$template);

?>
 
Arjan -

Arjan -

26/08/2010 18:01:13
Quote Anchor link
Ja dat kan.
 
Aad B

Aad B

26/08/2010 20:37:39
Quote Anchor link
Waarom zoveel bestanden/programma's, includen etc.
index.php
results.php
viewmail.php
template.php
mailing.php
Een pagina die je hebt gemaakt cq die getoond wordt in de browser is vluchtig die heb je niet beschikbaar om te versturen. Programmeer je zodanig modulair dat je zoveel bestanden gebruikt dat ze ook voor andere functies gebruikt kunnen worden ?

index.php: is je zoekfunctie, je invulformulier met een "action=results.php"
In results.php zoek je in je database en je toont gegevens die je opgehaald hebt. Zorg dat dat in een of meerdere session-array's staat. Onderin results.php een button verzenden met action=mailing.php die verzend en de gegevsn uit de arrays gebruikt. Kan je hier wat mee ?
 
Nathan f

nathan f

26/08/2010 22:05:03
Quote Anchor link
dat ik zoveel bestanden gebruik is meer om het overzichtelijk te houden qua code.

als me mail niet goed gaat weet ik dat ik in mailing.php moet zoeken.

Ik hoef op deze manier niet 1 of 2 lange scripts te lezen en sneller problemen kan vinden en oplossen
 
Aad B

Aad B

27/08/2010 00:06:04
Quote Anchor link
Hmm, met de juiste instellingen en foutlogging hoef je echt geen 1000 regels te lezen om een fout te vinden. PHP is in staat om het regelnummer weer te geven of te loggen. Je maakt alles alleen maar ingewikkelder met variabelen bewaren en doorgeven. Is je overigens al duidelijk dat een pagina die je hebt gemaakt cq die getoond wordt in de browser is vluchtig die heb je niet ook beschikbaar om te versturen per mail ?
 
Nathan f

nathan f

27/08/2010 08:41:13
Quote Anchor link
Nathan f op 26/08/2010 17:40:47:
hmm nee thx, dit helpt me wel op weg.

kan ik ook 2 x dit doen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

$template
= str_replace('#tekst#',$tekst,$template);
$template = str_replace('#tekst1#',$tekst1,$template);

?>


mag ('#tekst#'...)
ook een string zijn?
de waarde is namelijk niet steeds hetzelfde.
 
Vincent Huisman

Vincent Huisman

27/08/2010 10:11:55
Quote Anchor link
tuurlijk mag dat, waarom niet :)
 
Nathan f

nathan f

27/08/2010 15:59:17
Quote Anchor link
ik heb het even anders opgelost,
ik heb het html bestand in de mailing.php gekopierd en nu werkt het! yay! er word gemaild in html wat ik wil.

echter loop ik nu tegen een nieuw probleem aan (het zal eens niet ;))

het staat nu zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$message
= '

<html>
 <body>
  
 </body>
</html>
'

?>


echter lukt het me niet een php string op te roepen:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$value
   = $_GET['value'] // bijvoorbeeld
$message = '

<html>
 <body>
   <?php echo $value; ?>
 </body>
</html>
'

?>


ik krijg geen foutmelding. het lijkt er op dat de php code gewoon mee loopt met de html code..
iemand een idee?

thx!
nathan
 
SilverWolf NL

SilverWolf NL

27/08/2010 16:10:06
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$value
   = $_GET['value'] // bijvoorbeeld
$message = '

<html>
 <body>
  '
.$value.'
 </body>
</html>
'
;
?>


PHP in PHP uitvoeren kan natuurlijk niet, daarom moet je het aan elkaar plakken als je variablen in je tekst wil stoppen (met . ). Dit zou moeten werken.
 
Nathan f

nathan f

27/08/2010 16:23:30
Quote Anchor link
kijk, thx! nu werkt het! yay! ;)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.