/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
mysqldata i mail?
Fra : gc


Dato : 04-10-07 07:03

Hvordan får jeg nogle data fra en mysqldata sendt i en mail.?

Jeg har lavet følgene:

while ($line = mysql_fetch_array($result)) {
extract($line);
$ordreline = "$ordreline $varenummer $varetekst $antal\n";
}
$to = "Online-butik <testmail@msn.com>";
$from = "From: ".$navn."<".$email.">";
$subject = "On-Line Bestilling";
$message = "Tak for
ordren."."\n"."\n".$firma."\n".$navn."\n".$fuldadresse."\n"."\n"."\n".$ordreline;
$headers = "MIME-Version: 1.0\r\n";
$headers .= "$from\r\n";
mail($to, $subject, $message, $headers);

Jeg kan godt få rækkerne med i mailen men linieskiftet virker ikke.
Er det muligt at få det opsat pænere i mailen f.eks med nogle tabs eller en
tabel.?

På forhånd tak.



 
 
Martin (04-10-2007)
Kommentar
Fra : Martin


Dato : 04-10-07 07:51

gc wrote:
> Hvordan får jeg nogle data fra en mysqldata sendt i en mail.?
>
> Jeg har lavet følgene:
>
> while ($line = mysql_fetch_array($result)) {
> extract($line);
> $ordreline = "$ordreline $varenummer $varetekst $antal\n";
> }
> $to = "Online-butik <testmail@msn.com>";
> $from = "From: ".$navn."<".$email.">";
> $subject = "On-Line Bestilling";
> $message = "Tak for
> ordren."."\n"."\n".$firma."\n".$navn."\n".$fuldadresse."\n"."\n"."\n".$ordreline;
> $headers = "MIME-Version: 1.0\r\n";
> $headers .= "$from\r\n";
> mail($to, $subject, $message, $headers);
>
> Jeg kan godt få rækkerne med i mailen men linieskiftet virker ikke.
> Er det muligt at få det opsat pænere i mailen f.eks med nogle tabs eller en
> tabel.?
>
> På forhånd tak.
>
>

Udskift \n med \r\n

gc (04-10-2007)
Kommentar
Fra : gc


Dato : 04-10-07 08:18

>
> Udskift \n med \r\n

Jeg fik linieskiftet til at virke men det er ligemeget om jeg bruger \n
eller \r\n.
linien $ordreline = "$ordreline\n$varenummer $varetekst $antal\n"; virker.

Jeg får nu følgende i min mail.

12446454548 PLAST T SLANGESAMLER - 14 MM 500

12446459598 PLAST T SLANGESAMLER - 19 MM 34343

6062040 KONTRAVENTIL 3/8 M/M 90

Men jeg vil også gerne have lidt styr på kolonnerne, så det bliver noget i
stil med:

Varenummer Varetekst
Antal

12446454548 PLAST T SLANGESAMLER - 14 MM 500

12446459598 PLAST T SLANGESAMLER - 19 MM 34343

6062040 KONTRAVENTIL 3/8 M/M 90

Hvordan gør jeg det?



Dan Storm (04-10-2007)
Kommentar
Fra : Dan Storm


Dato : 04-10-07 08:53

gc skrev:
> Hvordan får jeg nogle data fra en mysqldata sendt i en mail.?
>
> Jeg har lavet følgene:
>
> while ($line = mysql_fetch_array($result)) {
> extract($line);
> $ordreline = "$ordreline $varenummer $varetekst $antal\n";
> }
> $to = "Online-butik <testmail@msn.com>";
> $from = "From: ".$navn."<".$email.">";
> $subject = "On-Line Bestilling";
> $message = "Tak for
> ordren."."\n"."\n".$firma."\n".$navn."\n".$fuldadresse."\n"."\n"."\n".$ordreline;
> $headers = "MIME-Version: 1.0\r\n";
> $headers .= "$from\r\n";
> mail($to, $subject, $message, $headers);
>
> Jeg kan godt få rækkerne med i mailen men linieskiftet virker ikke.
> Er det muligt at få det opsat pænere i mailen f.eks med nogle tabs eller en
> tabel.?

Linien:
$headers = "MIME-Version: 1.0\r\n";
giver mailreaderen et indtryk af det er HTML du medsender og derfor vil
readeren ikke opfatte \r\n på den måde som du forventer.
Istedet skal du enten fjerne den headerdel eller indsætte <br /> istedet
for \r\n (eller bruge begge dele).


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

gc (04-10-2007)
Kommentar
Fra : gc


Dato : 04-10-07 09:22

> Linien:
> $headers = "MIME-Version: 1.0\r\n";
> giver mailreaderen et indtryk af det er HTML du medsender og derfor vil
> readeren ikke opfatte \r\n på den måde som du forventer.
> Istedet skal du enten fjerne den headerdel eller indsætte <br /> istedet
> for \r\n (eller bruge begge dele).
>
Tak for det.
Har du nogen ide til hvordan jeg kan få det opstillet i kolonner?



Dan Storm (04-10-2007)
Kommentar
Fra : Dan Storm


Dato : 04-10-07 09:36

gc skrev:
>> Linien:
>> $headers = "MIME-Version: 1.0\r\n";
>> giver mailreaderen et indtryk af det er HTML du medsender og derfor vil
>> readeren ikke opfatte \r\n på den måde som du forventer.
>> Istedet skal du enten fjerne den headerdel eller indsætte <br /> istedet
>> for \r\n (eller bruge begge dele).
>>
> Tak for det.
> Har du nogen ide til hvordan jeg kan få det opstillet i kolonner?
>
>

Det er nemmest i HTML.
Hvis du fortsat bruger $headers = "MIME-Version: 1.0\r\n"; kan du blot
stille det op i en almindelig tabel.

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

gc (04-10-2007)
Kommentar
Fra : gc


Dato : 04-10-07 09:45

> Det er nemmest i HTML.
> Hvis du fortsat bruger $headers = "MIME-Version: 1.0\r\n"; kan du blot
> stille det op i en almindelig tabel.
>
Ok, tak for det, jeg har fundet lidt om HTML og php-mail via google så
jeg prøver at lege lidt med det.



gc (04-10-2007)
Kommentar
Fra : gc


Dato : 04-10-07 10:41

> Det er nemmest i HTML.
> Hvis du fortsat bruger $headers = "MIME-Version: 1.0\r\n"; kan du blot
> stille det op i en almindelig tabel.
>
Hmmm, jeg kan stadig ikke rigtig hitte ud af hvordan jeg får linierne fra
min "While" ind i en tabel.

Det hele skal jo ende med at ligge i $message.
og man kan vel ikke køre en while inde i en variabel.

I teorien skulle det vel være noget med:

$message = "
<html>
<head>
</head>
<body>
<table>
<th>Varenummer</th>
<th>Varetekst</th>
<th>Antal</th>
"
while ($line = mysql_fetch_array($result)) {
extract($line);
"<tr><td>$varenummer</td><td>$varetekst></td><td>$antal</td></tr>"
}
"
</body>
</html>
";

Men det giver en: Parse error: syntax error, unexpected T_WHILE
in............




Dan Storm (04-10-2007)
Kommentar
Fra : Dan Storm


Dato : 04-10-07 11:36

gc skrev:
> $message = "
> <html>
> <head>
> </head>
> <body>
> <table>
> <th>Varenummer</th>
> <th>Varetekst</th>
> <th>Antal</th>
> "
> while ($line = mysql_fetch_array($result)) {
> extract($line);
> "<tr><td>$varenummer</td><td>$varetekst></td><td>$antal</td></tr>"
> }
> "
> </body>
> </html>
> ";

Det er fordi din syntaks er helt forkert.
Du afslutter ikke dine strings og bruger heller ikke strings korrekt i
din while løkke eller efter den...

$message = "
<html>
<head>
</head>
<body>
<table>
<th>Varenummer</th>
<th>Varetekst</th>
<th>Antal</th>
";
while ($line = mysql_fetch_array($result)) {
   extract($line);
   $message .=
"<tr><td>$varenummer</td><td>$varetekst></td><td>$antal</td></tr>";
}
$message .= "
</body>
</html>
";

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

gc (04-10-2007)
Kommentar
Fra : gc


Dato : 04-10-07 14:41

> $message = "
> <html>
> <head>
> </head>
> <body>
> <table>
> <th>Varenummer</th>
> <th>Varetekst</th>
> <th>Antal</th>
> ";
> while ($line = mysql_fetch_array($result)) {
> extract($line);
> $message .=
> "<tr><td>$varenummer</td><td>$varetekst></td><td>$antal</td></tr>";
> }
> $message .= "
> </body>
> </html>
> ";
Tak Dan, men der kommer ingen data med kun <th> overskrifterne.



Birger (04-10-2007)
Kommentar
Fra : Birger


Dato : 04-10-07 11:42

"gc" <gertc-slet-@msn.com> skrev i en meddelelse
news:4704b533$0$93967$edfadb0f@dread16.news.tele.dk...
>> Det er nemmest i HTML.
>> Hvis du fortsat bruger $headers = "MIME-Version: 1.0\r\n"; kan du blot
>> stille det op i en almindelig tabel.
>>
> Hmmm, jeg kan stadig ikke rigtig hitte ud af hvordan jeg får linierne fra
> min "While" ind i en tabel.
>
> Det hele skal jo ende med at ligge i $message.
> og man kan vel ikke køre en while inde i en variabel.
>
> I teorien skulle det vel være noget med:
>
> $message = "
> <html>
> <head>
> </head>
> <body>
> <table>
> <th>Varenummer</th>
> <th>Varetekst</th>
> <th>Antal</th>
> "
> while ($line = mysql_fetch_array($result)) {
> extract($line);
> "<tr><td>$varenummer</td><td>$varetekst></td><td>$antal</td></tr>"
> }
> "
> </body>
> </html>
> ";
>
> Men det giver en: Parse error: syntax error, unexpected T_WHILE
> in............
>
>
>


Du mangler <tr></tr> omkring headerne og at afslutte tabellen...

En løsning på dit "while" problem kan være :
$message = "
<html>
<head>
</head>
<body>
<table>
<tr><th>Varenummer</th><th>Varetekst</th><th>Antal</th></tr>
";
<?php
while ($line = mysql_fetch_array($result)) {
extract($line);
$message .=
"<tr><td>$varenummer</td><td>$varetekst></td><td>$antal</td></tr>\n";
}
?>
$message .= "
</table>
</body>
</html>
";

Birger



gc (04-10-2007)
Kommentar
Fra : gc


Dato : 04-10-07 12:25

> En løsning på dit "while" problem kan være :
> $message = "
> <html>
> <head>
> </head>
> <body>
> <table>
> <tr><th>Varenummer</th><th>Varetekst</th><th>Antal</th></tr>
> ";
> <?php
> while ($line = mysql_fetch_array($result)) {
> extract($line);
> $message .=
> "<tr><td>$varenummer</td><td>$varetekst></td><td>$antal</td></tr>\n";
> }
> ?>
> $message .= "
> </table>
> </body>
> </html>
> ";
>
Tak for det, men jeg får en Parse error: syntax error, unexpected '<' in
........(den linie med <?php)



Philip Nunnegaard (04-10-2007)
Kommentar
Fra : Philip Nunnegaard


Dato : 04-10-07 13:07

> Tak for det, men jeg får en Parse error: syntax error, unexpected '<' in
> .......(den linie med <?php)

Jeg vil tro, at det er fordi du sætter dette <?php inde midt i noget
php-kode.


Birger (04-10-2007)
Kommentar
Fra : Birger


Dato : 04-10-07 14:15

"Philip Nunnegaard" <philip@fjerndettehitsurf.dk> skrev i en meddelelse
news:4704d782$0$63731$edfadb0f@dread14.news.tele.dk...
>> Tak for det, men jeg får en Parse error: syntax error, unexpected '<' in
>> .......(den linie med <?php)
>
> Jeg vil tro, at det er fordi du sætter dette <?php inde midt i noget
> php-kode.

Selvfølgelig. ;>)
linierne
<?php
og ?>

skal ikke være der...

Birger



gc (04-10-2007)
Kommentar
Fra : gc


Dato : 04-10-07 14:38

> linierne
> <?php
> og ?>
>
> skal ikke være der...
>
ingen fejl nu, men der kommer ingen data med kun <th> overskrifterne.



Birger (05-10-2007)
Kommentar
Fra : Birger


Dato : 05-10-07 01:00


"gc" <gertc-slet-@msn.com> skrev i en meddelelse
news:4704ecbe$0$93470$edfadb0f@dread16.news.tele.dk...
>> linierne
>> <?php
>> og ?>
>>
>> skal ikke være der...
>>
> ingen fejl nu, men der kommer ingen data med kun <th> overskrifterne.
>

Så vidt jeg kan se, burde det fungere.
Under forudsætning af at du har det rigtige i $result - altså en resource
der er resultat af en query fra din database.

Birger



gc (05-10-2007)
Kommentar
Fra : gc


Dato : 05-10-07 07:23

>
> Så vidt jeg kan se, burde det fungere.
> Under forudsætning af at du har det rigtige i $result - altså en resource
> der er resultat af en query fra din database.
>
Der virker desværre ikke, og der er data med.
Følgende virker nemlig men står som sagt ikke pænt.

while ($line = mysql_fetch_array($result)) {
extract($line);
$ordreline = "$ordreline\n$varenummer $varetekst $antal\n";
}

$message = $varenummer.$varetekst.$antal;
mail($to, $subject, $message, $headers);

Men jeg kan altså ikke få "while" til at virke inde i $message = "



Birger (05-10-2007)
Kommentar
Fra : Birger


Dato : 05-10-07 08:24


"gc" <gertc-slet-@msn.com> skrev i en meddelelse
news:4705d834$0$93471$edfadb0f@dread16.news.tele.dk...
> >
>> Så vidt jeg kan se, burde det fungere.
>> Under forudsætning af at du har det rigtige i $result - altså en resource
>> der er resultat af en query fra din database.
>>
> Der virker desværre ikke, og der er data med.
> Følgende virker nemlig men står som sagt ikke pænt.
>
> while ($line = mysql_fetch_array($result)) {
> extract($line);
> $ordreline = "$ordreline\n$varenummer $varetekst $antal\n";
> }
>
> $message = $varenummer.$varetekst.$antal;
> mail($to, $subject, $message, $headers);
>
> Men jeg kan altså ikke få "while" til at virke inde i $message = "
>

Du får kun een linie med på den måde, og bruger slet ikke $orderline..

Prøv at bruge
while ($line = mysql_fetch_array($result)) {
$message .= "<tr><td>".$line[ 'varenummer']."</td><td>".$line[
'varetekst']."</td><td>".$line[ 'antal']."</td></tr>\n";
}
i det andet.
Der er forøvrigt en > for meget, lige efter $varetekst.

Birger



gc (05-10-2007)
Kommentar
Fra : gc


Dato : 05-10-07 09:03

>
> Du får kun een linie med på den måde, og bruger slet ikke $orderline..
>
Det var også bare for at illustrere at der at data med

> Prøv at bruge
> while ($line = mysql_fetch_array($result)) {
> $message .= "<tr><td>".$line[ 'varenummer']."</td><td>".$line[
> 'varetekst']."</td><td>".$line[ 'antal']."</td></tr>\n";
> }
Der er stadig kun overskriften med i mailen.

Her er lige hele koden:
**************************************************
$to = "TCM-Online <testmail@msn.com>";
$from = "From: ".$navn."<".$email.">";
$subject = "On-Line Bestilling";
$headers = "MIME-Version: 1.0\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "$from\r\n";

$message = "
<html>
<head>
</head>
<body>
<table>
<tr><th>Varenummer</th><th>Varetekst</th><th>Antal</th></tr>
";
while ($line = mysql_fetch_array($result)) {
$message .= "<tr><td>".$line[ 'varenummer']."</td><td>".$line[
'varetekst']."</td><td>".$line[ 'antal']."</td></tr>\n";
}
$message .= "
</table>
</body>
</html>
";
mail($to, $subject, $message, $headers);
*************************************************
Kan du se nogen fejl.?
På forhånd tak




Birger (05-10-2007)
Kommentar
Fra : Birger


Dato : 05-10-07 09:13

"gc" <gertc-slet-@msn.com> skrev i en meddelelse
news:4705efa6$0$93967$edfadb0f@dread16.news.tele.dk...
> >
>> Du får kun een linie med på den måde, og bruger slet ikke $orderline..
>>
> Det var også bare for at illustrere at der at data med
>
>> Prøv at bruge
>> while ($line = mysql_fetch_array($result)) {
>> $message .= "<tr><td>".$line[ 'varenummer']."</td><td>".$line[
>> 'varetekst']."</td><td>".$line[ 'antal']."</td></tr>\n";
>> }
> Der er stadig kun overskriften med i mailen.
>
> Her er lige hele koden:
> **************************************************
> $to = "TCM-Online <testmail@msn.com>";
> $from = "From: ".$navn."<".$email.">";
> $subject = "On-Line Bestilling";
> $headers = "MIME-Version: 1.0\r\n";
> $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
> $headers .= "$from\r\n";
>
> $message = "
> <html>
> <head>
> </head>
> <body>
> <table>
> <tr><th>Varenummer</th><th>Varetekst</th><th>Antal</th></tr>
> ";
> while ($line = mysql_fetch_array($result)) {
> $message .= "<tr><td>".$line[ 'varenummer']."</td><td>".$line[
> 'varetekst']."</td><td>".$line[ 'antal']."</td></tr>\n";
> }
> $message .= "
> </table>
> </body>
> </html>
> ";
> mail($to, $subject, $message, $headers);
> *************************************************
> Kan du se nogen fejl.?
> På forhånd tak
>
>
>

Jeg kan ikke se noget galt med det.
Virker på mig somom du har et andet problem.
Hvis der ingen data er med, må det være fordi $result er tom.

Hvis det hele er i en funktion for sig, har du husket at overføre den -
enten som parameter eller erklære den som
global $result;
i funktionen der sender mail?

Birger



gc (05-10-2007)
Kommentar
Fra : gc


Dato : 05-10-07 10:25

> Hvis det hele er i en funktion for sig, har du husket at overføre den -
> enten som parameter eller erklære den som
> global $result;
> i funktionen der sender mail?
>
Det hele er i samme php fil.
Jeg har prøvet at lave en helt ren fil, testmail.php
Den ser sådan ud:
*****************************************************************
<?php
require("mysql-funktioner.php");
aabn_forbindelse_og_vaelgdb();

$navn = "Gert";
$email ="testmail@msn.com";

$to = "TCM-Online <testmail2@msn.com>";
$from = "From: ".$navn."<".$email.">";
$subject = "On-Line Bestilling";
$headers = "MIME-Version: 1.0\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "$from\r\n";

$result = mysql_query("select * FROM kurv");

while ($line = mysql_fetch_array($result)) {
extract($line);
echo $varenummer;
echo $varetekst;
echo $antal;
}

$message = "
<html>
<head>
</head>
<body>
<table>
<tr><th>Varenummer</th><th>Varetekst</th><th>Antal</th></tr>
";
while ($line = mysql_fetch_array($result)) {
$message .= "<tr><td>".$line[ 'varenummer']."</td><td>".$line[
'varetekst']."</td><td>".$line[ 'antal']."</td></tr>\n";
}
$message .= "
</table>
</body>
</html>
";
mail($to, $subject, $message, $headers);
?>
*************************************************************
Jeg har lavet en ekstra while for at sikre mig at der er data i $result.
når jeg åbner denne testmail.php i min browser får jeg data på skærmen
(varenummer,varetekst og antal)
og der bliver sendt en mail, men mailen indeholder kun overskrifterne.

Er der noget jeg har overset?

mvh
Gert



Birger (05-10-2007)
Kommentar
Fra : Birger


Dato : 05-10-07 17:58

"gc" <gertc-slet-@msn.com> skrev i en meddelelse
news:470602e6$0$93810$edfadb0f@dread16.news.tele.dk...
>> Hvis det hele er i en funktion for sig, har du husket at overføre den -
>> enten som parameter eller erklære den som
>> global $result;
>> i funktionen der sender mail?
>>
> Det hele er i samme php fil.
> Jeg har prøvet at lave en helt ren fil, testmail.php
> Den ser sådan ud:
> *****************************************************************
> <?php
> require("mysql-funktioner.php");
> aabn_forbindelse_og_vaelgdb();
>
> $navn = "Gert";
> $email ="testmail@msn.com";
>
> $to = "TCM-Online <testmail2@msn.com>";
> $from = "From: ".$navn."<".$email.">";
> $subject = "On-Line Bestilling";
> $headers = "MIME-Version: 1.0\r\n";
> $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
> $headers .= "$from\r\n";
>
> $result = mysql_query("select * FROM kurv");
>
> while ($line = mysql_fetch_array($result)) {
> extract($line);
> echo $varenummer;
> echo $varetekst;
> echo $antal;
> }
>
> $message = "
> <html>
> <head>
> </head>
> <body>
> <table>
> <tr><th>Varenummer</th><th>Varetekst</th><th>Antal</th></tr>
> ";
> while ($line = mysql_fetch_array($result)) {
> $message .= "<tr><td>".$line[ 'varenummer']."</td><td>".$line[
> 'varetekst']."</td><td>".$line[ 'antal']."</td></tr>\n";
> }
> $message .= "
> </table>
> </body>
> </html>
> ";
> mail($to, $subject, $message, $headers);
> ?>
> *************************************************************
> Jeg har lavet en ekstra while for at sikre mig at der er data i $result.
> når jeg åbner denne testmail.php i min browser får jeg data på skærmen
> (varenummer,varetekst og antal)
> og der bliver sendt en mail, men mailen indeholder kun overskrifterne.
>
> Er der noget jeg har overset?
>
> mvh
> Gert
>

Prøv at fjerne den ekstra, så virker det.

Når du har kørt løkken een gang er pointeren i ressourcen ved slutningen -
derfor er der ikke flere arrays når du starter anden gang...
Alternativt reset pointeren med
mysql_data_seek( $result, 0);
mellem de 2 - altså inden du begynder at samle $message.

Birger



gc (06-10-2007)
Kommentar
Fra : gc


Dato : 06-10-07 11:42

>
> Prøv at fjerne den ekstra, så virker det.
>
> Når du har kørt løkken een gang er pointeren i ressourcen ved slutningen -
> derfor er der ikke flere arrays når du starter anden gang...
> Alternativt reset pointeren med
> mysql_data_seek( $result, 0);
> mellem de 2 - altså inden du begynder at samle $message.
>
Du er et geni, det virker perfekt nu.
Mange tak for hjælpen.


Birger (07-10-2007)
Kommentar
Fra : Birger


Dato : 07-10-07 00:23

