Avatar billede TiHs Nybegynder
16. maj 2007 - 08:02 Der er 15 kommentarer og
1 løsning

submit mail med utræk fra tabel

Hej eksperter.

Jeg kører en session indkøbskurv ...

Når nu man vil acceptere indkøbskurven vil jeg samtidig
sende en mail med bestillingen. Det jeg mangler i denne
mail er på en aller anden måde at få udtræk fra
min tabel, eller fra min session så informationerne
kommer med i mailen til forretningen. Det at lave en mail
hvor køber indtaster adresse osv. går fint, men jeg ved ikke
lige hvordan jeg får smidt kurven med i selve beskeden...

nogen der kan hjælpe ??
Avatar billede jakobdo Ekspert
16. maj 2007 - 08:12 #1
Kan vi se koden, hvor du putter ting i din kurv?
Avatar billede phliplip Nybegynder
16. maj 2007 - 08:18 #2
Nu ved jeg ikke lige hvordan din SESSION variable ser ud..

Men jeg kunne forestille mig at det ville være noget i denne stil;

foreach($_SESSION['dinkurv'] as $varenr => $antal) {
  $ordre .= $antal . ' x ' . $varenr . "\n\r";
}

$besked = "Hej bla bla,\n\r\n\rDer er kommet en ny ordre\n\r\n\r";
$besked .= $ordre;

mail() // Den kender du
Avatar billede TiHs Nybegynder
16. maj 2007 - 09:25 #3
Yes yes ... kommer her:

Dette er en af mine sider hvorfra du kan vælge en vare:

**jeans.php**
<?php
// Include MySQL class
require_once('cart/inc/mysql.class.php');
// Include database connection
require_once('cart/inc/global.inc.php');
// Include functions
require_once('cart/inc/functions.inc.php');
// Start the session
session_start();
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>LUXundPUNK - Jeans</title>

<link rel="stylesheet" type="text/css" href="mystyle2.css" />
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
<![endif]-->

</head>

<body>
<div id="home2">
<div id="lpshop">
<p class="style11">Jeans <form action="index.php" method="submit"><button type="submit">Tilbage til forretning</button></form></p>
</div>
<div id="kurv"><?php echo writeShoppingCart(); ?></div><br>
<div id="del">
<?php
$sql = 'SELECT * FROM toej2 WHERE del = "Jeans" AND lager > 0 ORDER BY id';
$result = $db->query($sql);
while ($row = $result->fetch()) {
    $output[] = '<table border=1 cellpadding=1 cellspacing=0 borderColor=black>';
    $output[] = '<tr>';
    $output[] = '<td width=50px><p align="center" class="style12">'.$row['del'].'</p></td>';
    $output[] = '<td width=100px><p class="style12">Mærke:<br>'.$row['maerke'].'</p></td>';
    $output[] = '<td width=100px><p class="style12">Model:<br>'.$row['model'].'</p></td>';
    $output[] = '<td width=70px><p class="style12">Størrelse:<br>'.$row['str'].'</p></td>';
    $output[] = '<td width=40px><img src="../pics/thumb'.$row['pic'].'.jpg"></td>';
    $output[] = '<td width=90px><p class="style12">Kr: '.$row['pris'] = number_format($row['pris'], 2, ",", ".").'</p></td>';
    $output[] = '<td><a href="cart/cart.php?action=add&id='.$row['id'].'"><img src="../indkoebskurv.gif" border="0"></a></td>';
    $output[] = '</tr>';
    $output[] = '</table><br>';
}
echo join('',$output);
?>
</div>
</div>
</body>
</html>
****

Den kalder så denne her side som smider det i kurven:

**cart.php**

