12. juli 2005 - 11:51Der er
19 kommentarer og 1 løsning
Sende mail med dynamisk indhold
Hej,
jeg har en shop, som jeg er igang med at udbygge. Det nye er, at der kan foretages konfigureration af de enkelte varer. Disse konfigurationer ligger i en anden tabel end selve varekurven.
Når en ordre afgives, modtager jeg automatisk en mail, men jeg kan ikke finde ud af at få disse ekstra linier med (konfigurationerne).
Håber der er nogle af jer, der kan give mig et tip til hvordan dette klares...
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jow jow - men det er ikke det der er problemet :-) Jeg modtager jo allerede idag en mail, når der er afgivet nye ordrer. Problemet består i at få de ekstra/nye konfigurationer ind i mailen, så de kommer sammen med den vare, de hører til.
Antal - Vare - Pris - Pris i alt 1 - Computer - 5.995,00 - 5.995,00 1 - 256 MB RAM - 295,00 - 295,00 <- dette er den ekstra linie Vareværdi i alt.... bla bla bla
Jeg plejer at lave en eller andet form for syntaks for hvilke værdier der skal indsættes i teksten, og derefter sende teksten igennem en (mere eller mindre langhåret) søg-og-erstat funktion. Et mere statisk system kan nøjes med at hardcode en tekst med indsatte variable. F.eks. (pseudo kode)
Cool nok. Jeg har tit prøvet at få det der med arrays og foreach til at spille, og har altid givet op. Det er altså bare noget, som jeg har svært ved at fatte - talt lige ud af posen :-)
Kan du uddybe det lidt mere?
hentordrer() og hent_konfigurationer() er begge almindelige udtræk af databasen, som er defineret i en funktion højere oppe i koden, ikke?
Hvis du har to eller flere arrays der skal lege med hinanden arrays, er humlen egentlig bare at bruge de samme værdier som nøgler. Ligesom i databasen når en tabel refererer til en anden.
foreach($array1 as $a) { // Denne løkke vil give $a = 1, 2 eller 3 i hver deres iteration print($array2[$a]); // Dvs. her står egentlig $array2[1], $array2[2] eller $array[3]; }
Det er bare et spørgsmål om at opbygge det ene array så det indeholder nøgler til det andet array. Prøv at lege lidt med det - sammen med en hulens masse echo() kald ;)
Wuggawugga - jeg har brug for din hjælp endnu engang.... Point kan jeg tildele i et andet spørgsmål, men jeg går ud fra at du abonnerer på dette spm.....?
Systemet til registrering af de valgte konfigurationer skal udvides - mailen, som du hjalp mig med forbliver uændret.
DET NYE ER: Nogle konfigurationsgrupper SKAL udfyldes, andre ikke. Derudover skal der på nogle af dem angives antal, på andre ikke. Det er formodentlig noget med nogle arrays man skal have fat i, men jeg kan vitterligt bare ikke forstå det - trods din forklaring. Har snart brugt to dage på det... Kan du hjælpen? Poster min kode nedenfor:
<? session_start(); if(isset($PHPSESSID)) { // Tjekker om kriterier er opfyldt - definerer de forskellige muligheder. if(isset($_POST['bestil_vare']) AND ($_POST['antal'] > '0')) { // Tjekker om der er konfigurator if($_SESSION[konfigurator] == '1') { // Tjekker hvilke konfiguratorgrupper, der hænger sammen med varen - om der overhovedet er nogle. include("admin/connect.php"); $q_konftjek = mysql_query("SELECT * FROM konf_vis_siden INNER JOIN konfiguratorgrupper ON konf_vis_siden.id_kge = konfiguratorgrupper.konf_id WHERE konf_vis_siden.vareid = '$_POST[vareid]' AND konfiguratorgrupper.aktiv = '1' AND sprog = '$_POST[sprog]'"); $kt_rows = mysql_num_rows($q_konftjek); if($kt_rows > '0') { while($konftjek = mysql_fetch_assoc($q_konftjek)) { // Tjekker om de eventuelle obligatoriske felter er sat. if($konftjek[obligatorisk] == '1') { // Tjekker om der skal indtastes et antal, for at registrere konfemnet eller ej. if(($konftjek[antal_yn] == '1') AND ($_POST[konf_antal_.$konftjek[id_kge]] == '')) { header("Location: $_SERVER[HTTP_REFERER]&ikurv=0"); } else { header("Location: $_SERVER[HTTP_REFERER]&ikurv=1"); $_SESSION[insert] = 1; // Sat } } // Hvis ikke obligatorisk || Tjekker om der skal indtastes et antal for at registrere emnet eller ej if(($konftjek[antal_yn] == '1') AND ($_POST[konf_antal_.$konftjek[id_kge]] == '')) { header("Location: $_SERVER[HTTP_REFERER]&ikurv=0"); } else { header("Location: $_SERVER[HTTP_REFERER]&ikurv=1"); $_SESSION[insert] = 1; // Sat } } } } // Hvis ingen konfigurator - kun krav til antal, som er tjekket i toppen else { header("Location: $_SERVER[HTTP_REFERER]&ikurv=1"); $_SESSION[insert] = 1; } }
// Hvis kriterierne overfor at overholdt, og $insert = 1 så: if($_SESSION[insert] == 1) { // Forbindelse til db etableres include("admin/connect.php"); $fantal = str_replace(',','.',$_POST[antal]); $fpris = str_replace(',','.',$_POST[pris]); $ffragt = str_replace(',','.',$_POST[fragt]); // REGISTRERER VAREN I KURV mysql_query("INSERT INTO varekurv (sessionid,vareid,antal,pris,dato,fragt) VALUES ('$PHPSESSID', '$_POST[vareid]', '$fantal', '$fpris', NOW(), '$ffragt')");
// Henter mulige konfigurationsgrupper, og tjekker om de er sat if($_SESSION[konfigurator] == '1') { $q_tjek = mysql_query("SELECT * FROM konf_vis_siden WHERE vareid = '$_POST[vareid]'"); $antal_raekker = mysql_num_rows($q_tjek); if($antal_raekker > '0') { // Henter id'et i varekurven, så det kan registreres i varekurv_konf $q_kurv_id = mysql_query("SELECT * FROM varekurv WHERE sessionid = '$PHPSESSID' AND vareid = '$_POST[vareid]' ORDER BY id DESC LIMIT 1"); $kurv_id = mysql_fetch_assoc($q_kurv_id); while($tjek = mysql_fetch_assoc($q_tjek)) { // Tjekker om der er registreret indhold til den enkelte konfgruppe if(($_POST[$tjek[id_kge]] <> '') AND ($_POST[antal] > '0')) { $konf_id = $tjek[id_kge]; list($emneid, $pris) = split('[/.-]', $_POST[$tjek[id_kge]]); $fpris = str_replace(',','.',$pris); $emneantal2 = $_POST[konf_antal_.$tjek[id_kge]]; $emneantal = str_replace(',','.',$emneantal2); mysql_query("INSERT INTO varekurv_konf (id_varekurv,konfgruppeid,emneid,antal,pris,sessionid) VALUES ('$kurv_id[id]', '$konf_id', '$emneid', '$emneantal', '$fpris', '$PHPSESSID')"); } } } } unset($_SESSION[insert]); } else { header("Location: $_SERVER[HTTP_REFERER]&ikurv=0"); } } else { header("Location: index.php"); } ?>
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.