"gc" <falsk@email.com> skrev i en meddelelse
news:47076666$0$2660$edfadb0f@dread15.news.tele.dk...
> >
>> Prøv at fjerne den ekstra, så virker det.
>>
>> Når du har kørt løkken een gang er pointeren i ressourcen ved
>> slutningen - derfor er der ikke flere arrays når du starter anden gang...
>> Alternativt reset pointeren med
>> mysql_data_seek( $result, 0);
>> mellem de 2 - altså inden du begynder at samle $message.
>>
> Du er et geni, det virker perfekt nu.
> Mange tak for hjælpen.

Nok en overdrivelse - men tak for tilliden ;>)
Birger



Johan Holst Nielsen (04-10-2007)
Kommentar
Fra : Johan Holst Nielsen


Dato : 04-10-07 13:21

Dan Storm wrote:
> gc skrev:
>>> Linien:
>>> $headers = "MIME-Version: 1.0\r\n";
>>> giver mailreaderen et indtryk af det er HTML du medsender og derfor
>>> vil readeren ikke opfatte \r\n på den måde som du forventer.
>>> Istedet skal du enten fjerne den headerdel eller indsætte <br />
>>> istedet for \r\n (eller bruge begge dele).
>>>
>> Tak for det.
>> Har du nogen ide til hvordan jeg kan få det opstillet i kolonner?
>
> Det er nemmest i HTML.
> Hvis du fortsat bruger $headers = "MIME-Version: 1.0\r\n"; kan du blot
> stille det op i en almindelig tabel.

Der er jeg så helt uenig. Hvis der blot skal laves en tabel er HTML ikke
det rigtige i min verden. Det kan laves mange gange nemmere - og
samtidig bibeholde fordelen ved at *alle* kan læse tekstmails (og de er
lettere)

F.eks. kunne en sprintf nemt lave noget tabelagtigt

$tabel = '':
$products = array();
$products[] = array('q'=>10,'d'=>'Bla bla bla','p'=>10.00);
$products[] = array('q'=>7, 'd'=>'Tra la la', 'p'=>50.00);
foreach($products as $p) {
$tabel .= sprintf("%5s %-50s %8s",$p['q'],$p['d'],$p['p']);
}

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Dan Storm (04-10-2007)
Kommentar
Fra : Dan Storm


Dato : 04-10-07 14:32

Johan Holst Nielsen skrev:
> Der er jeg så helt uenig. Hvis der blot skal laves en tabel er HTML ikke
> det rigtige i min verden. Det kan laves mange gange nemmere - og
> samtidig bibeholde fordelen ved at *alle* kan læse tekstmails (og de er
> lettere)

Er det ikke et spørgsmål om evner når man mener at det er lettere at
skrive tekstmails fremfor html mails? Personligt mener jeg det er en
holdningssag hvorvidt man skal sende HTML eller tekst mails.

> F.eks. kunne en sprintf nemt lave noget tabelagtigt
>
> $tabel = '':
> $products = array();
> $products[] = array('q'=>10,'d'=>'Bla bla bla','p'=>10.00);
> $products[] = array('q'=>7, 'd'=>'Tra la la', 'p'=>50.00);
> foreach($products as $p) {
> $tabel .= sprintf("%5s %-50s %8s",$p['q'],$p['d'],$p['p']);
> }
>

Ja, det fungerer ganske udmærket. Men igen, det er en holdningssag.
Det ville pynte med en ny linie:
$tabel .= sprintf("%5s %-50s %8s",$p['q'],$p['d'],$p['p'])."\n";

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Johan Holst Nielsen (04-10-2007)
Kommentar
Fra : Johan Holst Nielsen


Dato : 04-10-07 14:59

Dan Storm wrote:
> Johan Holst Nielsen skrev:
>> Der er jeg så helt uenig. Hvis der blot skal laves en tabel er HTML
>> ikke det rigtige i min verden. Det kan laves mange gange nemmere - og
>> samtidig bibeholde fordelen ved at *alle* kan læse tekstmails (og de
>> er lettere)
>
> Er det ikke et spørgsmål om evner når man mener at det er lettere at
> skrive tekstmails fremfor html mails? Personligt mener jeg det er en
> holdningssag hvorvidt man skal sende HTML eller tekst mails.

Mente ikke lettere at lave - nærmere lettere for klienten at hente ned
;) Sorry den uklarhed.

Jeg mener blot - med en tabel ville det være dumt at begyndte at skrive
en hel HTML fil (som det ikke er sikkert alle kan læse) - når det er
lige så nemt at lave det som rent tekst. Samtidig sparer du modtageren
for en masse data der ikke giver en bedre oplevelse...

>> F.eks. kunne en sprintf nemt lave noget tabelagtigt
>>
>> $tabel = '':
>> $products = array();
>> $products[] = array('q'=>10,'d'=>'Bla bla bla','p'=>10.00);
>> $products[] = array('q'=>7, 'd'=>'Tra la la', 'p'=>50.00);
>> foreach($products as $p) {
>> $tabel .= sprintf("%5s %-50s %8s",$p['q'],$p['d'],$p['p']);
>> }
>>
>
> Ja, det fungerer ganske udmærket. Men igen, det er en holdningssag.
> Det ville pynte med en ny linie:
> $tabel .= sprintf("%5s %-50s %8s",$p['q'],$p['d'],$p['p'])."\n";

Jah - beklager - havde glemt ny linje ;)


--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Dan Storm (04-10-2007)
Kommentar
Fra : Dan Storm


Dato : 04-10-07 19:00

Johan Holst Nielsen skrev:
> Mente ikke lettere at lave - nærmere lettere for klienten at hente ned
> ;) Sorry den uklarhed.

Så er vi enige :)

> Jeg mener blot - med en tabel ville det være dumt at begyndte at skrive
> en hel HTML fil (som det ikke er sikkert alle kan læse) - når det er
> lige så nemt at lave det som rent tekst. Samtidig sparer du modtageren
> for en masse data der ikke giver en bedre oplevelse...

