Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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 变量无理由为空_Php - Fatal编程技术网

Php 变量无理由为空

Php 变量无理由为空,php,Php,我正在开发一个购物车系统,除一件事外,其他一切都很正常。 我使用PHP会话存储每个产品的数据,包括ID、名称、价格和数量。所有变量都正确完成,除非价格变量。我不知道为什么!我使用jQuery获取值并将它们发送到会话中将处理它们的页面。我将放置代码的相关部分以方便操作。这是我的产品的内容。php: <?php session_start(); ?> <html> <body> <?php $connection = new mysq

我正在开发一个购物车系统,除一件事外,其他一切都很正常。
我使用PHP会话存储每个产品的数据,包括ID、名称、价格和数量。所有变量都正确完成,除非价格变量。我不知道为什么!我使用jQuery获取值并将它们发送到会话中将处理它们的页面。
我将放置代码的相关部分以方便操作。这是我的产品的内容。php

<?php
        session_start();
?>
<html>
<body>
<?php
    $connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

    $sql = "SELECT id, name, price FROM products ORDER BY id";
    $result = $connection->query($sql);

    if ($result->num_rows > 0)
    {
            echo "<table>";
            echo "  <tr>";
            echo "      <th>ID</th>";
            echo "      <th>NAME</th>";
            echo "      <th>PRICE</th>";
            echo "      <th>QUANTITY</th>";
            echo "  </tr>";
        while($row = $result->fetch_assoc())
        {
            echo "  <tr>";
            echo "      <td><div class='id-product'>". $row["id"]."</div></td>";
            echo "      <td><div class='name-product'>". $row["name"]."</div></td>";
            echo "      <td>&#36;<div class='price-product'>". $row["price"]."</div></td>";
            echo "      <form class='add'>";
            echo "      <td><input type='number' name='quantity' value='1' min='1'/></td>";
            echo "      <td><button type='submit'>Add</button></td>";
            echo "      </form>";
            echo "  </tr>";
        }
            echo "</table>";
    }

    $connection->close();
?>
<script>
$(document).ready(function()
{
    $('.add').on('submit', function()
    {
        var id = $(this).closest('tr').find('.id-product').text();
        var name = $(this).closest('tr').find('.name-product').text();
        var price = $(this).closest('tr').find('.price-product').val();
        var quantity = $(this).closest('tr').find('input').val();
        window.location.href = "add.php?id=" + id + "&name=" + name + "&price=" + price + "&quantity=" + quantity;
        return false;
    });
});
</script>
<body>
</html>
$total = 0;
foreach($_SESSION['cart'] as $id)
{
    echo "<tr>";
        echo "<td>{$id['name']}</td>";
        echo "<td>&#36;{$id['price']}</td>";
        echo "<td>{$id['quantity']}</td>";
        echo "<td>";
        echo "<a href='remove.php?id={$id['id']}&name={$id['name']}'>Remove</a>";
        echo "</td>";
    echo "</tr>";

    $total += ($id['price'] * $id['quantity']);
}


我相信你的JS定价不正确

 window.location.href = "add.php?id=" + id + "&name=" + name + "&price" + price + "&quantity=" + quantity;
        return false;
应该是

 window.location.href = "add.php?id=" + id + "&name=" + name + "&price=" + price + "&quantity=" + quantity;
        return false;

我相信你的JS定价不正确

 window.location.href = "add.php?id=" + id + "&name=" + name + "&price" + price + "&quantity=" + quantity;
        return false;
应该是

 window.location.href = "add.php?id=" + id + "&name=" + name + "&price=" + price + "&quantity=" + quantity;
        return false;

请参见jquery的.val和.text中的差异

试试这个:

var price = $(this).closest('tr').find('.price-product').text();

请参见jquery的.val和.text中的差异

试试这个:

var price = $(this).closest('tr').find('.price-product').text();

即使在添加了信号后仍然保持不变。在
GET
上运行
print_r
是否如预期的那样?即使在添加了信号后仍然保持不变。在
GET
上运行
print_r
是否如预期的那样?尝试更改
var price=$(this)。最近('tr')。查找('price product').val()
to
var price=$(this).closest('tr').find('price product').text()
看看它的作用。@Eda190好吧,我必须感谢你和下面回复的作者,因为他们都帮助我解决了这个问题。我尝试了您的建议,更改为
文本
,但由于我使用的是
&price
,而不是
&price=
,所以这不起作用。切换到
text
并将信号添加到
&price
中,效果非常好!谢谢你们!你让客户机将价格发送给服务器?你让用户选择价格。听起来不是个好主意。@DotNet在任何事情上都不要信任客户。发送到服务器的所有内容都是可疑的。肯定是重要的东西,比如money=)@Rudie我没有考虑过,我认为不会有问题,因为变量值来自固定文本,但我只是在这里做了一个测试,发现这实际上是可以更改的。我将直接从数据库中获取值!非常感谢。问题是,我不知道如何通过jQuery实现这一点。请尝试更改
var price=$(this).closest('tr')。find('price product').val()
to
var price=$(this).closest('tr').find('price product').text()
看看它的作用。@Eda190好吧,我必须感谢你和下面回复的作者,因为他们都帮助我解决了这个问题。我尝试了您的建议,更改为
文本
,但由于我使用的是
&price
,而不是
&price=
,所以这不起作用。切换到
text
并将信号添加到
&price
中,效果非常好!谢谢你们!你让客户机将价格发送给服务器?你让用户选择价格。听起来不是个好主意。@DotNet在任何事情上都不要信任客户。发送到服务器的所有内容都是可疑的。肯定是重要的东西,比如money=)@Rudie我没有考虑过,我认为不会有问题,因为变量值来自固定文本,但我只是在这里做了一个测试,发现这实际上是可以更改的。我将直接从数据库中获取值!非常感谢。问题是我不知道如何通过jQuery实现这一点。