mail(); får en fejl når jeg prøver at lave en query inde i $message

Tags:    php mail

<< < 12 > >>
Jeg får en fejl når jeg forsøger at lave en query inde i den variabel der indeholder selve beskeden som sendes via mail() funktionen.

Jeg stopper nærmest scriptet, og vil jo gerne have mulighed for at emaile kunden vare oplysningerne, og ikke kun hvilket beløb der er betalt samt leverings adresse.

Der går galt her:

$get_cart_info...

Den query giver mig følgende fejl i browseren og mailen sendes ikke:

Catchable fatal error: Object of class mysqli_result could not be converted to string in /home/www/xxx.dk/views/betaling_accepteret.php on line 129 (som er ved $get_cart_info)

Jeg går ud fra det er en syntax fejl i sql der stopper scriptet? Det ser nu bare rigtigt ud i mine øjne, men jeg tror der skal et par nye til at se på det, da jeg vist har stirret mig blind på det..

Så hvordan kan jeg lave denne mail, uden at knække den og ødelægge den ved at "stoppe" den ved $get_cart_info??

Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 22.03.2012 17:47 af Bruger #16555
16 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Hej Michael,

Tak for den shortcut, jeg har ændret den lidt så den passede til det hele.

Jeg får fint alle rækker ud via den join, men mit problem er stadig det samme!

Jeg får lavet en fejl når jeg vil integrere netop de resultater fra den query i den email (ordre bekræftelse) jeg gerne vil sende til kunderne. Det er her det går galt.

Før fik jeg også informationerne ud, bare uden en join - Men jeg får dog ødelagt mailen når jeg prøver at integrere resultatet i mail beskeden, som ser således ud:
Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 23.03.2012 13:55 af Bruger #16555
Cirka sådan her burde det kunne gøres:

Fold kodeboks ind/udPHP kode 


Men det er langt fra den optimale løsning. Til sådanne ting vil jeg anbefale at du går i gang med at kigge på nogle template-mekanismer.



Indlæg senest redigeret d. 23.03.2012 14:07 af Bruger #10216
Ja det er en skidt løsning, og havde ikke forventet at det at sende en simpel ordre bekræftelse skulle ende med at være det stykke kode der skulle tage længst tid på en hel shop..

Jeg må lære mere om mail, måder at sende/integrere potentielt større data sæt deri.

Hvordan mener du præcis at du vil benytte din fremgangsmåde som skrevet ovenfor?

'.$order_mail_product_list /*** HER INDSÆTTES PRODUKTLISTEN ***/.'??

Når jeg begynder at fifle med (forkerte, red..) måder at få resultaterne derind på, så ja, sker der ikke så meget, og mailen kommer enten ikke frem eller der er blot blankt der hvor varerne skulle have været skrevet op på ordre bekræftelsen.





Kig efter variablen $order_mail_product_list - dens værdi sættes i loopet.

Email headers må ikke indeholde HTML - her skal du læse dokumentationen http://dk2.php.net/manual/en/function.mail.php for hvad der må være i $headers. Der er masser af eksempler for hvordan du skriver mail eksekveringen.

Alternativt kan du f.eks. benytte PHPMailer til den slags - men det er en helt anden boldgade.



Jeg havde overset at du havde indsat den der :-)

Jeg fik dog dobbelt antal varer ind i mailen som kunne ses på kvitteringen. Men det er nu helt iorden.

Michael: Det var dette der fik det til at virke, som jeg ikke selv havde set:
$order_mail_product_list = '';
foreach($result as $row) {
$order_mail_product_list .= etc etc..

Så blev data gemt fint, fra 1 vare til 100 - og det var det jeg var på udkig efter.

Så mange tak for løsningen!

Jeg er lidt en novice ud i mail, men vil du anbefale PHPMailer fremfor mail()?

Hvad er forskellen i måden man kan sende data på?

Og i hvilke tilfælde ville det være en bedre fremgangsmåde?

Så har jeg det i baghovedet til næste gang :-)



Indlæg senest redigeret d. 23.03.2012 17:14 af Bruger #16555
mail() er php's egen mail funktion...

PHPMailer er et API der pakker mail() ind, og tilføjer en rækker mere logiske metoder og funktioner.
Se evt. mere her: http://code.google.com/a/apache-extras.org/p/phpmailer/wiki/UsefulTutorial#First_time

Forskellen i at sende data er ikke svært anderledes i det ene vs. det andet. Med mail() får du kun en funktion og så skal du vide resten, hvilke relevante headers du skal sende med oma. Med PHPMailer får du en OOP tilgang hvor du indstiller nogle parametrer, og så vil APIet sørge for at generere de korrekte headers til din email.

Den ene tilgang er ikke mere korrekt end den anden. Afhængig af vane, kan den ene dog være nemmere end den anden.



<< < 12 > >>
t