Enig, men man oplever jo oftere og oftere at HTML emails er måden
,eksempelvis webshops, sender deres faktura og ordrebekræftelser ud på.
Tendensen er vel at HTML emails bliver mere og mere accepterede.

> Jah - beklager - havde glemt ny linje ;)

Det går jo stærkt nogen gange... ;)


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

gc (04-10-2007)
Kommentar
Fra : gc


Dato : 04-10-07 14:44

>
> F.eks. kunne en sprintf nemt lave noget tabelagtigt
>
> $tabel = '':
> $products = array();
> $products[] = array('q'=>10,'d'=>'Bla bla bla','p'=>10.00);
> $products[] = array('q'=>7, 'd'=>'Tra la la', 'p'=>50.00);
> foreach($products as $p) {
> $tabel .= sprintf("%5s %-50s %8s",$p['q'],$p['d'],$p['p']);
> }
>
Tak for dit input.
Jeg vil gerne prøve, men jeg det er sort snak for mig
hvordan flettet jeg det ind i min kode?



Dan Storm (04-10-2007)
Kommentar
Fra : Dan Storm


Dato : 04-10-07 14:57

gc skrev:
>> F.eks. kunne en sprintf nemt lave noget tabelagtigt
>>
>> $tabel = '':
>> $products = array();
>> $products[] = array('q'=>10,'d'=>'Bla bla bla','p'=>10.00);
>> $products[] = array('q'=>7, 'd'=>'Tra la la', 'p'=>50.00);
>> foreach($products as $p) {
>> $tabel .= sprintf("%5s %-50s %8s",$p['q'],$p['d'],$p['p']);
>> }
>>
> Tak for dit input.
> Jeg vil gerne prøve, men jeg det er sort snak for mig
> hvordan flettet jeg det ind i min kode?
>
>

$porducts = array();
while ($line = mysql_fetch_array($result)) {
extract($line);
$products[] = array($ordreline, $varenummer, $varetekst, $antal);
}

$tabel = "":
foreach($products as $p) {
$tabel .= sprintf("%5s %-50s %8s",$p['q'],$p['d'],$p['p'])."\n";
}

$to = "Online-butik <testmail@msn.com>";
$from = "From: ".$navn."<".$email.">";
$subject = "On-Line Bestilling";
$message = "Tak for ordren.\n\n";
$message .= $tabel;
$headers .= "$from\r\n";
mail($to, $subject, $message, $headers);


utestet, men det skulle virke efter hensigten...


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Johan Holst Nielsen (04-10-2007)
Kommentar
Fra : Johan Holst Nielsen


Dato : 04-10-07 15:02

Dan Storm wrote:
> $porducts = array();

Burde være $products ;)

> while ($line = mysql_fetch_array($result)) {
> extract($line);
> $products[] = array($ordreline, $varenummer, $varetekst, $antal);
> }

Hvorfor $ordreline - hvor får du den fra? ;)

> $tabel = "":
> foreach($products as $p) {
> $tabel .= sprintf("%5s %-50s %8s",$p['q'],$p['d'],$p['p'])."\n";
> }
>

Du har inten keys angivet der hedder q, d og p i dit array længere oppe :)

> utestet, men det skulle virke efter hensigten...

Nej - det virker ikke... - blot så han ikke skulle forsøge forgæves :)

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Peter Brodersen (04-10-2007)
Kommentar
Fra : Peter Brodersen


Dato : 04-10-07 16:18

On Thu, 04 Oct 2007 16:02:26 +0200, Johan Holst Nielsen
<spam@phpgeek.dk> wrote:

>> while ($line = mysql_fetch_array($result)) {
>> extract($line);
>> $products[] = array($ordreline, $varenummer, $varetekst, $antal);
>> }
>
>Hvorfor $ordreline - hvor får du den fra? ;)

Vel fra extract() - omend det er sikkerhedsmæssigt dårlig stil at
bruge extract().

--
- Peter Brodersen
Kendt fra Internet

Dan Storm (04-10-2007)
Kommentar
Fra : Dan Storm


Dato : 04-10-07 18:34

Peter Brodersen skrev:
> On Thu, 04 Oct 2007 16:02:26 +0200, Johan Holst Nielsen
> <spam@phpgeek.dk> wrote:
>
>>> while ($line = mysql_fetch_array($result)) {
>>> extract($line);
>>> $products[] = array($ordreline, $varenummer, $varetekst, $antal);
>>> }
>> Hvorfor $ordreline - hvor får du den fra? ;)
>
> Vel fra extract() - omend det er sikkerhedsmæssigt dårlig stil at
> bruge extract().
>

Det var også blot et hurtigt svar, så han fik idéen :) Om end ikke, så
et dårligt svar fra min side... ;)

Enig, extract() er ikke hensigtsmæssig at bruge i den forbindelse. Ikke
fordi jeg lige kan komme på en anden forbindelse hvor den egentlig kunne
være brugbar?

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Johan Holst Nielsen (05-10-2007)
Kommentar
Fra : Johan Holst Nielsen


Dato : 05-10-07 10:16

Peter Brodersen wrote:
> On Thu, 04 Oct 2007 16:02:26 +0200, Johan Holst Nielsen
> <spam@phpgeek.dk> wrote:
>
>>> while ($line = mysql_fetch_array($result)) {
>>> extract($line);
>>> $products[] = array($ordreline, $varenummer, $varetekst, $antal);
>>> }
>> Hvorfor $ordreline - hvor får du den fra? ;)
>
> Vel fra extract() - omend det er sikkerhedsmæssigt dårlig stil at
> bruge extract().

Nej - ordreline bruge han som samlingsstrengen i hans "gamle" script -
det var ikke en del af MySQL dataene...

