Avatar billede andhansen Nybegynder
24. april 2003 - 13:55 Der er 46 kommentarer og
1 løsning

MySQL -> email?

jeg har lavet et webshop system via denne guide: http://www.devarticles.com/art/1/132

I guiden laver man en side hvor man kan bestille, og en side hvor det man har bestilt er (indkøbskurven).
jeg har lavet en test her: http://ftpsite.h4f.dk/test/products.php

Hvis I prøver at bestille noget, kommer i hen til indkøbskurven. Mit problem er at jeg ikke kan få sendt den liste med det der er bestilt til min email.
Har I nogen ide om hvordan jeg gør?
Avatar billede Slettet bruger
24. april 2003 - 14:00 #1
skulle ikke være så svært hvis du bruger funktionen mail()....
og så generer indholdet via. et mysql kald og en løkke!?
Avatar billede andhansen Nybegynder
24. april 2003 - 14:04 #2
hmm, det lyder meget fornuftigt, men jeg ved ikke lige hvordan man gør... vil du hjælpe mig med at lave det?
Avatar billede Slettet bruger
24. april 2003 - 14:11 #3
hmmm... nu ved jeg jo ikke lige hvordan dine tabeller er sat sammen!!!
Men noget i den her stil:
--------------------------------
$sql = "select * from varer where buyer=$buyer_id";
$result = mysql_query($sql);
$content = "Et eller andet er bestilt:\n";
while($row=mysql_fetch_array($result))
{
    $content .= $row[antal]." ".$row[navn]." ".$row[pris]."\n";
}
mail($dinmail,"titel", $content);

og din server skal have forbindelse til en smtp-server!

Du kan også finde lidt mere om mail() her:
http://www.reginscorner.dk/mails.php (filvedhæftning, BCC, CC og HTML-mail)
eller på http://www.php.net/manual/en/function.mail.php
Avatar billede andhansen Nybegynder
24. april 2003 - 14:17 #4
her er noget info du måske kan bruge:
    $dbServer = "localhost";
    $dbUser = "ftpsite";
    $dbPass = "************";
    $dbName = "ftpsite";

Når man trykker "add item" tilføjer den itemId til et table kaldet cart, hvor der er følgende rækker:
cartId  int(3)
cookieId  varchar(50)
itemId  int(11)
qty  int(11)

Jeg tror at den række vi skal bruge er itemId, for der står der Id'et for den vare der er tilføjet.
Avatar billede Slettet bruger
24. april 2003 - 14:23 #5
Jeg går udfra at du har connected til databasen i forvejen....
-------------------------------------
$sql = "select * from cart where cookieId='".$_COOKIE[cookieId]."'";
$result = mysql_query($sql);
$content = "Et eller andet er bestilt:\n";
while($row=mysql_fetch_array($result))
{
    $content .= $row[qty]." stk. af VareId".$row[itemId]."\n";
}
mail($dinmail,"titel", $content);

Du har nok også en række som hedder items eller noget i den stil!?
Avatar billede andhansen Nybegynder
24. april 2003 - 14:26 #6
der er et table der hedder items, hvor der er disse rækker:
itemId  int(11)   
itemName  varchar(50)
itemDesc  varchar(250)
itemPrice  decimal(4,2)
Avatar billede Slettet bruger
24. april 2003 - 14:31 #7
$sql = "select i.itemName as navn, i.itemPrice as pris, t.qty as antal, (i.itemPrise * t.qty) as ialt from cart c, items i where c.cookieId='".$_COOKIE[cookieId]."' and c.itemId=i.itemId";
$result = mysql_query($sql);
$content = "Et eller andet er bestilt:\n";
while($row=mysql_fetch_array($result))
{
    $content .= $row[antal]." stk. ".$row[navn]." til ".$row[pris]." i alt:".$row[ialt]."\n";
}
mail($dinmail,"titel", $content);
Avatar billede andhansen Nybegynder
24. april 2003 - 14:34 #8
hmm den kommer med en fejl: Parse error: parse error, unexpected '@' in /disk2/users/ftpsite/test/cart.php on line 233

