首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP在表中插入包含所有奖品的订单

PHP在表中插入包含所有奖品的订单
EN

Stack Overflow用户
提问于 2015-05-19 06:17:55
回答 2查看 58关注 0票数 0

我正在制作一个shop作为学校的作品,我必须将客户的选择添加到数据库中。

插入是可以的,但是在CommandeTotal列中,奖品只是我选择的最后一个项目(我选择2个或更多不同奖品的产品),下面是我的代码来理解我的问题:

add into table Commandes指令正常。

问题是,当执行add into table commandeDetails的insert指令时,所有的产品都被插入了,但是insert指令之后表中所有产品的奖品都来自最后一个产品。

代码语言:javascript
复制
<?php
    if (empty($_SESSION["achats"]))
        echo "Votre panier est Vide!";
    else {
        //afficher les éléments du panier
        $mysqli = new mysqli("localhost", "root", "", "magasin");
        mysqli_set_charset($mysqli, "utf8");

        if (isset($_POST["PasserCommande"])) {
            //0) Pogner le ID du user logué
            if(isset($_SESSION["nom"]))
            {
                $queryUser = "SELECT MAX(UserID) AS No FROM Users WHERE UserName = '".$_SESSION["nom"]."'";
                $resultUser = $mysqli->query("$queryUser");
                $UserID = $resultUser->fetch_assoc()["No"];

                //1) Ajouter une commande(enlever CommandeID dans la requête)

                $queryOrder = "INSERT INTO commandes(UserID, CommandeDate) VALUES('".$UserID."', CURRENT_TIMESTAMP())";
                $mysqli->query($queryOrder);

                //2) Pogner le ID de la commande

                $queryOrderID = "SELECT MAX(CommandeID) AS id FROM commandes";
                $result = $mysqli->query($queryOrderID);

                $orderID = $result->fetch_assoc()["id"];

                echo"<h3>Résultat de votre commande : </h3>";

                echo "Commande # " . $orderID . " enregistrée.";

                //3) Ajouter des détails
                while ($element = each($_SESSION["achats"])) {
                    if(isset($_SESSION["prix"]))
                    {
                        $queryOrderDetail = "INSERT INTO detailcommande(CommandeID, ProduitID, CommandeTotal, CommandeDate) VALUES('".$orderID."','".$element["key"]."', '".$_SESSION["prix"]."', CURRENT_TIMESTAMP())";                                
                        $mysqli->query($queryOrderDetail);
                        echo $queryOrderDetail;
                    }
                }

                unset($_SESSION["achats"]);
            }
        }
        if (isset($_SESSION["achats"])) {
            $total = 0;

            echo"<h3>Vos achats de la journée : </h3>";
            while ($element = each($_SESSION["achats"])) {

                $query = "SELECT * FROM produits WHERE ProduitID = '" . $element["key"] . "'";

                $result = $mysqli->query($query);

                $ligne = $result->fetch_assoc();

                echo"<div class='col-sm-4 col-lg-4 col-md-4'>
                    <div class='thumbnail'>

                        <div class='caption'>";
                            echo"<img src='IMAGES/max/$ligne[ProduitLien]'     width='100' height='50' />
                            <h4 class='pull-right'>$ligne[ProduitPrix]$</h4>
                            <h5><a href='#'>$ligne[ProduitNom]</a></h5>
                            <h6>Qté : $element[value]</h6>
                        </div>
                        <div class='ratings'>
                            <p>
                                <span class='glyphicon glyphicon-star'></span>
                                <span class='glyphicon glyphicon-star'></span>
                                <span class='glyphicon glyphicon-star'></span>
                                <span class='glyphicon glyphicon-star'></span>
                                <span class='glyphicon glyphicon-star'></span>
                            </p>
                        </div>
                    </div>
                </div>";

                $total += $element["value"] * $ligne["ProduitPrix"];
                $_SESSION["prix"] = $ligne["ProduitPrix"];
            }

            echo "<div>total : <strong>" . $total . "$</strong></div>";
            echo "<div>total après taxes <strong>: " . round($total * 1.15,2) .      "$</strong></div>";    

        }
        $mysqli->close();
    }
    ?>

<form method="POST" action="#">
    <input type="submit" name="PasserCommande" value="Commandez maintenant" />
</form>
EN

回答 2

Stack Overflow用户

发布于 2015-05-19 13:00:46

根据你提供的信息,我只能想到以下几点:

$_SESSION"achats“是一个数组,而isset($_SESSION”“)不是(或只有1个值)。

例如,您拥有:

代码语言:javascript
复制
$_SESSION["achats"] = array( '1' => '1', '2' => '2'); 
$_SESSION["prix"] = "65"

请提供更多的代码,也许你的输入,如果这不是你想要的。

票数 0
EN

Stack Overflow用户

发布于 2015-05-20 09:44:33

我已经卖出了这个问题,我添加了这个,它起作用了:

代码语言:javascript
复制
while ($element = each($_SESSION["achats"])) {
                $queryTest = "SELECT ProduitPrix FROM produits WHERE ProduitID = ". $element["key"];
                $res = $mysqli->query($queryTest);
                while($prixCommandes = $res->fetch_assoc())
                {
                    $queryOrderDetail = "INSERT INTO detailcommande(CommandeID, ProduitID, CommandeTotal, CommandeDate) VALUES('".$orderID."','".$element["key"]."', '".$prixCommandes["ProduitPrix"]."', CURRENT_TIMESTAMP())";                                
                    $mysqli->query($queryOrderDetail);
                }       
            }

谢谢你试着帮我

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30313670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档