Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP和SQL的购物车_Php_Mysql_Sql_Cart - Fatal编程技术网

使用PHP和SQL的购物车

使用PHP和SQL的购物车,php,mysql,sql,cart,Php,Mysql,Sql,Cart,我有不同数量的文件和数据库表,包括artist、album和曲目 在该网页上,用户可以选择艺术家、专辑,然后选择要购买的歌曲或专辑 所需的功能是:当用户选择购买相册时,所有曲目都会添加到购物车中 下面是一个PHP代码块,带有购买相册的链接: <p>?php session_start(); <br> $albumID=$_POST["albumID"]; <br> echo "<p>Going to buy album $

我有不同数量的文件和数据库表,包括
artist
album
曲目

在该网页上,用户可以选择艺术家、专辑,然后选择要购买的歌曲或专辑

所需的功能是:当用户选择购买相册时,所有曲目都会添加到购物车中

下面是一个PHP代码块,带有购买相册的链接:

<p>?php

    session_start(); <br>
    $albumID=$_POST["albumID"]; <br>
    echo "<p>Going to buy album $albumID</p>";
    echo "<p><a href=\"shopForTracks.php\">Click here to continue</a></p>";

?></p>
showBasket.php中的附加代码

<?php 
 if (isset($_SESSION["currentUserID"])) { 
 $dbQuery="select * from basket where paid='N' and userID=".$_SESSION["currentUserID"];
 $dbResult=mysql_query($dbQuery);
 $numTracks=mysql_num_rows($dbResult);
 }   
 ?>
    <a href="login.php">Logout <?php echo $_SESSION["currentUser"]; ?></a> | 
    <a href="shopForTracks.php">Shop for tracks</a> |
    <a href="showBasket.php">Show Basket</a> <?php echo "($numTracks)"; ?> |
    <a href="checkout.php">Checkout</a> | 
    <a href="showMyPurchases.php">Show my purchases</a>


 <hr>


<?php
 $dbQuery="select tracks.title, albums.title, artists.name, basket.id ".
     "from basket,tracks,albums,artists ".
     "where basket.userID=".$_SESSION["currentUserID"]." ".
     "and basket.paid='N' ".
     "and basket.trackID=tracks.id ".
     "and albums.id=tracks.albumID ".
     "and artists.id=tracks.artistID";
   $dbResult=mysql_query($dbQuery);
 $numTracks=mysql_num_rows($dbResult);

 if ($numTracks==0)
   echo "<h3>Your basket is empty</h3>";
  else {

 ?>

为了尝试解决这个问题,我真的迷路了:(

根据您的最后一段代码,您需要在
shofForTracks.php中执行类似于以下代码的操作

// We get the album to add via the `albumID` GET parameter
$query = mysql_query("SELECT song_id FROM song WHERE album = '".mysql_real_escape_string($_GET['albumID'])."'")

// We add a line to the cart per track of the album. We construct the query by pieces
$insert = "INSERT INTO basket (userID, paid, trackID) VALUES ";
$template = "(" . mysql_real_escape_string($_SESSION['currentUserID']) . ", 'N', %d)";

// Add a value line for each track in the array `$tracks`
$tracks = array()
while($track = mysql_fetch_array($query)
    $tracks[] = sprintf($template, $track['song_id']);

// Add the lines to the insert query 
// "INSERT INTO ... VALUES (ID, 'N', 1), (ID, 'N', 3)"
$insert .= implode(", ", $tracks);
mysql_query($insert);
请注意:

  • 必须正确转义从用户发送的数据。切勿信任用户输入(例如,
    $\u POST
    $\u GET
    ,…)。现有代码易受攻击
  • 您可以使用不推荐使用的
    mysql.*
    函数。请切换到
    mysqli
    或PDO。请参阅和
  • 上述代码不安全。使用简单的HTTP
    GET
    请求将内容添加到购物车可能会导致安全漏洞,如
  • 很抱歉,但是从代码的外观来看,您似乎还没有准备好自己编写一个现实生活(意味着真正的金钱)购物网站(无论如何).关于安全性,你还有很多需要学习的地方,这对网络交易至关重要。为了你自己的利益,如果你对代码的安全性没有绝对的信心,就不要让人们相信你的钱。但是,嘿,我只是说。如果你把这些东西作为练习来编码,那么你就有机会熟悉这些概念临时秘书处:)

我们需要更多的信息才能有效地提供帮助。特别是,我们需要知道购物车如何存储物品以及如何将物品添加到购物车中。请发布与此相关的代码。非常感谢!是的,这是一项任务的一部分,只需要很少的指导。
$query = mysql_query("SELECT song_id FROM song WHERE album = '".$_POST['albumID']."'")

 $_SESSION['ID] = array();

   while($album = mysql_fetch_array($query)
   {
    $_SESSION['basket'][] = $albums['Track_id']
  }
// We get the album to add via the `albumID` GET parameter
$query = mysql_query("SELECT song_id FROM song WHERE album = '".mysql_real_escape_string($_GET['albumID'])."'")

// We add a line to the cart per track of the album. We construct the query by pieces
$insert = "INSERT INTO basket (userID, paid, trackID) VALUES ";
$template = "(" . mysql_real_escape_string($_SESSION['currentUserID']) . ", 'N', %d)";

// Add a value line for each track in the array `$tracks`
$tracks = array()
while($track = mysql_fetch_array($query)
    $tracks[] = sprintf($template, $track['song_id']);

// Add the lines to the insert query 
// "INSERT INTO ... VALUES (ID, 'N', 1), (ID, 'N', 3)"
$insert .= implode(", ", $tracks);
mysql_query($insert);