Grunden til extract() er nok blot copy-paste fra hans gamle script :)
Men det gør det jo ikke nemmere imho...

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Johan Holst Nielsen (04-10-2007)
Kommentar
Fra : Johan Holst Nielsen


Dato : 04-10-07 15:01

gc wrote:
>> F.eks. kunne en sprintf nemt lave noget tabelagtigt
>>
>> $tabel = '':
>> $products = array();
>> $products[] = array('q'=>10,'d'=>'Bla bla bla','p'=>10.00);
>> $products[] = array('q'=>7, 'd'=>'Tra la la', 'p'=>50.00);
>> foreach($products as $p) {
>> $tabel .= sprintf("%5s %-50s %8s",$p['q'],$p['d'],$p['p']);
>> }
>>
> Tak for dit input.
> Jeg vil gerne prøve, men jeg det er sort snak for mig
> hvordan flettet jeg det ind i min kode?

$ordreline = '';
while ($line = mysql_fetch_array($result)) {
extract($line);
$ordreline .=sprintf("%5s %-50s
%8s",$varenummer,$varetekst,$antal)."\n";
}

/* resten er det samme */

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

gc (05-10-2007)
Kommentar
Fra : gc


Dato : 05-10-07 08:20

> $ordreline = '';
> while ($line = mysql_fetch_array($result)) {
> extract($line);
> $ordreline .=sprintf("%5s %-50s
> %8s",$varenummer,$varetekst,$antal)."\n";
> }
>
> /* resten er det samme */
>

Du er nok desværre nød til at skære det ud i pap.
hvad skal jeg putte i $message?

$message = $ordreline; giver mig en tom mail.
$message = $tabel; giver en mail med 10 Bla bla bla 10 7 Tra la la 50

Ellers har jeg brugt følgende:

$ordreline = '';
while ($line = mysql_fetch_array($result)) {
extract($line);
$ordreline .=sprintf("%5s %-50s
%8s",$varenummer,$varetekst,$antal)."\n";
}
$tabel = '';
$products = array();
$products[] = array('q'=>10,'d'=>'Bla bla bla','p'=>10.00);
$products[] = array('q'=>7, 'd'=>'Tra la la', 'p'=>50.00);
foreach($products as $p) {
$tabel .= sprintf("%5s %-50s %8s",$p['q'],$p['d'],$p['p']);
}

$message = $ordreline;

mail($to, $subject, $message, $headers);



Johan Holst Nielsen (05-10-2007)
Kommentar
Fra : Johan Holst Nielsen


Dato : 05-10-07 10:20

gc wrote:
>> $ordreline = '';
>> while ($line = mysql_fetch_array($result)) {
>> extract($line);
>> $ordreline .=sprintf("%5s %-50s
>> %8s",$varenummer,$varetekst,$antal)."\n";
>> }
>>
>> /* resten er det samme */
>>
>
> Du er nok desværre nød til at skære det ud i pap.
> hvad skal jeg putte i $message?
>
> $message = $ordreline; giver mig en tom mail.
> $message = $tabel; giver en mail med 10 Bla bla bla 10 7 Tra la la 50
>
> Ellers har jeg brugt følgende:
>
> $ordreline = '';
> while ($line = mysql_fetch_array($result)) {
> extract($line);
> $ordreline .=sprintf("%5s %-50s
> %8s",$varenummer,$varetekst,$antal)."\n";
> }
> $tabel = '';
> $products = array();
> $products[] = array('q'=>10,'d'=>'Bla bla bla','p'=>10.00);
> $products[] = array('q'=>7, 'd'=>'Tra la la', 'p'=>50.00);
> foreach($products as $p) {
> $tabel .= sprintf("%5s %-50s %8s",$p['q'],$p['d'],$p['p']);
> }
>
> $message = $ordreline;
>
> mail($to, $subject, $message, $headers);

while ($r = mysql_fetch_array($result)) {
$ordreline .=sprintf("%5s %-50s
%8s",$r['varenummer'],$r['varetekst'],$r['antal'])."\n";
}
$tabel = '';
$products = array();
$products[] = array('q'=>10,'d'=>'Bla bla bla','p'=>10.00);
$products[] = array('q'=>7, 'd'=>'Tra la la', 'p'=>50.00);
foreach($products as $p) {
$tabel .= sprintf("%5s %-50s %8s",$p['q'],$p['d'],$p['p']);
}

$to = 'testmail@msn.com';
$headers = 'FROM: '.$email; //du bør validere $email
$subject = 'Ny ordre fra online butik';
$message = "Tak for ordren.\n".$firma."\n".$navn."\n".$fuldadresse;
$message .= "\n".$tabel;

mail($to, $subject, $message, $headers);


Så er det vidst serveret på et sølvfad ;)

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

gc (05-10-2007)
Kommentar
Fra : gc


Dato : 05-10-07 11:02

> Så er det vidst serveret på et sølvfad ;)
>
Ja det må man sige, og tak for det.
Det virker desværre ikke endnu.
Her er den fulde kode (testmail.php som jeg køre i min browser)
*****************************************************
<?php
require("mysql-funktioner.php");
aabn_forbindelse_og_vaelgdb();
$result = mysql_query("select * FROM kurv");
while ($r = mysql_fetch_array($result)) {
$ordreline .=sprintf("%5s %-50s
%8s",$r['varenummer'],$r['varetekst'],$r['antal'])."\n";
}
$tabel = '';
$products = array();
$products[] = array('q'=>10,'d'=>'Bla bla bla','p'=>10.00);
$products[] = array('q'=>7, 'd'=>'Tra la la', 'p'=>50.00);
foreach($products as $p) {
$tabel .= sprintf("%5s %-50s %8s",$p['q'],$p['d'],$p['p']);
}
$email ="testmail@msn.com";
$firma ="Webbutikken";
$fuldadresse = "her og der";
$to = testmail2@msn.com';
$headers = 'FROM: '.$email; //du bør validere $email
$subject = 'Ny ordre fra online butik';
$message = "Tak for ordren.\n".$firma."\n".$navn."\n".$fuldadresse;
$message .= "\n".$tabel;
echo $ordreline; //for at teste om der kommer data fra mysql.
mail($to, $subject, $message, $headers);
?>
*********************************************
Det giver mig en masse data på skærmen. (fra echo $ordreline;)
og følgende i min mail
-------------------------------------------------------------------
Tak for ordren.Webbutikken her og der 10 Bla bla bla
10 7 Tra la la
50---------------------------------------------------Altså ingen data.
Er der noget jeg har overset.?



Johan Holst Nielsen (05-10-2007)
Kommentar
Fra : Johan Holst Nielsen


Dato : 05-10-07 12:22

gc wrote:
>> Så er det vidst serveret på et sølvfad ;)
>>
> Ja det må man sige, og tak for det.
> Det virker desværre ikke endnu.
> Her er den fulde kode (testmail.php som jeg køre i min browser)
> *****************************************************
> <?php
> require("mysql-funktioner.php");
> aabn_forbindelse_og_vaelgdb();
> $result = mysql_query("select * FROM kurv");
> while ($r = mysql_fetch_array($result)) {
> $ordreline .=sprintf("%5s %-50s
> %8s",$r['varenummer'],$r['varetekst'],$r['antal'])."\n";
> }
> $tabel = '';
> $products = array();
> $products[] = array('q'=>10,'d'=>'Bla bla bla','p'=>10.00);
> $products[] = array('q'=>7, 'd'=>'Tra la la', 'p'=>50.00);
> foreach($products as $p) {
> $tabel .= sprintf("%5s %-50s %8s",$p['q'],$p['d'],$p['p']);
> }
> $email ="testmail@msn.com";
> $firma ="Webbutikken";
> $fuldadresse = "her og der";
> $to = testmail2@msn.com';
> $headers = 'FROM: '.$email; //du bør validere $email
> $subject = 'Ny ordre fra online butik';
> $message = "Tak for ordren.\n".$firma."\n".$navn."\n".$fuldadresse;
> $message .= "\n".$tabel;
> echo $ordreline; //for at teste om der kommer data fra mysql.
> mail($to, $subject, $message, $headers);
> ?>
> *********************************************
> Det giver mig en masse data på skærmen. (fra echo $ordreline;)
> og følgende i min mail
> -------------------------------------------------------------------
> Tak for ordren.Webbutikken her og der 10 Bla bla bla
> 10 7 Tra la la
> 50---------------------------------------------------Altså ingen data.
> Er der noget jeg har overset.?

Ja - jeg var lidt for hurtig :(

<?php
require("mysql-funktioner.php");
aabn_forbindelse_og_vaelgdb();
$result = mysql_query("select * FROM kurv");
$tabel = '';
while ($r = mysql_fetch_array($result)) {
$tabel .=sprintf("%5s %-50s
%8s",$r['varenummer'],$r['varetekst'],$r['antal'])."\n";
}

$email ="testmail@msn.com";
$firma ="Webbutikken";
$fuldadresse = "her og der";
$to = testmail2@msn.com';
$headers = 'FROM: '.$email; //du bør validere $email
$subject = 'Ny ordre fra online butik';
$message = "Tak for ordren.\n".$firma."\n".$navn."\n".$fuldadresse;
$message .= "\n".$tabel;
echo $message; //for at teste om der kommer data fra mysql.
mail($to, $subject, $message, $headers);
?>

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

gc (06-10-2007)
Kommentar
Fra : gc


Dato : 06-10-07 11:48

Super.
Det virker fint, bortset fra at "antal" smutter ned i næste linie
men det er vel et spørsmål om at justere i sprintf .
jeg har fundet http://dk2.php.net/sprintf så det vil jeg lige lidt med.
Tak for hjælpen.


Peter Brodersen (04-10-2007)
Kommentar
Fra : Peter Brodersen


Dato : 04-10-07 15:38

On Thu, 04 Oct 2007 09:53:00 +0200, Dan Storm
<shadyz@_REMOVETHIS_err0r.dk> wrote:

>$headers = "MIME-Version: 1.0\r\n";
>giver mailreaderen et indtryk af det er HTML du medsender og derfor vil
>readeren ikke opfatte \r\n på den måde som du forventer.

Det er vel Content-Type, der afgør det. Det bare at sætte MIME-Version
er ikke nok til at få alle klienter til at betragte mailen som HTML.

(skal man være flink, sender man så som multipart-alternative - så kan
man også lave begge løsninger)

--
- Peter Brodersen
Kendt fra Internet

Dan Storm (04-10-2007)
Kommentar
Fra : Dan Storm


Dato : 04-10-07 18:57

Peter Brodersen skrev:
> On Thu, 04 Oct 2007 09:53:00 +0200, Dan Storm
> <shadyz@_REMOVETHIS_err0r.dk> wrote:
>
>> $headers = "MIME-Version: 1.0\r\n";
>> giver mailreaderen et indtryk af det er HTML du medsender og derfor vil
>> readeren ikke opfatte \r\n på den måde som du forventer.
>
> Det er vel Content-Type, der afgør det. Det bare at sætte MIME-Version
> er ikke nok til at få alle klienter til at betragte mailen som HTML.

Content-Type alene giver ikke det ønskede resultat.
Flere fora angiver også denne som nøglen til HTML emails.
Hvis jeg tager fejl, ser jeg gerne et eksempel på dette?

> (skal man være flink, sender man så som multipart-alternative - så kan
> man også lave begge løsninger)

Enig. En klasse jeg har lavet tager højde for dette og kan levere begge
løsninger. Har man først forstået disse multipart messages er det også
meget nemmere at embede billeder og vedhæfte filer.


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408195
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste