[PHP] array verzenden in mijn mail bericht

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BaseBoyNL
  • Registratie: December 2006
  • Laatst online: 20-09 15:04
Hey allemaal,

Ik probeer een array te verzenden in mijn mail bericht.
bijvoorbeeld:

code:
1
2
3
4
5
6
Aantal      product       kosten 
-------------------------------------------
  1         Koelkast         700 
  5         Vaatwassers   2000 
  2         Stoellen          100 
-------------------------------------------


Deze staan in array
Maar hij laat alleen het laatst toegevoegde product toe.

Hoe kan ik dit oplossen ?

hier is mijn schript:

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
64
65
66
67
68
69
70
<?php 
session_start(); 

include("config.php"); 

$bedrijfsnaam = $_POST['bedrijfsnaam']; 
$voornaam = $_POST['voornaam']; 
$achternaam = $_POST['achternaam']; 
$adres = $_POST['adres']; 
$postcode = $_POST['postcode']; 
$woonplaats = $_POST['woonplaats']; 
$telefoon = $_POST['telefoon']; 
$fax = $_POST['fax']; 
$land = $_POST['land']; 
$btwnummer = $_POST['btwnummer']; 
$emailadres = $_POST['emailadres']; 

while (list ($key, $val) = each ($_SESSION["artikelen"])){ 
    $nr = $val["nummer"]; 
    $artikel2 = mysql_query("SELECT * FROM webwinkel_producten WHERE id='".$nr."'"); 
    if (mysql_num_rows($artikel2)){ 
        $artikel1 = mysql_fetch_array($artikel2); 
        
        $prijs = $artikel1["prijs"]; 
        $sprijs = $prijs * $_SESSION["artikelen"][$key]["aantal"]; 
        $totaal = $totaal + $sprijs; 
        
        $totaalalles[] =sprintf("%1.2f",$sprijs); 

 } 
 } 
 $totaalallesu = array_sum($totaalalles); 
  
 $aantala = $_SESSION["artikelen"][$key]["aantal"]; 
 $artikela = $artikel1["product"]; 
 $kosten = sprintf("%1.2f",$sprijs); 
    
    $headers = "FROM: webshop <webshop@domein.nl>"; 
    $subject = "U heeft een order ontvangen"; 
    $message = " 
    $bedrijfsnaam 
    $voornaam $achternaam 
    $adres 
    $postcode $woonplaats 
    $land 
    Tel: $telefoon 
    Fax: $fax 
    $emailadres 
    
    BTW Nummer: $btwnummer 
    
    Besteld: 
    Aantal            Product                Kosten 
    ------------------------------------------------------------
    $aantala        $artikela$kosten 
    ------------------------------------------------------------
                                Totaal: € $totaalallesu 
    "; 
    
    mail('ruben@domein.nl',$subject,$message,$headers); 
    
    // NAAR DE KLANT 
    $headers = "FROM: webshop <webshop@domein.nl>"; 
    $subject = "Bedankt voor uw order"; 
    $message = " 
    Bedankt voor uw order 
    Er word zo spoedig mogenlijk contact opgenomen"; 
    
    mail($emailadres,$subject,$message,$headers); 
    ?> 


Als iemand mij hier mee kon helpen zou ik heel blij zijn.

[ Voor 0% gewijzigd door RobIII op 20-02-2007 14:58 . Reden: Code tags toegevoegd ]


Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Wat heb je zelf al geprobeerd ?
Het zou zowieso een goed idee zijn om je code tussen [code][/code] tags te zetten; dit verhoogd de leesbaarheid, hetzelfde geld voor inspingen ....

Tip: Als je meerdere bestelde artikelen hebt, zou de dan ook niet in 't overzicht $aantala, $artikela en $kosten voor elk bestelde artikel moeten weergeven ;)

[ Voor 31% gewijzigd door TheRookie op 20-02-2007 12:55 . Reden: uitgebreidere post gemaakt ]


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Hoi BaseBoyNL, welkom op GoT :)
Zoals je hebt gezien in De Algemene Voorwaarden en Het algemeen beleid #topicplaatsen moet je wel wat moeite doen voordat je een topic opent.

Daarnaast wordt je code een stuk overzichtelijker als je het plaatst tussen [code][/code] tags. Omdat je php gebruikt kan je de highlighter aanzetten of [php][/php] gebruiken, zie ook de Overzicht van UBB-codes.

Eigenlijk hebben we niet zo veel aan de informatie die je geeft. Belangrijker is om te weten wat je hebt geprobeerd, wat niet lukte en wat je precies wil. Om het ook voor jezelf handiger te maken is het goed om te indenten:
PHP:
1
2
3
4
5
6
7
8
9
10
11
while (list ($key, $val) = each($_SESSION["artikelen"]) ) { 
  $nr = $val["nummer"]; 
  $artikel2 = mysql_query("SELECT * FROM webwinkel_producten WHERE id='".$nr."'"); 
  if (mysql_num_rows($artikel2)){ 
    $artikel1 = mysql_fetch_array($artikel2); 
    $prijs = $artikel1["prijs"]; 
    $sprijs = $prijs * $_SESSION["artikelen"][$key]["aantal"]; 
    $totaal = $totaal + $sprijs; 
    $totaalalles[] =sprintf("%1.2f",$sprijs); 
  } 
}
Wat je nu precies doet is me wat onduidelijk: probeer je casus te verkleinen en versimpelen naar een testcase en leg die hier voor. Dan zijn er genoeg mensen die je willen helpen :)

Wat ik nu globaal uit je code haal is dat je een while loop doet en elke keer in die loop een mysql query uitvoert. Volgens mij kan je beter een inteligentere query opstellen die het eenvoudiger maakt om je data te verwerken :)

[ Voor 7% gewijzigd door mithras op 20-02-2007 13:29 ]


Acties:
  • 0 Henk 'm!

  • BaseBoyNL
  • Registratie: December 2006
  • Laatst online: 20-09 15:04
mijn excuses.
Post voor het eerst hier mijn php probleem.

ik probeer dus mijn gegevens uit de array te mailen.
Hier voor heb ik al verschillende methodes gebruikt zoals:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
while (list ($key, $val) = each ($_SESSION["artikelen"])){
    $nr = $val["nummer"];
    $artikel2 = mysql_query("SELECT * FROM webwinkel_producten WHERE id='".$nr."'");
    if (mysql_num_rows($artikel2)){
        while($artikel1 = mysql_fetch_array($artikel2))
        {
        $prijs = $artikel1["prijs"];
        $sprijs = $prijs * $_SESSION["artikelen"][$key]["aantal"]; 
        $totaal = $totaal + $sprijs;
        }
        $totaalalles[] =sprintf("%1.2f",$sprijs);

 }

Dit werkte helaas niet.

toen dacht ik van als ik het nou in het bericht zelf doet:
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
$message = "
    $bedrijfsnaam
    $voornaam $achternaam
    $adres
    $postcode $woonplaats
    $land
    Tel: $telefoon
    Fax: $fax
    $emailadres
    
    BTW Nummer: $btwnummer
    
    Besteld:
    Aantal          Product             Kosten
    -----------------------------------------------".
    
                                $prijs = $artikel1["prijs"];
        $sprijs = $prijs * $_SESSION["artikelen"][$key]["aantal"]; 
        $totaal = $totaal + $sprijs;

echo "$aantala";        echo "$artikela";           echo"€ $kosten";
."
    -----------------------------------------------
                                Totaal: € $totaalallesu
    ";

Helaas werkte dit ook niet.
Ik zou echt niet weten hoe ik het dan wel zou moeten doen.

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Heb je mijn tip gezien/gelezen/begrepen ?

Acties:
  • 0 Henk 'm!

  • BaseBoyNL
  • Registratie: December 2006
  • Laatst online: 20-09 15:04
ja maar ik begrijp niet helemaal wat je precies bedoelt

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Wat je nu in het overzicht laat zien is (in woorden): "Toon de waarde van $aantala, $artikela en $kosten" terwijl je doel "Toon voor elk bestelde artikel de waarde van $aantala, $artikela en $kosten" is

Acties:
  • 0 Henk 'm!

  • BaseBoyNL
  • Registratie: December 2006
  • Laatst online: 20-09 15:04
ja idd dat probeer ik ook te krijgen maar weet niet hoe ik dat kan doen.
Want met een while lukt het niet namelijk

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Wat je wil is dus eigenlijk een array doorlopen en voor elk item een nieuwe regel aanmaken en die toevoegen aan je email bericht:
PHP:
1
2
3
4
5
6
7
8
9
10
$product = array(
   array("aantal"=>1,"name"=>"koelkast","kosten"=>700),
   array("aantal"=>2,"name"=>"stoelen","kosten"=>100),
   array("aantal"=>5,"name"=>"vaatwassers","kosten"=>2000)
   );
$message = " Besteld: 
    Aantal\tProduct\tKosten";
foreach($product as $value){
   $message .= $value["aantal"]."\t".$value["name"]."\t".$value["kosten"];
}
Je voegt nu eenmalig je items toe, terwijl je dat liever doet voor elk item in de array.

edit:
Lol@hieronder

Acties:
  • 0 Henk 'm!

  • Mark_Steverink
  • Registratie: November 2000
  • Laatst online: 20-12-2007
BaseBoyNL schreef op dinsdag 20 februari 2007 @ 12:48:

2 Stoellen 100
-------------------------------------------

Bedankt voor uw order.
Er wordt zo spoedig mogenlijk contact opgenomen.";
Inhoudelijk heb ik niet zo veel meer toe te voegen, maar een commercieel bedoelde webshop dient foutvrij te zijn.
TheRookie schreef op dinsdag 20 februari 2007 @ 12:52:
Het zou zowieso een goed idee zijn om je code tussen [code][/code] tags te zetten; dit verhoogdt de leesbaarheid, hetzelfde geldt voor inspringen ....
Het gebruik van correct Nederlands verhoogt de leesbaarheid nog veel meer.

Acties:
  • 0 Henk 'm!

  • BaseBoyNL
  • Registratie: December 2006
  • Laatst online: 20-09 15:04
mensen lezen maar een deel van het word en dan weten ze al wat er mee word bedoeld ;) maar tis inderdaad netter maar of het dan beter te lezen is betwijfel ik :P

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

