【问题标题】:Cannot store information from form to database无法将信息从表单存储到数据库
【发布时间】:2017-08-25 06:27:44
【问题描述】:

我正在制作一个购物车,当用户将商品添加到购物车时,它会保存到数据库中。我已将所有需要的信息放在标签中。一些信息作为纯文本和隐藏输入重复。问题是,当我将商品添加到购物车时,它确实显示“已添加商品”,但实际上并未将任何信息添加到数据库中。我已经测试过它是由图像还是价格等引起的。它只有在我只留下 order_quantity 时才按预期运行。

这是商店页面:

<!DOCTYPE html>
<html>

    <head>
        <title>Store</title>
        <link href="../styles/main.css" rel="stylesheet" type="text/css"/>
    </head>

    <body>
        <header>
            <center><img src="../images/logo.png"></a></center>

            <nav>
                <ul>
                    <center><h3><li>Store</li>
                    <li><a href="cart.php">Cart</a></li>
                    <li><a href="userorders.php">My orders</a></li>
                    <li><a href="logout.php">Logout</a></li></h3></center>
                </ul>
            </nav>
        </header>

        <div class="left">
            <ul>
                <h4><li>Completes</li>
                <li><a href="decksstore.php">Decks</li>
                <li><a href="wheelsstore.php">Wheels</a></li>
                <li><a href="bearingsstore.php">Bearings</a></li>
                <li><a href="trucksstore.php">Trucks</a></li>
                <li><a href="hardwarestore.php">Hardware</a></li></h4>
            </ul>
        </div>


        <div class="main">
        <br>
            <?php
                require_once('../../connect.php');

                $select = "SELECT * FROM tblcompletes";
                $response = mysqli_query($dbc, $select);

                while ($row = mysqli_fetch_array($response))
                {

                    echo '<div class="buyproducts">  
                        <form method="post" action="addtocart.php">
                            <div style="border:1px solid white; background-color:white; border-radius:20px; padding:20px;" align="center">  
                                <img src="data:image/jpeg;base64,'.base64_encode( $row['product_image'] ).'" class="img-responsive">
                                <h4 class="text-info">'.$row['product_name'].'</h4>
                                <h4 class="text-danger">$'.$row['product_price'].'</h4>
                                <h4>'.$row['product_quantity'].' in stock</h4> 
                                Quantity: <input type="text" name="order_quantity" class="form-control" value="1">  
                                <input type="hidden" name="hidden_id" value="'.$row["product_ID"].'">
                                <input type="hidden" name="hidden_image" value="data:image/jpeg;base64,'.base64_encode( $row['product_image'] ).'" class="img-responsive">
                                <input type="hidden" name="hidden_name" value="'.$row["product_name"].'">
                                <input type="hidden" name="hidden_price" value="'.$row["product_price"].'">
                                <input type="submit" style="margin-top:5px;" class="btn-success" value="Add to cart">
                            </div>
                        </form>
                    </div>';

                }
            ?>
        </div>
    </body>

</html>

这里是动作文件:

<?php
    require_once('../../connect.php');

    $hidden_id = $_POST['product_ID'];
    $hidden_image = $_POST['product_image'];
    $hidden_name = $_POST['product_name'];
    $hidden_price = $_POST['product_price'];
    $order_quantity = $_POST['order_quantity'];
    $user_email = $_COOKIE['user_email'];

    if ($order_quantity == NULL) 
    {
        echo '<script type="text/javascript"> alert("Please enter a valid value"); window.location="completesstore.php"; </script>';
    }

    else
    {
        $addtocart = "INSERT INTO tblorders (product_ID, product_iamge, product_name, product_price, order_quantity, user_email) VALUES (?, ?, ?, ?, ?, ?)";
        $stmt = mysqli_prepare($dbc, $addtocart);
        mysqli_stmt_bind_param($stmt, "issdis", $hidden_id, $hidden_image, $hidden_name, $hidden_price, $order_quantity, $user_email);
        mysqli_stmt_execute($stmt);

        echo '<script type="text/javascript"> alert("Item added"); window.location="completesstore.php"; </script>';

    }

    mysqli_st_close($stmt);
    mysqli_close($dbc);
?>

提前致谢。

【问题讨论】:

  • 您遇到了什么错误?
  • 没有错误;提交表单时,我无法将信息保存到数据库中(使用添加到购物车按钮)。
  • NSERT INTO tblorders (product_ID, product_iamge, product_name, product_price, order_quantity, user_email) VALUES (?, ?, ?, ?, ?, ?) ---- 什么?是为了?
  • 它们表明这六个值是未知的,提交的内容都会被保存。
  • 检查下面的答案,你在表单和帖子中没有相同的名字

标签: php html database


【解决方案1】:

改变

$hidden_id = $_POST['product_ID'];
$hidden_image = $_POST['product_image'];
$hidden_name = $_POST['product_name'];
$hidden_price = $_POST['product_price'];
$order_quantity = $_POST['order_quantity'];
$user_email = $_COOKIE['user_email'];

$hidden_id = $_POST['hidden_id'];
$hidden_image = $_POST['hidden_image'];
$hidden_name = $_POST['hidden_name'];
$hidden_price = $_POST['hidden_price'];
$order_quantity = $_POST['order_quantity'];
$user_email = $_COOKIE['user_email'];

form 中使用的name 属性在 addtocart.php 文件中有所不同。

【讨论】:

  • 这是您在将其保存到 addtocart.php 文件时所犯的错误。我不确定是否要检索 $user_email = $_COOKIE['user_email'];。并且,请解释“..没有解决问题”。 @戴夫
  • 更新:我再次测试了你的答案,没有发送图像信息。这已经解决了这个问题。如果您好奇,我在登录时将用户电子邮件设置为 cookie,然后我用它来识别订购该商品的用户。除此之外,非常感谢您指出我的错误,非常感谢您的意见。
【解决方案2】:

使用以下代码更新您的操作文件:

$hidden_id = $_POST['product_ID'];
$hidden_image = $_POST['product_image'];
$hidden_name = $_POST['product_name'];
$hidden_price = $_POST['product_price'];
$order_quantity = $_POST['order_quantity'];
$user_email = $_COOKIE['user_email'];

将上面的代码替换为:

$hidden_id = $_POST['hidden_id'];
$hidden_image = $_POST['hidden_image'];
$hidden_name = $_POST['hidden_name'];
$hidden_price = $_POST['hidden_price'];
$order_quantity = $_POST['order_quantity'];
$user_email = $_COOKIE['user_email'];

【讨论】:

  • 您的答案@bharat 中有什么新内容。它与下面给出的答案有何不同?
  • 抱歉,我回答问题时没有刷新页面
  • 也谢谢你。
【解决方案3】:

在按钮示例中添加一些名称:

<input type="submit" style="margin-top:5px;" class="btn-success" value="Add to cart" name="Submit">

然后在您的 addtocart.php 中添加:

if(isset($_Submit['Submit'])){
$hidden_id = $_POST['product_ID'];
$hidden_image = $_POST['product_image'];
$hidden_name = $_POST['product_name'];
$hidden_price = $_POST['product_price'];
$order_quantity = $_POST['order_quantity'];
$user_email = $_COOKIE['user_email'];}

并确保您已连接到您的数据库。

【讨论】:

    猜你喜欢
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    相关资源
    最近更新 更多