jeg tror ikke den ka li det @ i min emailadresse
Avatar billede Slettet bruger
24. april 2003 - 14:36 #9
Må jeg se en smule af din kode???
Husk at @ skal være i en streng... f.eks.
$dinmail = "din@mail.dk";
Avatar billede andhansen Nybegynder
24. april 2003 - 14:38 #10
her er koden:
<?php

    include("db.php");
       
    switch($_GET["action"])
    {
        case "add_item":
        {
            AddItem($_GET["id"], $_GET["qty"]);
            ShowCart();
            break;
        }
        case "update_item":
        {
            UpdateItem($_GET["id"], $_GET["qty"]);
            ShowCart();
            break;
        }
        case "remove_item":
        {
            RemoveItem($_GET["id"]);
            ShowCart();
            break;
        }
        default:
        {
            ShowCart();
        }
    }

    function AddItem($itemId, $qty)
    {
        // Will check whether or not this item
        // already exists in the cart table.
        // If it does, the UpdateItem function
        // will be called instead
       
        global $dbServer, $dbUser, $dbPass, $dbName;

        // Get a connection to the database
        $cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
       
        // Check if this item already exists in the users cart table
        $result = mysql_query("select count(*) from cart where cookieId = '" . GetCartId() . "' and itemId = $itemId");
        $row = mysql_fetch_row($result);
        $numRows = $row[0];
       
        if($numRows == 0)
        {
            // This item doesn't exist in the users cart,
            // we will add it with an insert query

            @mysql_query("insert into cart(cookieId, itemId, qty) values('" . GetCartId() . "', $itemId, $qty)");
        }
        else
        {
            // This item already exists in the users cart,
            // we will update it instead
           
            UpdateItem($itemId, $qty);
        }
    }
   
    function UpdateItem($itemId, $qty)
    {
        // Updates the quantity of an item in the users cart.
        // If the qutnaity is zero, then RemoveItem will be
        // called instead

        global $dbServer, $dbUser, $dbPass, $dbName;

        // Get a connection to the database
        $cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
       
        if($qty == 0)
        {
            // Remove the item from the users cart
            RemoveItem($itemId);
        }
        else
        {
            mysql_query("update cart set qty = $qty where cookieId = '" . GetCartId() . "' and itemId = $itemId");
        }
    }
   
    function RemoveItem($itemId)
    {
        // Uses an SQL delete statement to remove an item from
        // the users cart

        global $dbServer, $dbUser, $dbPass, $dbName;

        // Get a connection to the database
        $cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
       
        mysql_query("delete from cart where cookieId = '" . GetCartId() . "' and itemId = $itemId");
    }
   
    function ShowCart()
    {
        // Gets each item from the cart table and display them in
        // a tabulated format, as well as a final total for the cart
       
        global $dbServer, $dbUser, $dbPass, $dbName;

        // Get a connection to the database
        $cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
       
        $totalCost = 0;
        $result = mysql_query("select * from cart inner join items on cart.itemId = items.itemId where cart.cookieId = '" . GetCartId() . "' order by items.itemName asc");
        ?>
        <html>
        <head>
        <title> Your Shopping Cart </title>
        <script language="JavaScript">
       
            function UpdateQty(item)
            {
                itemId = item.name;
                newQty = item.options[item.selectedIndex].text;
               
                document.location.href = 'cart.php?action=update_item&id='+itemId+'&qty='+newQty;
            }
       
        </script>
        </head>
        <body bgcolor="#ffffff">
        <h1>Your Shopping Cart</h1>
        <form name="frmCart" method="get">
        <table width="100%" cellspacing="0" cellpadding="0" border="0">
            <tr>
                <td width="15%" height="25" bgcolor="red">
                    <font face="verdana" size="1" color="white">
                        &nbsp;&nbsp;<b>Qty</b>
                    </font>
                </td>
                <td width="55%" height="25" bgcolor="red">
                    <font face="verdana" size="1" color="white">
                        <b>Product</b>
                    </font>
                </td>
                <td width="20%" height="25" bgcolor="red">
                    <font face="verdana" size="1" color="white">
                        <b>Price Each</b>
                    </font>
                </td>
                <td width="10%" height="25" bgcolor="red">
                    <font face="verdana" size="1" color="white">
                        <b>Remove?</b>
                    </font>
                </td>
            </tr>
            <?php
           
            while($row = mysql_fetch_array($result))
            {
                // Increment the total cost of all items
                $totalCost += ($row["qty"] * $row["itemPrice"]);
                ?>
                    <tr>
                        <td width="15%" height="25">
                            <font face="verdana" size="1" color="black">
                                <select name="<?php echo $row["itemId"]; ?>" onChange="UpdateQty(this)">
                                <?php
                               
                                    for($i = 1; $i <= 20; $i++)
                                    {
                                        echo "<option ";
                                        if($row["qty"] == $i)
                                        {
                                            echo " SELECTED ";
                                        }
                                        echo ">" . $i . "</option>";
                                    }
                                ?>
                                </select>
                            </font>
                        </td>
                        <td width="55%" height="25">
                            <font face="verdana" size="1" color="black">
                                <?php echo $row["itemName"]; ?>
                            </font>
                        </td>
                        <td width="20%" height="25">
                            <font face="verdana" size="1" color="black">
                                $<?php echo number_format($row["itemPrice"], 2, ".", ","); ?>
                            </font>
                        </td>
                        <td width="10%" height="25">
                            <font face="verdana" size="1" color="black">
                                <a href="cart.php?action=remove_item&id=<?php echo $row["itemId"]; ?>">Remove</a>
                            </font>
                        </td>
                    </tr>
                <?php
            }
           
            // Display the total
            ?>
                    <tr>
                        <td width="100%" colspan="4">
                            <hr size="1" color="red" NOSHADE>
                        </td>
                    </tr>
                    <tr>
                        <td width="70%" colspan="2">
                            <font face="verdana" size="1" color="black">
                                <a href="products.php">&lt;&lt; Keep Shopping</a>
                            </font>
                        </td>
                        <td width="30%" colspan="2">
                            <font face="verdana" size="2" color="black">
                                <b>Total: $<?php echo number_format($totalCost, 2, ".", ","); ?></b>
                            </font>
                        </td>
                    </tr>
                </table>
                </form>
            </body>
            </html>
            <?php
    }
//------------------ Her er koden jeg satte ind ------------------

?>
<?php
$sql = "select i.itemName as navn, i.itemPrice as pris, t.qty as antal, (i.itemPrise * t.qty) as ialt from cart c, items i where c.cookieId='".$_COOKIE[cookieId]."' and c.itemId=i.itemId";
$result = mysql_query($sql);
$content = "Et eller andet er bestilt:\n";
while($row=mysql_fetch_array($result))
{
    $content .= $row[antal]." stk. ".$row[navn]." til ".$row[pris]." i alt:".$row[ialt]."\n";
}
mail(andhansen@yahoo.com,"titel", $content);
?>
Avatar billede Slettet bruger
24. april 2003 - 14:41 #11
mail("andhansen@yahoo.com","titel", $content);<--- skulle hjælpe....
@ bruges til at undertrykke fejlmeddelelser!
f.eks.
$var = @implode(".", 20);//Vil ikke give nogen fejlmeddelelse!
$var = @implode(".", 20);//Vil give fejlmeddelelse!
Avatar billede andhansen Nybegynder
24. april 2003 - 14:41 #12
så nu er det rettet, men så kommer der en ny fejl:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /disk2/users/ftpsite/test/cart.php on line 229
Avatar billede Slettet bruger
24. april 2003 - 14:43 #13
Prøv at lav en
echo $sql;
og test det i phpmyadmin eller lav et mini dump af databasen!
Avatar billede andhansen Nybegynder
24. april 2003 - 14:51 #14
hvis jeg sætter echo $sql ind, så skriver den: select i.itemName as navn, i.itemPrice as pris, t.qty as antal, (i.itemPrise * t.qty) as ialt from cart c, items i where c.cookieId='".$_COOKIE[cookieId]."' and c.itemId=i.itemId

hvis jeg skriver echo $result skriver den ikke noget.
Avatar billede Slettet bruger
24. april 2003 - 15:05 #15
$_COOKIE[cookieId] ---> GetCartId()
Avatar billede andhansen Nybegynder
24. april 2003 - 15:07 #16
hvor skal jeg sætte det ind henne?
Avatar billede Slettet bruger
24. april 2003 - 15:08 #17
$sql = "select i.itemName as navn, i.itemPrice as pris, t.qty as antal, (i.itemPrise * t.qty) as ialt from cart c, items i where c.cookieId='".GetCartId()."' and c.itemId=i.itemId";
Avatar billede andhansen Nybegynder
24. april 2003 - 15:12 #18
hmm jeg kan ikke se nogen ændring... den skriver stadig ikke noget når jeg skriver echo result
Avatar billede Slettet bruger
24. april 2003 - 15:16 #19
hvad får du af echo $sql; ???
prøv at test det output i PHPMYADMIN...
Så skulle du gerne få nogle fejlmeddelelser du kan arbejde videre med...

$sql = "select ii.itemName as navn, ii.itemPrice as pris, tt.qty as antal, (ii.itemPrise * tt.qty) as ialt from cart tt, items ii where tt.cookieId='".GetCartId()."' and tt.itemId=ii.itemId";
Avatar billede andhansen Nybegynder
24. april 2003 - 15:19 #20
når jeg skriver echo $sql; så kommer der dette:
select i.itemName as navn, i.itemPrice as pris, t.qty as antal, (i.itemPrise * t.qty) as ialt from cart c, items i where c.cookieId='7479c46fcab0d34ff627289a9addfcf6' and c.itemId=i.itemId
Avatar billede Slettet bruger
24. april 2003 - 15:21 #21
hvad hvis du ændrer $sql til det jeg skrev 15:16:15 ???
Avatar billede andhansen Nybegynder
24. april 2003 - 15:23 #22
jeg ved ikke om jeg har gjort det rigtigt, men hvis jeg sætter dette ind i "Kør SQL forspørgsel(er) på database ftpsite" kommer denne fejl:

Fejl

SQL-forespørgsel : 

SELECT i.itemName AS navn, i.itemPrice AS pris, t.qty AS antal, (

i.itemPrise * t.qty
) AS ialt
FROM cart c, items i
WHERE c.cookieId = '".$_COOKIE[cookieId]."' AND c.itemId = i.itemId
LIMIT 0 , 30

MySQL returnerede:


Unknown table 't' in field list
Avatar billede Slettet bruger
24. april 2003 - 15:24 #23
$sql = "select ii.itemName as navn, ii.itemPrice as pris, tt.qty as antal, (ii.itemPrise * tt.qty) as ialt from cart tt, items ii where tt.cookieId='".GetCartId()."' and tt.itemId=ii.itemId";
Avatar billede andhansen Nybegynder
24. april 2003 - 15:24 #24
her er 15:16:15:
select ii.itemName as navn, ii.itemPrice as pris, tt.qty as antal, (ii.itemPrise * tt.qty) as ialt from cart tt, items ii where tt.cookieId='7479c46fcab0d34ff627289a9addfcf6' and tt.itemId=ii.itemId
Avatar billede Slettet bruger
24. april 2003 - 15:25 #25
hvad får du fra phpmyadmin på den?
Avatar billede andhansen Nybegynder
24. april 2003 - 15:26 #26
her er hva PHPmyAdmin testede 15:24:50 til:
Fejl

SQL-forespørgsel : 

$sql = "select ii.itemName as navn, ii.itemPrice as pris, tt.qty as antal, (ii.itemPrise * tt.qty) as ialt from cart tt, items ii where tt.cookieId='".GetCartId(

). "' and tt.itemId=ii.itemId"

MySQL returnerede:


You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '$sql =  "select ii.itemName as navn, ii.itemPrice as pris, tt.q
Avatar billede Slettet bruger
24. april 2003 - 15:27 #27
select ii.itemName as navn, ii.itemPrice as pris, tt.qty as antal, (ii.itemPrise * tt.qty) as ialt from cart tt, items ii where tt.cookieId='7479c46fcab0d34ff627289a9addfcf6' and tt.itemId=ii.itemId

Er hvad du skal test i phpmyadmin
Avatar billede andhansen Nybegynder
24. april 2003 - 15:29 #28
15:27:56
Fejl

SQL-forespørgsel : 

SELECT ii.itemName AS navn, ii.itemPrice AS pris, tt.qty AS antal, (

ii.itemPrise * tt.qty
) AS ialt
FROM cart tt, items ii
WHERE tt.cookieId = '7479c46fcab0d34ff627289a9addfcf6' AND tt.itemId = ii.itemId
LIMIT 0 , 30

MySQL returnerede:


Unknown column 'ii.itemPrise' in 'field list'
Avatar billede Slettet bruger
24. april 2003 - 15:30 #29
$sql = "select ii.itemName as navn, ii.itemPrice as pris, tt.qty as antal, (ii.itemPrice * tt.qty) as ialt from cart tt, items ii where tt.cookieId='".GetCartId(

). "' and tt.itemId=ii.itemId";<--- ind i scriptet... tag echo resultatet og test i phpmyadmin
Avatar billede andhansen Nybegynder
24. april 2003 - 15:34 #30
YES... der er ikke nogen fejl i PHPmyadmin og den returner Resource id #7 i scriptet
Avatar billede Slettet bruger
24. april 2003 - 15:35 #31
PIS FEJL.... :@
Avatar billede andhansen Nybegynder
24. april 2003 - 15:36 #32
skulle den ikke skrive Resource id #7?
Avatar billede Slettet bruger
24. april 2003 - 15:37 #33
jo jo... brokker mig bare over min egne latterlige små fejl!
Virker det også med mailen?
Avatar billede andhansen Nybegynder
24. april 2003 - 15:37 #34
tester lige mailen
Avatar billede andhansen Nybegynder
24. april 2003 - 15:41 #35
jo mailen virker også :).... der er bare én ting der ikke virker... jeg kan ikke bestille flere ting fra databasen på én gang...
Avatar billede Slettet bruger
24. april 2003 - 15:45 #36
øhhh... hvad mener du lige?
Avatar billede andhansen Nybegynder
24. april 2003 - 16:37 #37
ikke noget... nu virker det
Avatar billede andhansen Nybegynder
24. april 2003 - 16:39 #38
der er en sidste ting jeg lige vil spørge om... kan jeg lave en knap på siden, så mailen først bliver sendt efter man har trykket på knappen?
Avatar billede Slettet bruger
24. april 2003 - 16:53 #39
Så skal du pille koden ud og ligge det i en funktion... og så sætte det i stil med det her

switch($_GET["action"])
    {
        case "add_item":
        {
            AddItem($_GET["id"], $_GET["qty"]);
            ShowCart();
            break;
        }
        case "update_item":
        {
            UpdateItem($_GET["id"], $_GET["qty"]);
            ShowCart();
            break;
        }
        case "remove_item":
        {
            RemoveItem($_GET["id"]);
            ShowCart();
            break;
        }
        case "confirm"://SEND MAIL
        sendmail();
        break;
        default:
        {
            ShowCart();
        }
    }
Avatar billede andhansen Nybegynder
24. april 2003 - 16:59 #40
skal jeg så lave
<?php
$sql = "select ii.itemName as navn, ii.itemPrice as pris, tt.qty as antal, (ii.itemPrice * tt.qty) as ialt from cart tt, items ii where tt.cookieId='".GetCartId(). "' and tt.itemId=ii.itemId";
$result = mysql_query($sql);
$content = "Et eller andet er bestilt:\n";
while($row=mysql_fetch_array($result))
{
    $content .= $row[antal]." stk. ".$row[navn]." til ".$row[pris]." i alt:".$row[ialt]."\n";
}
mail("andreas@hansen.tdcadsl.dk","titel", $content);
?>
som en funktion?
Avatar billede Slettet bruger
24. april 2003 - 17:02 #41
jeps!
Avatar billede andhansen Nybegynder
24. april 2003 - 17:05 #42
skal den se sådan ud?:
    function sendmail()
    {
        $sql = "select ii.itemName as navn, ii.itemPrice as pris, tt.qty as antal, (ii.itemPrice * tt.qty) as ialt from cart tt, items ii where tt.cookieId='".GetCartId(). "' and tt.itemId=ii.itemId";
        $result = mysql_query($sql);
        $content = "Et eller andet er bestilt:\n";
        while($row=mysql_fetch_array($result))
        {
        $content .= $row[antal]." stk. ".$row[navn]." til ".$row[pris]." i alt:".$row[ialt]."\n";
        }
        mail("andreas@hansen.tdcadsl.dk","titel", $content);
    }
Avatar billede Slettet bruger
24. april 2003 - 17:11 #43
Jepper og så slutte den med:
header("location: ".$_SERVER[PHP_SELV]);
Avatar billede Slettet bruger
24. april 2003 - 17:11 #44
Det sidste sørger for at brugeren får vist sit indkøbs kort igen... han bliver sendt videre til en ny side!
Avatar billede andhansen Nybegynder
24. april 2003 - 17:27 #45
nu sender den når jeg trykker på linket... men den sender mig ikke hen til en anden side... kan du ikke lige forklare det der med header("location: ".$_SERVER[PHP_SELV]);
Avatar billede andhansen Nybegynder
24. april 2003 - 19:03 #46
jeg fandt ud af det... mange tak for hjælpen
Avatar billede Slettet bruger
24. april 2003 - 20:07 #47
Utrolig som jeg kan:
header("location: ".$_SERVER[PHP_SELF]);// <--- HEN TIL SAMME STI
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