Toon posts:

[PHP] Mailen in PHP

Pagina: 1
Acties:
  • 77 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo allemaal,
graag wil ik met PHP een e-mail via mijn website verzenden. Het verzenden gaat goed, de opmaakt echter niet.
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
include 'connect_db.php';
include 'cookie.php';

// De gevraagde gegevens opvragen 
$result = mysql_query("SELECT * FROM users where username = '$username' ");  

// de record in $row opslaan
$row = mysql_fetch_array( $result );

$email = $row['email'];


#form is nog niet verzonden
if( !isset($_POST['submit']) )
{
echo '<p>Form niet verzonden, <a href="formulier.php" title="Ga naar het contactformulier">vul het nu in</a>.</p>';
}
else
{
// multiple recipients
$to = 'xxx@xxx.com';

// subject
$subject = 'Bevestiging bestelling';

$res2 = mysql_query('SELECT * FROM mandje_$username');
$categorie = ''.$row->categorie.'' ;
$link = ''.$row->img_src.'' ;
$naam = ''.$row->naam.'' ;


// message
$message = "
<table width='100%'>
  <tr>
    <td width='4%'>&nbsp;</td>
    <td width='49%'><b><u>Naam:</u></b></td>
    <td width='37%'><b><u>Categorie:</u></b></td>
    <td width='10%'><b><u>Foto:</u></b></td>
    </tr>
    $res2 = mysql_query('SELECT * FROM mandje_$username');
while($row = mysql_fetch_object($res2)){?> <tr>
    <td valign='top'><? print $naam; ?</td>
    <td valign='top'><? print $categorie; ?</td>
    <td valign='top'><? print $link; ?>
    </td>
     </tr>
<? } ?>
</table>";

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);

Zoals gezegd: het verzenden lukt wél. Hij geeft echter niet weer wat ik wil.
In een normale php-pagina lukt deze loop wél.
Ik zal ongetwtijfeld wat fout doen bij de switch tussen PHP en HTML of met de volgorde, maar zelf kom ik er niet uit... :( 8)7

  • asfaloth_arwen
  • Registratie: Februari 2005
  • Laatst online: 06:34
Inkoppertje, wat wordt dan weergegeven, als het niet is wat je wilt?

Specs


Verwijderd

Topicstarter
Gekopieerd uit m'n inbox (zonder lay-out dus):

Naam: Categorie: Foto:
= mysql_query('SELECT * FROM mandje_Admin'); while(Array = mysql_fetch_object()){?>

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 30-11 15:10

Creepy

Tactical Espionage Splatterer

Je stopt dat ook direct als string in de variabele message, nogal logisch dat je dat dan te zien krijgt.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
en hoe moet het dan...?

Verwijderd

Vind ik niet zo raar omdat de SQL query en alles gewoon in de echo statement staan verander $message = enz.. eens in dit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$message = "
<table width='100%'>
  <tr>
    <td width='4%'>&nbsp;</td>
    <td width='49%'><b><u>Naam:</u></b></td>
    <td width='37%'><b><u>Categorie:</u></b></td>
    <td width='10%'><b><u>Foto:</u></b></td>
    </tr>";
    $res2 = mysql_query('SELECT * FROM mandje_$username');
    while($row = mysql_fetch_object($res2))
    {
         $message .= "
         <tr>
             <td valign='top'>" . $naam . "</td>
             <td valign='top'>" .$categorie . "</td>
             <td valign='top'>" . $link . "</td>
          </tr>";
    } 
     $message .= "</table>"; 
?>

[ Voor 9% gewijzigd door Verwijderd op 14-05-2007 19:56 ]


  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 01-12 14:53
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// message 
$message = " 
<table width='100%'> 
  <tr> 
    <td width='4%'>&nbsp;</td> 
    <td width='49%'><b><u>Naam:</u></b></td> 
    <td width='37%'><b><u>Categorie:</u></b></td> 
    <td width='10%'><b><u>Foto:</u></b></td> 
    </tr>"; 

    $res2 = mysql_query("SELECT * FROM mandje_$username"); 
while($row = mysql_fetch_object($res2))
{
$message .= "
 <tr> 
    <td valign='top'> $naam  </td> 
    <td valign='top'> $categorie </td> 
    <td valign='top'> $link </td> 
 </tr>";
 } 
$message .= "</table>";

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Ook grappig dat je in de $res2-mysql-query gebruik maakt van enkele aanhalingstekens i.p.v. dubbele én toch (neem ik aan) de variabele $username wilt laten parsen.

De user boven de poster boven mij haalt 't een en ander ook door elkaar :+

Oh en maak je per user een nieuwe tabel aan ofzo? Lijkt me ook niet ideaal.

[ Voor 13% gewijzigd door Osiris op 14-05-2007 19:55 ]


Verwijderd

Topicstarter
Ik maak niet per user een aparte tabel aan, wel een apart winkelmandje ;)
Het gaat hier om een webwinkel.

Momenteel heb ik dit, wat geen foutmelding oplevert:
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
...
<?
$res2 = mysql_query("SELECT * FROM mandje_$username"); 
$categorie = ''.$row->categorie.'' ;
$link = ''.$row->img_src.'' ;
$naam = ''.$row->naam.'' ;


// message 
$message = " 
<table width='100%'> 
  <tr> 
    <td width='4%'>&nbsp;</td> 
    <td width='49%'><b><u>Naam:</u></b></td> 
    <td width='37%'><b><u>Categorie:</u></b></td> 
    <td width='10%'><b><u>Foto:</u></b></td> 
    </tr>"; 


while($row = mysql_fetch_object($res2))
{
$message .= "
 <tr> 
    <td valign='top'><? print $naam; ?></td> 
    <td valign='top'><? print $categorie; ?></td> 
    <td valign='top'><? print $link; ?></td> 
 </tr>";
 } 
