2012-04-12 27 views
2

如果這很簡單,我仍然在學習如此抱歉......我試圖實現的是一個在線商店結帳系統(不要擔心它不會被用於它只是爲了我自己的學習,所以任何草率的代碼不會影響一個可憐的企業主,但任何皮卡代碼總是讚賞)。從一個數組中取物品並將其放入數據庫

所以我有客戶選擇產品,然後這些產品被存儲在陣列中,並在籃子中顯示。然後,我想讓用戶訪問結帳頁面,以便他們可以點擊「訂單」,然後將這些商品和用戶名更新爲數據庫中的「訂單」表。

我仍然在與數組握手(可能是我學習階段的標識符),所以我不確定如何從我的購物籃中將這些項目(本質上只是ISBN編號和價格)帶到結帳頁面當我有幾個不同的陣列。我要做的是展示我如何創建每個陣列以及如何將其展示在籃子中,並希望這將成爲您可能需要的一切!非常感謝你的閱讀和任何幫助將不勝感激..我希望這個問題可以幫助其他人在我的舞臺上。

創建陣列=

products.php

echo "<a href='addtolist.php?bookname=" . $bookname . "&bookauthor=" . 
    $bookauthor . "&bookpub=" . $bookpub . "&bookprice=" . $bookprice . 
    "&bookisbn=" . $bookisbn . "'>Add to basket</a>"; 

addtolist.php

<?php 
session_start(); 
if (!isset($_SESSION['username'])) 
{ 
header("Location:index.php"); 
exit(); 
} 

$bookarray = array(); 
$bookarray['bookname'] = $_GET['bookname']; 
$bookarray['bookauthor'] = $_GET['bookauthor']; 
$bookarray['bookpub'] = $_GET['bookpub']; 
$bookarray['bookisbn'] = $_GET['bookisbn']; 
$bookarray['bookprice'] = $_GET['bookprice']; 

$found = false; 

if (isset($_SESSION['list'])) 
{ 
    foreach ($_SESSION['list'] as $key => $another) 
    { 
    if ($_SESSION['list'][$key]['bookisbn'] == $_GET['bookisbn']) 
     { 
      $found = true; 
      break; 
    } 
    } 
} 

if ($found == false) 
{ 
    $_SESSION['list'] [] = $bookarray; 
} 

header('Location: ' . $_SERVER['HTTP_REFERER']); 

exit(); 
?> 

displaylist.php

<?php 

if (!isset($_SESSION['list'])) 
{ 
echo "No list members selected"; 
} 
else 
{ 
?> 
<div id="bket2"> 

<table> 
<tr> 
<td class='toprow'>Title</td> 
<td class='toprow'>Author</td> 
<td class='toprow'>Publisher</td> 
<td class='toprow'>ISBN</td> 
<td class='toprow'>Price</td> 
</tr> 

<?php 

$totalprice=0; 

foreach ($_SESSION['list'] as $key => $another) 
{ 
?> 
<tr> 
     <td><?php echo $_SESSION['list'][$key]['bookname']?></td> 
     <td><?php echo $_SESSION['list'][$key]['bookauthor']?></td> 
    <td><?php echo $_SESSION['list'][$key]['bookpub']?></td> 
    <td><?php echo $_SESSION['list'][$key]['bookisbn']?></td> 
    <td><?php echo "&#163;".$_SESSION['list'][$key]['bookprice']?></td> 
    <td><a href="removefromlist.php?bookisbn= <?php echo $_SESSION['list'][$key]['bookisbn']?> &location= <?php echo 
    $_SERVER['PHP_SELF']?> ">[-]</a></td> 
    </tr> 
    <?$totalprice += $_SESSION['list'][$key]['bookprice'];?> 
    <?php 
    } 
    } 
    ?> 
    </table> 
    <div><h4>Total Price = &#163;<?echo $totalprice;?></h4></div> 

</div> 

然後我的籃子裏的div我把

<?php require "displaylist.php" ? 

謝謝你們

+0

那麼究竟是什麼不工作正確?在你的displaylist.php文件中是否有任何東西出現? – SenorPuerco 2012-04-12 22:10:53

+2

所以問題是,我如何獲得'$ _SESSION ['list']'到我的數據庫中的數據? – AndrewR 2012-04-12 22:11:33

+0

@SenorPuerco沒有抱歉,displaylist.php工作正常,它把所有這些項目放到數據庫中是奮鬥 – Phil 2012-04-12 22:14:35

回答

1

這裏是一個應該讓你開始一個例子。

<?php 

$dbh = new PDO('mysql:host=localhost;dbname=mysql', 'username', 'password'); 
$stmt = $dbh->prepare('insert into orders (isbn, price) values (?, ?)'); 

if (isset($_SESSION['list'])) 
{ 
    foreach ($_SESSION['list'] as $item) 
    { 
    $stmt->execute(array($item['bookisbn'], $item['bookprice'])); 
    } 
} 
?> 
0

不完全知道你正在嘗試做的,但我認爲你想你存儲在$ _SESSION [「名單」]賬面價值插入到您的「訂單」表中的MySQL。這是我的承擔(假設你有'用戶名'存儲在會話變量的某處):

<?php 
session_start(); 

//connect to db 
$con=mysql_connect("localhost","username","password"); 

if(!$con){ 
    die("Could not connect to the database: " .mysql_error()); 
}; 

mysql_select_db("db_name",$con); 

//loop through each book in 'list' and add values to mysql table 'order' 
for($i=0; $i<count($_SESSION['list']);$i++){ 

    $query="INSERT INTO `orders` 
       ('username', 
       'isbn', 
       'price', 
       'timestamp') 
       VALUES 
       ('".mysql_real_escape_string($_SESSION['username'])."', 
       '".mysql_real_escape_string($_SESSION['list'][$i]['bookisbn'])."', 
       '".mysql_real_escape_string($_SESSION['list'][$i]['bookprice'])."', 
       CURDATE() 
       )"; 

    $result=mysql_query($query); 
} 

mysql_close(); 

    ?> 
+0

如果使用'mysql_'函數,請確保在將輸入發送到數據庫之前對輸入進行了消毒。 – AndrewR 2012-04-13 15:09:37

+0

啊,是的,謝謝。接得好。 – 2012-04-13 16:15:47

相關問題