14. april 2012 - 16:43Der er
27 kommentarer og 1 løsning
PHP email til kunden
Hej eksperter.
Jeg er igang med at lave et booking system som skal have en bekræft og afkræft link.
Når vedkommende som styre booking systemet bekræfter en ordre, skal vedkommende som har bestilt ordren modtage en email hvori der selvfølgelig står at ordren er blevet godkendt.
Er der nogen herinde som kan forklare mig og, eller evt hjælpe mig med ovenstående.
Jeg har før lavet mail til en kontakt form, men da det her er den anden vej, har jeg ingen idé om hvordan det lige skal skrues sammen.
"Hvis vi nu siger, at du har bestilt et bord til 2 ved en cafe. - så skal caféen ind og godkende om der er plads til jer, eller om der ikke er nogen borde ledige.
Det gør de inde i booking systemet, hvor de enten godkender eller afviser ordren.
Hvis de så trykker godkend, så modtager du en email, hvori der selvfølgelig står, at du har fået et bord til 2, eftersom du jo har bestilt dette, og omvendt hvis de afviser, så modtager du en email om at der ikke er pladser til jer.
Det er den email jeg mangler at få lavet, som jeg har problemer med.
Jeg resumere lige:
Emailen som bliver sendt til "dig" når caféen har godkendt eller afvist din bestilling af bord. Du modtager en mail, når de trykker a eller b."
Hvis nogen mangler uddybelse er i selvfølgelig velkommen til at skrive dette.
I formen, hvori restauranten klikker a eller b, skal du blot afsende en mail - nemt nok. :-) Det kræver dog, du kender kundens email, at du har en afsender-email og at du får skrevet noget indhold til mailen. Til afsendelse af mail kan du blot bruge PHP's indbyggede mail-funktion: http://dk.php.net/manual/en/function.mail.php
Jeg skal trække mailen fra databasen, via linket accept.php?id=(X) - og i accept.php skal den php jeg mangler så være.
Men du mener vel, at jeg bare skal lave det som jeg altid har gjort, som hvis det var en kontakt form, dog skal jeg bare ændre "$to = 'mail.xx'" til noget andet ?
Eller hvordan mener du ? For har nemlig forsøgt det, og aner ikke hvad jeg lige gør forkert.
$sendto = "you@yourdomain.com"; // this is the email address collected form the form $ccto = ""; //you can cc it to yourself $subject = "Emne"; // Subject $message = "Besked" ; $header = "From: you@yourdomain.com\r\n"; $header .= "Reply-to: you@yourdomain.com\r\n"; // This is the function to send the email mail($sendto, $subject, $message, $header);
Hva mangler der evt? - og skal fungere som skrevet i et tidligere indlæg. !
Forresten, eftersom det er et <a href="accept.php?id=1">Godkend</a> jeg har lavet den på, skal det jo ikke være noget med submit, og den skal jo sendes til den mail, som kunden af caféen har skrevet ind, da han bestilte bord.
Ved bestilling af bord kunne man forestille sig, at kunden her skal indtaste sin email. Husk at tydeliggøre, at det er vigtigt, at denne er korrekt, da tilbagemelding kommer her. Emailen oprettes i databasen.
Du henter emailen, når restauranten godkender ordren. <a href="accept.php?id=1">Godkend</a> - her skal id være tilsvarende kundens id i databasen. Du kan hente emailen sådan her:
$sql = "SELECT email FROM table WHERE id='{$_GET['id']'";
Husk selvfølgelig at validere id'et, ovenstående er bare for at vise, hvordan det kan hentes. Så kan du integrere det i nedenstående to funktioner, som Ole så fint har lavet og vist i tidligere tråde - den sørger for, at tegnsætningen er i orden på dine mails.
Jeg har nu forsøgt at ligge jeres fine koder ind i mit dokument, men jeg modtager stadig ingen email, når jeg godkender ordren.
Jeg har lavet nedenstående nu, men der er muligvis flere problemer her, end jeg regnede med.
Håber i kan komme med en løsning. [b] mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); mysql_query("SET NAMES utf8"); mysql_query("SET character_set_results='utf8′");
$query = "SELECT email FROM $tbl_name WHERE id='{$_GET['id']}'";
Så du mener at det jeg har skrevet nedenfor er rigtigt.
<?php
$host="host"; // Host name $username="username; // Mysql username $password="password; // Mysql password $db_name="db_name"; // Database name $tbl_name="tbl_name"; // Table name
// Connect to server and select database. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); mysql_query("SET NAMES utf8"); mysql_query("SET character_set_results='utf8′");
$query = "SELECT email FROM $tbl_name WHERE id='{$_GET['id']}'"; $row = mysql_fetch_assoc($query); $email = $row['email'];
mail_utf8($email, 'Bordbestilling', 'Besked til kunden ...', 'no-reply@email.dk');
?>
For har jeg nemlig skrevet ind, og trykker jeg så godkend, så kommer den ind på en blank side, hvor der end ikke er nogen kildekode, hverken hvis jeg forsøger at echo noget ud, og jeg modtager stadig ingen mail /:
Skal bare have det til at virke, så skal alle de fine ting bare tilføjes senere.
@Olebole: en guide ville på ingen måder være en dårlig idé :-)
@Kaspercp: En samlet kode kunne se sådan her ud:
<?php
$host="host"; // Host name $username="username"; // Mysql username $password="password"; // Mysql password $db_name="db_name"; // Database name $tbl_name="tbl_name"; // Table name
// Connect to server and select database. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); mysql_query("SET NAMES utf8"); mysql_query("SET character_set_results='utf8′");
$g_id = ( isset( $_GET['id']) && is_numeric( $_GET['id']) ? (int)$_GET['id'] : FALSE); if( !$g_id) { echo 'Der skete en fejl'; // ID'et blev ikke overført korrekt } else { $query = "SELECT email FROM $tbl_name WHERE id=$g_id"; $row = mysql_fetch_assoc($query); $email = $row['email'];
mail_utf8($email, 'Bordbestilling', 'Besked til kunden ...', 'no-reply@email.dk'); }
?>
Funktioner skal forekomme før, de kaldes. Dog ville det hjælpe på din struktur, at du havde alle funktioner samlet i en separeret fil, som du inkluderer. Bemærk at jeg har valideret $_GET['id'] for dig, så du ikke glemmer det. :-)
Jeg siger tak for koden. - det hele er nu skrevet ind som i nævnte.
Men af en eller anden årsag virker det stadig ikke, og hvis jeg trykker på godkend, og kigger efter kildekoden er der intet overhovedet http://www.image-upload.net/di-1BK3.jpg
Har ingen idé om hvad fejlen kan være, man skal selvfølgelig logge på, for at komme ind til det her system, hvor du godkender og afviser, men det burde ikke have noget at sige, og idéen skal jo bare være den som passer til ordren, hvilken den er.
Det er selvfølgelig irrelevant, om der står noget i accept.php når den får en header() tilbage, men jeg modtager bare ikke nogen mail, til den email jeg tester med. som er den som den henter fra databasen.
$host="host"; // Host name $username="username"; // Mysql username $password="password"; // Mysql password $db_name="db_name"; // Database name $tbl_name="tbl_name"; // Table name
// Connect to server and select database. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); mysql_query("SET NAMES utf8"); mysql_query("SET character_set_results='utf8′");
$g_id = ( isset( $_GET['id']) && is_numeric( $_GET['id']) ? (int)$_GET['id'] : FALSE); if( !$g_id) { echo 'Der skete en fejl'; // ID'et blev ikke overført korrekt } else { $query = "SELECT email FROM $tbl_name WHERE id=$g_id"; $row = mysql_fetch_assoc($query); $email = $row['email'];
if( mail_utf8($email, 'Bordbestilling', 'Besked til kunden ...', 'no-reply@email.dk')) { echo 'Ordren er godkendt'; //Mailen blev sendt } else { echo 'Der skete en fejl'; } }
?>
Ovenstående kode skulle gerne fungerer. Det er fordi, du har været inde og rode i funktionen. Du havde selv ændret variablerne $to, $subject og $message i starten af funktionen. Og da $email på daværende tidspunkt ikke var en global variabel, havde den ingen mail, at sende til. Det er fjernet i ovenstående kode, så det skulle gerne kunne klare det for dig.
Lige en anden ting.. Jeg kan se, du er ny, og der er noget, du har misforstået i dette forum. "Skriv et svar" betyder ikke, at du svarer på mailen. Det betyder derimod, at du skriver et svar, som kan modtage pointene. I stedet skal du blot skrive en kommentar. Du kan se, at du i checkboksene lige ovenfor kan vælge mellem "Kommentar (til forslag)" og "Svar (til løsninger og pointgivning)". :-)
Det takker jeg mange gange for (: - og det vil jeg lige huske til fremtidigt brug :D
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.