$message .= "</table>"; 
?>
...

Er worden echter geen gegevens meegestuurd...

  • asfaloth_arwen
  • Registratie: Februari 2005
  • Laatst online: 06:34
Je stuurt nog steeds variabelen als letterlijke string

Specs


Verwijderd

Topicstarter
het spijt me maar ik weet niet hoe het dan wel moet... :(

  • asfaloth_arwen
  • Registratie: Februari 2005
  • Laatst online: 06:34
Volgens mij klopt na de edit de code die hier staat wel (werk nooit met php, dus pin me er niet op vast.)

[ Voor 4% gewijzigd door asfaloth_arwen op 14-05-2007 21:21 ]

Specs


  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 19:48
Verwijderd schreef op maandag 14 mei 2007 @ 21:03:
PHP:
1
2
3
4
5
6
7
8
9
10
...
<?php
$message .= "
 <tr> 
    <td valign='top'><? print $naam; ?></td> 
    <td valign='top'><? print $categorie; ?></td> 
    <td valign='top'><? print $link; ?></td> 
 </tr>";
?>
...
De bovenstaande code klopt niet. Je zet '<? print $naam; ?> letterlijk in een string. Je wilt alleen de waarde van $naam in de string hebben staan. Het moet dus zo:
PHP:
1
2
3
4
5
6
7
8
...

$message .= "
 <tr> 
    <td valign='top'>" . $naam . "</td>
    [3x hetzelfde verhaal]
 </tr>";
...


Je code gaat zowiezo niet werken, want dit verhaal:
PHP:
1
2
3
$categorie = ''.$row->categorie.'' ;
$link = ''.$row->img_src.'' ;
$naam = ''.$row->naam.'' ;


moet binnen de while-lus.

edit: als ik er geen '<?php' en '?>' inzet raakt de syntax highlighting van GoT zelfs in de war :+

edit2: Er zitten wel meer rare dingetjes in, wat is het nut van code als:
PHP:
1
$categorie = ''.$row->categorie.'' ;

[ Voor 31% gewijzigd door doeternietoe op 14-05-2007 21:31 ]


  • Room42
  • Registratie: September 2001
  • Niet online
Verwijderd schreef op maandag 14 mei 2007 @ 21:19:
het spijt me maar ik weet niet hoe het dan wel moet... :(
Maar zou je dat probleem dan eerst niet eens oplossen? Dat is namelijk echt echte basiskennis van PHP. Lees eens wat basis tutorials of basisboeken over PHP.

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


  • b19a
  • Registratie: September 2002
  • Niet online
Verwijderd schreef op maandag 14 mei 2007 @ 21:19:
het spijt me maar ik weet niet hoe het dan wel moet... :(
Tip: kijk even wat voor kleur "<? print $link; ?> krijgt van de PHP-highlighter:
PHP:
1
2
3
<?
$message="(blaa)...<? print $link; ?>...(blaaa)";
?>

Verwijderd

Topicstarter
Kijk doeterniettoe, daar heb ik wat aan! :D
Hartstikke bedankt, het werkt nu!!!

Super (Y)

PHP:
1
2
3
<?
$categorie = ''.$row->categorie.'' ; 
?>

Ik ga vaak te snel, ik ga eerst de geavanceerde dingen doen als de makkelijke dingen nog niet goed gaan :P Dit was dus een beetje voorbarig ;)

Bedankt!!!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 30-11 15:10

Creepy

Tactical Espionage Splatterer

Ben je echt van plan om voor elke gebruiker een nieuwe tabel voor een mandje aan te maken? Neem aub deze tip ten harte aan: niet doen en ga wat lezen over normaliseren. Nofi, maar dit is niet slim.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Cartman!
  • Registratie: April 2000
  • Niet online
Verwijderd schreef op maandag 14 mei 2007 @ 21:03:
Ik maak niet per user een aparte tabel aan, wel een apart winkelmandje ;)
Het gaat hier om een webwinkel.
Dat doe je dus wel.... Zoals mn bovenbuurman zegt : ga info zoeken over normaliseren.

Verder zou ik eerst eens opzoeken hoe je met strings dient om te gaan voordat je een shop wilt gaan bouwen.

Edit: kijk vooral eens naar deze dingen:

PHP:
1
2
3
$res2 = mysql_query('SELECT * FROM mandje_$username'); 

$categorie = ''.$row->categorie.'' ;


Daar klopt gewoon geen raid van en ik ga je niet voorkauwen hoe het wel moet, daar is het simpelweg te _basic_ voor. Dit zijn overigens niet de enige 2 regels maar ik kon bijna je hele code selecteren, dat leek me vrij zinloos.

[ Voor 32% gewijzigd door Cartman! op 14-05-2007 23:44 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Creepy schreef op maandag 14 mei 2007 @ 21:42:
Ben je echt van plan om voor elke gebruiker een nieuwe tabel voor een mandje aan te maken? Neem aub deze tip ten harte aan: niet doen en ga wat lezen over normaliseren. Nofi, maar dit is niet slim.
En daarmee is dit topic wel af denk ik. Als je niet eens weet hoe je strings in andere strings moet afdrukken of hoe je de resultaten van een query in een tabelletje zet, dan wordt het gewoon hoog tijd dat je je gaat inlezen in de stof en jezelf wat kennis bijbrengt. Zowat elke tutorial heeft wel hoofdstukken over strings en query's, dus dit moet je prima zelf kunnen uitdokteren. Programmeren kun je pas doen als je eerst weet wat je doet. :)

'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.

Pagina: 1

Dit topic is gesloten.