<?php
// Include MySQL class
require_once('inc/mysql.class.php');
// Include database connection
require_once('inc/global.inc.php');
// Include functions
require_once('inc/functions.inc.php');
// Start the session
session_start();
// Process actions
$cart = $_SESSION['cart'];
$action = $_GET['action'];
switch ($action) {
    case 'add':
    if(is_numeric($_GET['id'])) //Er ID et nummer?
    {
    $id = intval($_GET['id']);
    $qty = $_GET['qty'];
        $query = mysql_query("SELECT id FROM toej2 WHERE lager > 0 AND id = ".$id." LIMIT 1");
        if(mysql_num_rows($query)==0) //Fandt vi varen og der er ingen på lager?
        {
    header( "location: ../minusvare.php" );
exit;
}else{
            if ($cart) {
                $cart .= ','.$_GET['id'];
            } else {
                $cart = $_GET['id'];
            }
        }
    }

        break;
    case 'delete':
    if(is_numeric($_GET['id'])) //Er ID et nummer?
    {
        $id = intval($_GET['id']);
        $qty = $_GET['qty'];
        $query = mysql_query("SELECT id FROM toej2 WHERE id = ".$id." LIMIT 1");
        if(mysql_num_rows($query)==1)
        {
        if ($cart) {
            $items = explode(',',$cart);
            $newcart = '';
            foreach ($items as $item) {
                if ($_GET['id'] != $item) {
                    if ($newcart != '') {
                        $newcart .= ','.$item;
                    } else {
                        $newcart = $item;
                    }
                }
            }
            $cart = $newcart;
        }
    }
}
        break;
}
$_SESSION['cart'] = $cart;
header("location:" . $_SERVER['HTTP_REFERER']);
?>
****

Og denne her side viser kurven:

**indkobskurv.php**

<?php
// Include MySQL class
require_once('cart/inc/mysql.class.php');
// Include database connection
require_once('cart/inc/global.inc.php');
// Include functions
require_once('cart/inc/functions.inc.php');
// Start the session
session_start();
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>LUXundPUNK - Din indkøbskurv</title>

<link rel="stylesheet" type="text/css" href="mystyle2.css" />
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
<![endif]-->

</head>

<body>
<div id="home2">
<div id="lpshop">
<p class="style11">Indkøbskurv</p>
</div>
<div id="del">
<?php
echo showCart();
?></div>
</div>
</body>
</html>

Her er så funktionerne til kurven:

**functions.inc.php**

<?php
function writeShoppingCart() {
    $cart = $_SESSION['cart'];
    if (!$cart) {
        return '<p class="style12"><img src="../../indkoebskurv.gif"> er tom</p>';
    } else {
        // Parse the cart session variable
        $items = explode(',',$cart);
        $s = (count($items) > 1) ? 's':'';
        return '<p class="style12">'.count($items).' ting i <a href="indkobskurv.php"><img src="../../indkoebskurv.gif" border="0"></a></p>';
    }
}

function showCart() {
    global $db;
    $cart = $_SESSION['cart'];
    if ($cart) {
        $items = explode(',',$cart);
        $contents = array();
        foreach ($items as $item) {
            $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
        }
        $output[] = '<form action="cart/cart.php?action=update" method="post" id="cart">';
        $output[] = '<table border=1 cellspacing=0 borderColor=black>';
        foreach ($contents as $id=>$qty) {
            $sql = 'SELECT * FROM toej2 WHERE id = '.$id;
            $result = $db->query($sql);
            $row = $result->fetch();
            extract($row);
            $output[] = '<tr>';
            $output[] = '<td><a href="cart/cart.php?action=delete&id='.$id.'&qty='.$qty.'" class="r">
                        <img src="../../indkoebskurv2.gif" border="0"></a></td>';
            $output[] = '<td width=50px><p align="center" class="style12">'.$del.'</p></td>';
            $output[] = '<td width=100px><p class="style12">Mærke:<br> '.$maerke.'</p></td>';
            $output[] = '<td width=100px><p class="style12">Model:<br> '.$model.'</p></td>';
            $output[] = '<td width=70px><p class="style12">Størrelse:<br> '.$str.'</p></td>';
            $output[] = '<td width=90px><p class="style12">Kr '.number_format($pris, 2, ",", ".").'</p></td>';
            $output[] = '<td width=10px><input type="text" name="qty'.$id.'" value="'.$qty.'" size="1" maxlength="1" /></td>';
            $output[] = '<td width=110px><p class="style12">Kr '.number_format($pris * $qty, 2, ",", ".").'</p></td>';
            $total += $pris * $qty;
            $output[] = '</tr>';
        }
        $output[] = '</table>';
        $output[] = '<br><p class="style12">I alt: <strong>Kr: '.number_format($total, 2, ",", ".").'</strong></p>';
        $output[] = '<div><button type="submit">Opdater indkøbskurv</button></div>';
        $output[] = '</form>';
        $output[] = '<FORM><INPUT TYPE="button" VALUE="Tilbage" onClick="history.go(-1);return true;"></FORM>';
    } else {
        $output[] = '<p class="style12">Indkøbskurven er tom.</p><br><FORM><INPUT TYPE="button" VALUE="Tilbage" onClick="history.go(-1);return true;"></FORM>';
    }
    return join('',$output);
}
?>

****

Siden hvor du skriver adresse osv...:

**sluthandel.php**

<?php
// Include MySQL class
require_once('cart/inc/mysql.class.php');
// Include database connection
require_once('cart/inc/global.inc.php');
// Include functions
require_once('cart/inc/functions.inc.php');
// Start the session
session_start();
?>
<?php
echo writeShoppingCart();
?>

<?php
$id = intval($_GET['id']);
$id = intval($_GET['qty']);
$output[] = '<form action="submitorder.php" method="post">';
        $output[] = '<table border=1 cellspacing=0 borderColor=black>';
            $output[] = '<tr>';
            $output[] = '<td>Fornavn:<br>
                <input type="text" name="fornavn" style="width: 200px;"><br></td>';
            $output[] = '</tr>';
            $output[] = '<tr>';
            $output[] = '<td>Efternavn:<br>
                <input type="text" name="efternavn" style="width: 200px;"><br></td>';
            $output[] = '</tr>';
            $output[] = '<tr>';
            $output[] = '<td>Vejnavn og nr evt sal osv..:<br>
                <input type="text" name="vejnavn" style="width: 300px;"><br></td>';
            $output[] = '</tr>';
            $output[] = '<tr>';
            $output[] = '<td>Postnr og by:<br>
                <input type="text" name="postbynavn" style="width: 300px;"><br></td>';
            $output[] = '<tr>';
            $output[] = '</tr>';
            $output[] = '<td>Telefonnr:<br>
                <input type="text" name="telenavn" style="width: 200px;"><br></td>';
            $output[] = '</tr>';
            $output[] = '<tr>';
            $output[] = '<td>E-mail:<br>
                <input type="text" name="email" style="width: 300px;"><br></td>';
            $output[] = '</tr>';
            $output[] = '<tr>';
            $output[] = '<td><input type="submit" value="Betal/send ordre"></td>';
            $output[] = '</tr>';
        $output[] = '</table>';
        $output[] = '</form>';

echo join('',$output);

****

Og endelig min submit der skulle sende mailen:

**submitorder.php**

<?php
// Include MySQL class
require_once('cart/inc/mysql.class.php');
// Include database connection
require_once('cart/inc/global.inc.php');
// Include functions
require_once('cart/inc/functions.inc.php');
// Start the session
session_start();
// Process actions


if (isset($_POST['fornavn']) && isset($_POST['efternavn']) && isset($_POST['vejnavn'])
&& isset($_POST['postbynavn']) && isset($_POST['telenavn']) && isset($_POST['email']))



{
    if (empty($_POST['fornavn']))
    {
        echo "Du skal indtaste dit fornavn."; 
    }
    elseif (empty($_POST['efternavn']))
    {
        echo "Du skal indtaste dit efternavn.";
    }
    elseif (empty($_POST['vejnavn']))
    {
    echo "Du skal indtaste vejnavn og nr.";
    }
    elseif (empty($_POST['postbynavn']))
    {
    echo "Du skal indtaste postnr og by.";
    }
    elseif (empty($_POST['telenavn']))
    {
    echo "Du skal indtaste telefonnummer.";
    }
    elseif (empty($_POST['email']))
    {
    echo "Du skal indtaste din e-mail.";
    }
    else   
    {
        $modtager = "min@timhs.dk";
        $emne = "Bestilling fra hjemmesiden";
        $besked = "Bestille fra hjemmesiden: \n 
                            Fornavn: " . $_POST['fornavn']. "\n
                Efternavn: " . $_POST['efternavn']. "\n   
                Vejnavn: " . $_POST['vejnavn']. "\n
                Postnr & by: " . $_POST['postbynavn']. "\n
                E-mail: " . $_POST['email'];
   
           
        $header = "from:afs@afsender.dk";

        mail($modtager, $emne, $besked, $header);
        echo "Bestilling modtaget";
    }
}
?>


<Html>
<Head>
</Head>
<Body>
<FORM METHOD="LINK" ACTION="../index.php"><INPUT TYPE="submit" VALUE="OK"></FORM>
</Body>
</Html>

***

Så jeg regnede med at det var et eller andet i submit order jeg skulle gøre ?
Avatar billede jakobdo Ekspert
16. maj 2007 - 09:36 #4
Du burde faktisk kunne genbruge meget af koden fra denne funktion:

function emailCart()
{
    global $db;
    $cart = $_SESSION['cart'];
    if ($cart)
    {
        $items = explode(',',$cart);
        $contents = array();
        foreach ($items as $item)
        {
            $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
        }
       
        echo '<pre>';
        print_r($contents);
        echo '</pre>';
    }
}

Prøv at skyd den af, så skulle den gerne vise indholdet.
Så skal det bare sættes pænt op og smides med i emailen.
Avatar billede mrgumble Nybegynder
16. maj 2007 - 09:41 #5
Det korte af det lange er, at når du laver en mail fra php, så skal dens indhold dannes på præcis samme måde, som hvis du ville vise oplysningerne på hjemmesiden.
Så når du har problemer med at danne din e-mail, så prøv at starte med at vise kurven på hjemmesiden. Så kommer resten af sig selv.
Avatar billede TiHs Nybegynder
16. maj 2007 - 10:11 #6
Jeg er næsten med.
Jamen når jeg sender mailen ser min submitorder jo sådan her ud:

if (isset($_POST['fornavn']) && isset($_POST['efternavn']) && isset($_POST['vejnavn'])
&& isset($_POST['postbynavn']) && isset($_POST['telenavn']) && isset($_POST['email']))



{
    if (empty($_POST['fornavn']))
    {
        echo "Du skal indtaste dit fornavn."; 
    }
    elseif (empty($_POST['efternavn']))
    {
        echo "Du skal indtaste dit efternavn.";
    }
    elseif (empty($_POST['vejnavn']))
    {
    echo "Du skal indtaste vejnavn og nr.";
    }
    elseif (empty($_POST['postbynavn']))
    {
    echo "Du skal indtaste postnr og by.";
    }
    elseif (empty($_POST['telenavn']))
    {
    echo "Du skal indtaste telefonnummer.";
    }
    elseif (empty($_POST['email']))
    {
    echo "Du skal indtaste din e-mail.";
    }
    else   
    {
        $modtager = "min@timhs.dk";
        $emne = "Bestilling fra hjemmesiden";
        $besked = "Bestille fra hjemmesiden: \n 
                            Fornavn: " . $_POST['fornavn']. "\n
                Efternavn: " . $_POST['efternavn']. "\n   
                Vejnavn: " . $_POST['vejnavn']. "\n
                Postnr & by: " . $_POST['postbynavn']. "\n
                E-mail: " . $_POST['email'];
   
           
        $header = "from:afs@afsender.dk";

        mail($modtager, $emne, $besked, $header);
        echo "Bestilling modtaget";
    }
}

Så hvor smider jeg helt præcist denne kode ind i e-mail ?

function emailCart()
{
    global $db;
    $cart = $_SESSION['cart'];
    if ($cart)
    {
        $items = explode(',',$cart);
        $contents = array();
        foreach ($items as $item)
        {
            $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
        }
       
        echo '<pre>';
        print_r($contents);
        echo '</pre>';
    }
}


Havde tænkt lidt på jeg ville have det vist her et sted:

$modtager = "min@timhs.dk";
        $emne = "Bestilling fra hjemmesiden";
        $besked = "Bestille fra hjemmesiden: \n 
                            Fornavn: " . $_POST['fornavn']. "\n
                Efternavn: " . $_POST['efternavn']. "\n   
                Vejnavn: " . $_POST['vejnavn']. "\n
                Postnr & by: " . $_POST['postbynavn']. "\n
                E-mail: " . $_POST['email'];

          /**  Dine varer: ... og så koden der printer kurven i mailens besked **/

Kan jeg ikke det ?
Avatar billede TiHs Nybegynder
16. maj 2007 - 10:14 #7
Dette her viser ikke noget på en alm. side:

<?php
// Include MySQL class
require_once('cart/inc/mysql.class.php');
// Include database connection
require_once('cart/inc/global.inc.php');
// Include functions
require_once('cart/inc/functions.inc.php');
// Start the session
session_start();
// Process actions


function emailCart()
{
    global $db;
    $cart = $_SESSION['cart'];
    if ($cart)
    {
        $items = explode(',',$cart);
        $contents = array();
        foreach ($items as $item)
        {
            $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
        }
       
        echo '<pre>';
        print_r($contents);
        echo '</pre>';
    }
}


?>
Avatar billede jakobdo Ekspert
16. maj 2007 - 10:21 #8
Og er der varer i kurven?
Avatar billede TiHs Nybegynder
16. maj 2007 - 10:26 #9
yes ... valgte to varer
Avatar billede TiHs Nybegynder
16. maj 2007 - 13:28 #10
i submitorder.php kan jeg fint vise kurven med:

<?php
echo showCart():
?>

Men hvordan smider jeg det så ind i selve mailen der sendes:

<?php
// Include MySQL class
require_once('cart/inc/mysql.class.php');
// Include database connection
require_once('cart/inc/global.inc.php');
// Include functions
require_once('cart/inc/functions.inc.php');
// Start the session
session_start();
// Process actions
?>

<?php

if (isset($_POST['fornavn']) && isset($_POST['efternavn']) && isset($_POST['vejnavn'])
&& isset($_POST['postbynavn']) && isset($_POST['telenavn']) && isset($_POST['email']))



{
    if (empty($_POST['fornavn']))
    {
        echo "Du skal indtaste dit fornavn."; 
    }
    elseif (empty($_POST['efternavn']))
    {
        echo "Du skal indtaste dit efternavn.";
    }
    elseif (empty($_POST['vejnavn']))
    {
    echo "Du skal indtaste vejnavn og nr.";
    }
    elseif (empty($_POST['postbynavn']))
    {
    echo "Du skal indtaste postnr og by.";
    }
    elseif (empty($_POST['telenavn']))
    {
    echo "Du skal indtaste telefonnummer.";
    }
    elseif (empty($_POST['email']))
    {
    echo "Du skal indtaste din e-mail.";
    }
    else   
    {
    $id = intval($_GET['id']);
        $modtager = "min@timhs.dk";
        $emne = "Bestilling fra hjemmesiden";
        $besked = "Bestilling fra hjemmesiden: \n 
                            Fornavn: " . $_POST['fornavn']. "\n
                Efternavn: " . $_POST['efternavn']. "\n   
                Vejnavn: " . $_POST['vejnavn']. "\n
                Postnr & by: " . $_POST['postbynavn']. "\n
                Telefonnr: " . $_POST['telenavn']. "\n
                E-mail: " . $_POST['email'];

                /* Her vil jeg gerne have indkøbskurven*/

           
        $header = "from:afs@afsender.dk";

        mail($modtager, $emne, $besked, $header);
        echo "Bestilling modtaget";
    }
}
?>
Avatar billede jakobdo Ekspert
17. maj 2007 - 18:32 #11
Hvad om du lavede:

$email_besked = showCart();
og så sender $email_besked med i emailen.
Avatar billede TiHs Nybegynder
18. maj 2007 - 07:09 #12
God ide ... og det virker.
Alstå så længe jeg stadig kun sender 4 ting i mailen. Men jeg
behøver jo heller ikke at sende $header med, for det er jo bare
postmaster@siden.dk der bliver sendt så ......

men det blev til:

{



        $modtager = "min@timhs.dk";
        $emne = "Bestilling fra hjemmesiden";
        $besked = "Bestilling fra hjemmesiden: \n 
                            Fornavn: " . $_POST['fornavn']. "\n
                Efternavn: " . $_POST['efternavn']. "\n   
                Vejnavn: " . $_POST['vejnavn']. "\n
                Postnr & by: " . $_POST['postbynavn']. "\n
                Telefonnr: " . $_POST['telenavn']. "\n
                E-mail: " . $_POST['email'];
               

    $email_besked = showCartm();

   

           
        $header = "from:afs@afsender.dk";

        mail($modtager, $emne, $besked, $email_besked);
        echo "Bestilling modtaget";



    }

}

tak for hjælpen....
Avatar billede jakobdo Ekspert
18. maj 2007 - 08:57 #13
Du får et svar!
Avatar billede jakobdo Ekspert
18. maj 2007 - 10:38 #14
Takker for point.
Avatar billede TiHs Nybegynder
18. maj 2007 - 10:44 #15
Var så lidt :o))

... kæmper videre hehe ... når det ene er løst så er der andet
der ikke virker :o/ ..... men lærer hen ad vejen
Avatar billede jakobdo Ekspert
18. maj 2007 - 11:11 #16
:o)
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