Avatar billede nicker Nybegynder
04. juni 2007 - 00:24 Der er 12 kommentarer og
1 løsning

Email og array

Hej

Jeg sender en mail ud med følgende kode:

mail("$_GET[authmail]", "Angående $_GET[orderid] fra nicker.dk",
"Hej $_GET[navn] $_GET[efternavn]<br><br>
Tak fordi du handlede hos Shoppen.<br><br>
Faktura:<br>
<br><br>
Vi vil løbende sende dig gode tilbud.
",
"From: Shoppen <kontakt@shop.dk]>\nContent-type: text/html; charset=iso-8859-1");

Fungerer fint, men under faktura skal den printe de forskellige vare fra den her kode:

$query2 = mysql_query("SELECT * FROM ordre WHERE session='$session'");
        while ($row1 = mysql_fetch_array($query2)) {

            $sql = 'SELECT * FROM shop_varer WHERE id = '.$row1[vare];
            $result = $db->query($sql);
            $row = $result->fetch();
            extract($row);
            print $vare_id; print " ($row1[qty])"; print "<br>"; }



Hvordan får man vist listen af varen i den mail man sender ud?
Avatar billede mcardle Nybegynder
04. juni 2007 - 07:43 #1
Det virker lidt mærkeligt din kode. Har du forstand på php? Du bruger OOP til noget og ikke til det andet.

Jeg havde nok gjort sådan her:

$session = $_SESSION["user"];
$query2 = mysql_query("SELECT * FROM ordre WHERE session='$session'");
while ($row1 = mysql_fetch_array($query2)) {
  $vare = $row1["vare"];
  $sql = mysql_query("SELECT * FROM shop_varer WHERE id='$vare'");
  $product = mysql_fetch_array($sql);
  extract($product);
  echo $vare_id . ' ' . $row1["qty"] . '<br />';
}
Avatar billede jakobdo Ekspert
04. juni 2007 - 08:07 #2
mail("$_GET[authmail]", "Angående $_GET[orderid] fra nicker.dk",
"Hej $_GET[navn] $_GET[efternavn]<br><br>
Tak fordi du handlede hos Shoppen.<br><br>
Faktura:<br>
<br><br>
Vi vil løbende sende dig gode tilbud.
",
"From: Shoppen <kontakt@shop.dk]>\nContent-type: text/html; charset=iso-8859-1");

$varer = array();

$query2 = mysql_query("SELECT * FROM ordre WHERE session='$session'");
while ($row1 = mysql_fetch_array($query2))
{
    $sql = 'SELECT * FROM shop_varer WHERE id = '.$row1[vare];
    $result = $db->query($sql);
    $row = $result->fetch();
    extract($row);
    $varer[] = $vare_id . " - (" . $row1[qty] . ")";
}

og så smider du denne kode ind i emailen:

explode("<br>\r\n",$varer);

f.eks.:

$subject = 'Angående '.$_GET['orderid'] . ' fra nicker.dk";

$message =  "Hej $_GET[navn] $_GET[efternavn]<br><br>";
$message .= "Tak fordi du handlede hos Shoppen.<br><br>";
$message .= "Faktura:<br>";
$message .= "<br>";
$message .= explode("<br>\r\n",$varer);
$message .= "<br>";
$message .= "Vi vil løbende sende dig gode tilbud.";

mail($_GET['authmail'],$subject,$message,"From: Shoppen <kontakt@shop.dk]>\nContent-type: text/html; charset=iso-8859-1");
Avatar billede nicker Nybegynder
04. juni 2007 - 14:28 #3
Undskyld mcardle, men jeg oprettede ikke dette indlæg for at finde ud af om jeg har forstand på php!

Tak jakobdo, men jeg kan ikke helt få det til at fungere. Den udskriver bare "Array" og ikke selve det der er i arrayet. Jeg har testet queryen, og den går igennem fint. Ved du hvad problemet er?
Avatar billede jakobdo Ekspert
04. juni 2007 - 14:45 #4
Hvad hvis du efter din query laver:

echo explode("<br>\r\n",$varer);

og selvfølgelig husker min lille ændring:
$query2 = mysql_query("SELECT * FROM ordre WHERE session='$session'");
while ($row1 = mysql_fetch_array($query2))
{
    $sql = 'SELECT * FROM shop_varer WHERE id = '.$row1[vare];
    $result = $db->query($sql);
    $row = $result->fetch();
    extract($row);
    $varer[] = $vare_id . " - (" . $row1[qty] . ")";
}
Avatar billede nicker Nybegynder
04. juni 2007 - 14:59 #5
Stadig intet. Du kan prøve at se det her: http://www.nicker.dk/webshop/mailing.php

har indsat en konstant session hvor der ligger 2 varer i.

kode:

$query2 = mysql_query("SELECT * FROM ordre WHERE session='09dc42ad88e95c0b756e909f2e0ae4f1
'");
while ($row1 = mysql_fetch_array($query2))
{
$sql = 'SELECT * FROM shop_varer WHERE id = '.$row1[vare];
$result = $db->query($sql);
$row = $result->fetch();
extract($row);
$varer[] = $vare_id . " - (" . $row1[qty] . ")";
}

echo explode("<br>\r\n",$varer);

$subject = "Angående ".$_GET['orderid'] . " fra nicker.dk";

$message = "Hej $_GET[navn] $_GET[efternavn]<br><br>";
$message .= "Tak fordi du handlede hos Shoppen.<br><br>";
$message .= "Faktura:<br>";
$message .= "<br>";
$message .= explode("<br>\r\n",$varer);
$message .= "<br><br>";
$message .= "Vi vil løbende sende dig gode tilbud.";

print $message;
Avatar billede jakobdo Ekspert
04. juni 2007 - 15:05 #6
Pinligt: Jeg har fået byttet rundt på explode og implode.
Ret lige: $message .= explode("<br>\r\n",$varer);
til: $message .= implode("<br>\r\n",$varer);
Avatar billede nicker Nybegynder
04. juni 2007 - 15:11 #7
Yea så virker det! Mange tak :) (og et svar fra dig)

Hvis du har tid - hvad er så forskellen mellem explode/implode?
Avatar billede michael_stim Ekspert
04. juni 2007 - 15:16 #8
www.php.net/implode
www.php.net/explode

Den ene pakker (i et array)
Den anden pakker ud
Avatar billede jakobdo Ekspert
04. juni 2007 - 15:17 #9
Svar!

explode:
$var = 'noget andet og noget helt tredje';
$array = explode(' ',$var);
//$array indeholder nu et array med: $array = array('noget','andet','og','noget','helt','tredje');

implode:
$array = array('noget','andet','og','noget','helt','tredje');
$var = implode(' ',$array);
//$var indeholder nu en streng med: 'noget andet og noget helt tredje';
Avatar billede nicker Nybegynder
04. juni 2007 - 15:20 #10
Ahh ok. Tak ;)
Avatar billede jakobdo Ekspert
04. juni 2007 - 15:22 #11
Takker for point.
Avatar billede mcardle Nybegynder
04. juni 2007 - 16:27 #12
Det var nu ikke negativ kritik, Nicker. Det var bare, hvis du ikke vidste hvad du lavede og måske bare taget koden et sted fra, ville jeg bare fortælle dig lidt om hvordan den virkede. ;o)

Undskyld, hvis du følte dig truffet.

Hilsen mcardle
Avatar billede nicker Nybegynder
04. juni 2007 - 19:59 #13
Nåå,ok.Det er i orden så ;) Det virkede bare som om du prøvede at være overlegen. Men tak fordi prøvede at hjælpe så.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester