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