[php] mail en table in html

Pagina: 1
Acties:

  • drikus
  • Registratie: Juni 2000
  • Laatst online: 25-03 07:18
Ben er al een tijdje zoet mee maar ik zie eigenlijk geen opties meer. |:( Gewoon mail verzenden met text is geen probleem maar ik wil nu een mail verzenden met een gegenereerde HTML table erin.

Situatie is als volgt: kheb een table die ik gewoon met een select uitvraag en weer alsvolgt echo
PHP:
1
2
3
4
<?
        echo "<table width=\"80%\" cellspacing=\"1\" cellpadding=\"1\" align = center border=\"1\">";
        echo "<td class=\"box_text\" align=center><span class=\"box_text\"> Naam <br>";
?>

Een heleboel ...
PHP:
1
2
3
4
5
6
7
8
9
10
<?
    echo "<td class=\"box_text\" align=center><span class=\"box_text\"> Tot<br><tr>";
     while ($line = mysql_fetch_array($result1)) {
        $count = 0 ;
        while ($count <= 19) {
        echo "<td align=center>$line[$count]</td>";
        $count++;
        }
        echo "</tr>";
?>

Als je dit echo wordt alles netjes in een tabelleke ge-echo-ed maar ik wil nu deze output meegegeven in een html mail en ben tot nu toe niet in staat geweest dit mee te geven met variabele $message. Hoe krijg ik het voor elkaar om niet te echoen maar dit mee te geven in een variabele ?

Gebruik hiervoor onderstaande code om mail te versturen en wil eigenlijk niet met classes werken want dit moet toch kunnen ....toch ? Iemand enige hints waar ik de oplossing in kan zoeken ?
PHP:
1
2
3
4
5
<?
mail($email, $subject, $message, "From:".$adminmail."\r\n\Reply-To: $adminmail."rnReply-To:
$adminmailrnContent-Type: text/html;
charset=iso-8859-1nX-Mailer: PHP/" . phpversion());
?>

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
code:
1
2
$message = "blaat";
$message .= "nog meer blaat";

ipv
code:
1
2
echo "blaat";
echo "nog meer blaat";

  • drikus
  • Registratie: Juni 2000
  • Laatst online: 25-03 07:18
Idd. Misschien was ik niet helemaal duidelijk. Het verzenden van mail met statische text of een table is geen probleem. Met het gebruik van $message.= kan je ook wel variabelen meegeven maar de tabel die ik uitlees bestaat uit 20 kolommen en 100 rijen en om nou voor elke positie een variabele aan te maken en dit in een $message.= op te nemen met html table code eromheen is niet zo handig. Ik dacht dus met de while lus de boel uit te vragen en in een table te parsen.

Met alleen $message.= red je het dan niet aangezien de while lus buiten het $message.= statement valt.

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
aha, in dat geval zou ik eens kijken naar de output control functions. klein voorbeeldje:
code:
1
2
3
4
5
6
7
8
9
<?
    ob_start();
?>
    (allemaal html)
<?
    $message = ob_get_contents();
    ob_end_clean();
    // nu zit je zooi in $message
?>

  • drikus
  • Registratie: Juni 2000
  • Laatst online: 25-03 07:18
Denk dat iets te vroeg gereageerd heb |:( met $message.= werkt het wel *D *D . Had zelf nog een loopje verkeerd staan.

  • drikus
  • Registratie: Juni 2000
  • Laatst online: 25-03 07:18
Op dinsdag 13 november 2001 22:52 schreef marcusk het volgende:
aha, in dat geval zou ik eens kijken naar de output control functions. klein voorbeeldje:
code:
1
2
3
4
5
6
7
8
9
<?
    ob_start();
?>
    (allemaal html)
<?
    $message = ob_get_contents();
    ob_end_clean();
    // nu zit je zooi in $message
?>
Deez kende ik nog niet. En bruikbaar ook *D . Bedankt

  • tomato
  • Registratie: November 1999
  • Niet online
drikus: Deez kende ik nog niet. En bruikbaar ook *D . Bedankt
Ik weet niet waar je het voor wilt gebruiken, maar het is niet echt mooi om te gebruiken alleen maar om een stukje HTML in een variabele te krijgen.
Kun je ook zoiets doen:
code:
1
2
3
4
5
6
7
$var = <<< EOV
hoi hier allemaal html enzo
   en hier nog meer
    en hier nogwat
en nog wat html
en nog een beetje
EOV;

  • drikus
  • Registratie: Juni 2000
  • Laatst online: 25-03 07:18
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
<?
} else {
        $message = "<center>"._F1MAILMESSAGEVOOR1." $sitename!</center>";
        $message.= "<br>";                                                                                                 
        $message.= "<br>";
        $message.= "<center>"._F1MAILMESSAGEVOOR2." $race</center> ";                                                      
        $message.= "<table width=\"100%\" cellspacing=\"1\" cellpadding=\"1\" align = center border=\"1\">";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Naam <br>";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Positie 1 <br>";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Positie 2 <br>";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Positie 3 <br>";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Positie 4 <br>";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Positie 5 <br>";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Positie 6 <br>";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Pole <br>";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Ons Joske <br><tr>";
        while ($line = mysql_fetch_array($result1)) {
        $count = 0 ;
        while ($count <= 8) {
        $message.= "<td align=center>$line[$count]</td>";
        $count++;
        }
        $message.= "</tr>";
        $message.= "</table><br>";
        }
        mail($email, $subject, $message, "From:".$adminmail."\r\n\Reply-To: $adminmail\r\nContent-Type: text/html; charset=
-8859-1\nX-Mailer: PHP/" . phpversion());
?>

Was het toch niet helemaal. KHad getest met een tabel met 1 gevulde row en dat gaat goed maar met meer gevulde rijen gaat het mis en plaatst ie de resterende row niet meer in de table. Doe ik iets wat echt niet kan ??

Stoei maar weer verder ... kreeg het met ob_start en $var = <<< EOV niet voor elkaar BTW

Verwijderd

ten eerste hoef je niet zo moeilijk te doen met $message .= "kuhafkjhgfda";
als je gewoon 1 variabel neemt, bijvoorbeeld $message en daar enter's in typt, dan neemt ie dat automatisch over in het mailtje. Probeer eerste maar eens simpel;

$message = "regel1
regel2

regel3";
mail(hier dingen invullen :));

dat schiet al wat op... alleen is het misschien wel handig om in de loop een $message .= te gebruiken...

de fout ligt in de loop. ik zal het uitleggen:
PHP:
1
2
3
4
5
6
7
8
<?
while(){
$count = 0;
while(){
$count ++;
}
}
?>

zet de regel $count = 0; eens buiten de loop, want nu gooit hij er wel steeds eentje bij, maar dan zet ie die toch weer steeds op 0, dus tjah, dat heeft weinig zin... je kan trouwens beter doen:
while(($line = $result) && (count <= 8)){


}

dan heb je maar 1 loop nodig, maakt het overzichtelijker...

  • drikus
  • Registratie: Juni 2000
  • Laatst online: 25-03 07:18
Hebbes.. *D *D voor de liefhebbers.
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
<?
$message = "<center>"._F1MAILMESSAGEVOOR1." $sitename!</center>";
        $message.= "<br>";
        $message.= "<br>";
        $message.= "<center>"._F1MAILMESSAGEVOOR2." $race</center>";
        $message.= "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" align = center border=\"1\">";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Naam <br>";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Positie 1 <br>";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Positie 2 <br>";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Positie 3 <br>";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Positie 4 <br>";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Positie 5 <br>";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Positie 6 <br>";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Pole <br>";
        $message.= "<td class=\"box_text\" align=center><span class=\"box_text\"> Ons Joske <br><tr>";
        while ($line = mysql_fetch_array($result)) {
        $count = 0 ;
        while ($count <= 8) {                                                                                              
        $message.= "<td align=center>$line[$count]</td>";
        $count++;
        }
        $message.= "</tr>";
        }
        $message.= "</table><br>";
        }
        mail($email, $subject, $message, "From:".$adminmail."\r\n\Reply-To: $adminmail\r\nContent-Type: text/html; charset=iso-8859-1\nX-Mailer: PHP/" . phpversion());
?>
Pagina: 1