offtopic:
[quote]Mark_Steverink schreef op dinsdag 20 februari 2007 @ 13:25:
Het gebruik van correct Nederlands verhoogt de leesbaarheid nog veel meer.
[/quote]
Uiteraard heb je gelijk; maar de strekking van mijn opmerking is er niet anders door; dus wat in dit geval de toegevoegde waarde van de correctie door een "[knip]" is ontgaat mij enigszins...

[ Voor 3% gewijzigd door TheRookie op 20-02-2007 13:56 . Reden: knip ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Mark_Steverink schreef op dinsdag 20 februari 2007 @ 13:25:
[...]


Inhoudelijk heb ik niet zo veel meer toe te voegen, maar een commercieel bedoelde webshop dient foutvrij te zijn.


[...]


Het gebruik van correct Nederlands verhoogt de leesbaarheid nog veel meer.
Zullen we gewoon inhoudelijk blijven en mekaar niet gaan afvallen op spelfoutjes? Er zijn zat fora waar je je als taalpurist kunt uitleven lijkt me zo ;)

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

ik denk dat de topicstarter zich eerst maar eens moet gaan verdiepen in wat array's nou eigenlijk zijn.

hier wat leesvoer:
http://nl2.php.net/manual/en/language.types.array.php legt uit wat een array is.
http://nl2.php.net/manual/en/ref.array.php handige funties voor het werken met array's.
http://nl2.php.net/manual/en/language.control-structures.php legt uit hoe je een loop maakt.
http://nl2.php.net/manual/en/control-structures.foreach.php en dit is eigenlijk wat je zoekt denk ik.

als je er dan nog niet uitkomt kun je hier wel weer terecht voor wat opheldering. en lees ook een wat meer over 'string concanation'. je opbouw van je e-mail is wat slordig omdat als je nou je text wat ident je e-mail een stuk ident. maak van elke regel een aparte string en voeg die toe aan de e-mail string.

voorbeeld
PHP:
1
2
3
4
5
6
7
8
9
 $message = "";
 $message .= "\n dit is regel 1.";
 $message .= "\n dit is regel 2.";
 $message .= "\n als je de manual hebt gelezen dan";
 $message .= "\n zou je weten dat .= het zeflde is als ";
 $message .= "\n  \$message = \$message + \"nieuwe regel\"; ";
 $message .= "\n en dat een \ een escape character is.";
 $message .= "\n \\t staat voor een tab en \\n voor een nieuwe regel";
 $message .= "\n oftewel line-break.\n";


@RobIII zou het lezen van de PHP-manual niet een vereiste moeten zijn voordat je een topic opent?

[ Voor 33% gewijzigd door Verwijderd op 21-02-2007 07:08 ]

Pagina: 1