[PHP] Gecombineerde html email met splisting html, vars

Pagina: 1
Acties:
  • 174 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor een voetbalclub profielsite ben ik al een hele tijd aan het proberen een html email te versturen, waarbij ik gegevens uit een database haal om een profiel pagina van leden te versturen via een html email. Ik stuit daarbij op het probleem dat het me niet lukt om de html op een makkelijke wijze te splitsen van de code.

de html email wordt goed verzonden maar het splisen van data lukt me niet heb al van alles geprobeert tot includen van files en het replacen van strings.

waaruit bestaat een profiel html email?

---
header
intro text
----
profiel resultaten
----
footer
afsluitende text

ik heb een stukje van de code die ik momenteel gebruik:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
while($queue = f($queueq)){
        if($count == 0){                                                
            $past_email = $queue['email'];
            $count++;
            $profiles = array();
        }
        if($queue['email']!=$past_email){                               
     $profile_tables = "";
            for($i=0;$i<count($profiles);$i++){                            

                $profile_tables .= "<table width=\"90%\" cellspacing=\"0\"><a href=\"".$profiles[$i]['profile_link']."\">".$profiles[$i]['login']."</a></td></tr>";
                $profile_tables .= "<tr><td colspan=\"2\"></td></tr>";
                $profile_tables .= "<tr><a href=\"".$profiles[$i]['profile_link']."\"><td>".$profiles[$i]['photo_link']."</td>";
                $profile_tables .= "</a><td>".$profiles[$i]['detailed_info']."</td></tr>";
                $profile_tables .= "<tr><td colspan=\"2\">";
                $profile_tables .= "</td></tr>";
                $profile_tables .= "</table><br/>";                 // Spacing tussen resultaten
                
            }
            mailSend($past_email, "profiel");                       
            unset($profiles);
            $profiles = array();
            $profile_count = 0;
            $past_email = $queue['email'];  
        }
        if($profile_count < $match_max_profiles){               
            $past_email = $queue['email'];

            $fprofile = f(q("SELECT * from profielen WHERE blaat"));

            $profile_link = "{$root_host}bekijk.php?page=bekijk&id=$fprofile[id]";
            $location = $fprofile[city].", ".($no_state == 0 ? $fprofile[state].", " : "").$fprofile[country];
            // Create table of profile info
            $detail_info =  "<table><tr>
              <td>Leeftijd:</td>
              <td>{$fprofile['age']}</td></tr>";
            $detail_info .= "<tr>
              <td>Woonplaats:</td>
              <td>$location</td></tr>";
            $detail_info .= "<tr>
              <td valign=\"top\">Omschrijving:</td>
              <td>" . substr($fprofile['info'],0,250) . "</td></tr>";
            $detail_info .= "</table>";



Wat ik graag zou willen is
Dat het gedeelte middenin (Dus de profiel resultaten) gewoon via een html file geinclude worden, dus dat een html template geinclude wordt en die wordt verzonden in de mail. en dat daarbij alle variabelen zoals naam, leeftijd, foto, etc in die html template ingevuld worden.

Wie kan me hiermee op weg helpen? Ik heb zelf al een en ander geprobeert maar dit lukt niet, google biedt geen oplossing dan vindt je alleen maar de mime headers die nodig zijn om html te sturen i.p.v plain text

Een stukje voorbeeld code zou heel fijn zijn aangezien ik zelf ook met fopen heb geprobeert een "profielen.html" te includen maar daarbij werden dan de variabelen weer niet geparsed :( help! :(

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je kunt in de HTML je "eigen tags" gebruiken als {naam_hier} , {adres_hier} ofzo en nadat je met fopen het bestand hebt ingelezen met een replace de tags gaan vervangen.
Je zou een XML en een XSLT kunnen gebruiken
Je zou de HTML kunnen vervangen door een PHP en die (desnoods via localhost) weer ophalen
Er zijn legio mogelijkheden, en dan noem ik hier de al wat "ver gezochtte".

Maar wat ik niet begrijp is waarom je het niet allemaal in dezelfde PHP zet?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

RobIII schreef op zondag 12 juni 2005 @ 14:07:
Maar wat ik niet begrijp is waarom je het niet allemaal in dezelfde PHP zet?
Templates zijn net even wat overzichtelijker en makkelijker te veranderen dan spitten in code. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hmmz kan iemand maybe stukje voorbeeld posten? dat heb ik ook geprobeert inlezen met fopen maar dat ging niet goed hij verwerkte me variabelen niet
}:O

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
-NMe- schreef op zondag 12 juni 2005 @ 14:14:
[...]

Templates zijn net even wat overzichtelijker en makkelijker te veranderen dan spitten in code. ;)
Betweter ;)
Dat begrijp ik, maar dan nog kun je het makkelijk met een losstaand stukje code binnen dezelfde php file doen. Don't get me wrong, ik gebruik niks dan templates, maar dan wel meestal op een dusdanige manier dat ik variabelen kan doorgeven en als dat niet kan stap ik al snel naar een XSLT :P
Ik heb verder ook totaal geen kaas gegeten van PHP moet ik bekennen (en dat wou ik graag zo houden :P )

[ Voor 10% gewijzigd door RobIII op 12-06-2005 14:37 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
tja met zon link van een php functie
schiet k nog niet veel op natuurlijk ;(

Waarom is hier ook niks van op internet te vinden met bijvoorbeeld google,
nieuwsgroepen etc

dus wie o wie heeft een implementatie voor het
- inlezen van een html bestant met {VAR} velden
- deze {VAR} velden vervangen voor een variabele waarde
- de resultaten daaravn toevoegen aan een html email
- en dit mailen

ik zal die functie eens bekijken en met reg_replace moet ook wat kunnen toch

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zondag 12 juni 2005 @ 16:10:
tja met zon link van een php functie
schiet k nog niet veel op natuurlijk :(

Waarom is hier ook niks van op internet te vinden met bijvoorbeeld google,
nieuwsgroepen etc

dus wie o wie heeft een implementatie voor het
- inlezen van een html bestant met {VAR} velden
- deze {VAR} velden vervangen voor een variabele waarde
- de resultaten daaravn toevoegen aan een html email
- en dit mailen

ik zal die functie eens bekijken en met reg_replace moet ook wat kunnen toch
Sorry, maar dit klinkt nogal als "kan iemand het me even voorkauwen?" en daar zijn we meestal niet zo blij mee ;) . De gegeven links en tips moeten meer dan voldoende informatie bieden lijkt me zo (en dan ben ik niet eens een PHP-er). Als je nou eens aan de slag gaat en dan post als er iets niet lukt. Wellicht dat we je daar dan mee kunnen helpen.

[ Voor 7% gewijzigd door RobIII op 12-06-2005 16:13 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op zondag 12 juni 2005 @ 16:10:
tja met zon link van een php functie
schiet k nog niet veel op natuurlijk :(
Tuurlijk wel... Jij zegt dat je een file niet kan inlezen, dus geef ik je een functie die dat vanzelf en makkelijk doet.
Waarom is hier ook niks van op internet te vinden met bijvoorbeeld google,
nieuwsgroepen etc
Meer dan genoeg zelfs, [google=php template engine].
dus wie o wie heeft een implementatie voor het
- inlezen van een html bestant met {VAR} velden
- deze {VAR} velden vervangen voor een variabele waarde
- de resultaten daaravn toevoegen aan een html email
- en dit mailen
Als dit de insteek wordt van je topic, dan blijft het niet lang open. In Programming & Webscripting staan we geen scriptrequests toe, en daar valt dit dus ook onder. Sowieso is dit erg eenvoudig en met een beetje moeite vind je er meer dan genoeg over in de manual.
ik zal die functie eens bekijken en met reg_replace moet ook wat kunnen toch
Waarom regular expressions? str_replace werkt sneller en is veel eenvoudiger, en verder prima afdoende in dit geval. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
Ok,
1. met file_get_contents lees je de inhoud van je template-file in een variabele.
PHP:
1
$string = file_get_contents('template');


2. met str_replace vervang je alle {VAR} velden
PHP:
1
$string = str_replace('{VAR}', $var, $string);


3. Aangezien je op die manier nogal wat dubbele code gaat scrijven verzin je daar een handigere manier voor, bijvoorbeeld.
PHP:
1
2
3
4
5
6
$config['var1'] = foo;
$config['var2'] = bar;

foreach($config as $var => $value) {
  $string = str_replace('{' .$var .'}', $value, $string);
}

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

Verwijderd

Ik vond dit eigenlijk wel een interessant artikel toen ik het las laatst: Beyond The Template Engine

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
bedankt mensen!
ik denk dat ik er nu inderdaad wel verder uit kom,
interessante artikels weer wat door te lezen :P
Pagina: 1