在另一个PHP页面中将变量从一个表传递到另一个表

时间:2016-11-28 09:00:50

标签: php html mysql

我正在学校做作业,我们应该模拟一个网络零售商店,通过PHP将产品从数据库发送给最终用户。然后,用户应该可以通过复选框将产品添加到购物车,然后按下将它们带到购物车的按钮,其中只显示产品表中的选定项目。

我取得了一些很大的进步,但我仍然坚持这个极小的问题,即:我无法弄清楚如何在表格中展示所选项目。让我告诉你我的产品表现在是什么样的:

The product table

代码:

<form action="selected_products.php" method="POST">
<table>
    <tr>
        <th>Select</th>
        <th>Product-ID</th>
        <th>Product Name</th>
        <th>Price SEK</th>
    <tr>

<?php
// Print out all entries in a table
foreach ($rows as $value) {
    extract($value);

    echo "<tr><td><input type='checkbox' name='SelectedData[]' alt='Checkbox' value='$id&$name&$price'></td>";
    echo "</td><td>".$id.'';
    echo "</td><td>".$name.'';
    echo "</td><td>".$price.'';
    echo "</td></tr>";
}
?>
</table>
<br>
<input type="submit" value="Add to cart" />
</form>

当用户选中带有复选框的产品并按下按钮时,会将他们带到selected_products.php页面,如下所示:

The selected products

代码:

<table>
    <tr>
        <th>Product-ID</th>
        <th>Product Name</th>
        <th>Price SEK</th>
    <tr>
<?php
if(!empty($_POST['SelectedData'])) {
    foreach($_POST['SelectedData'] as $selected) {
            echo "<tr><td>".$selected.'';
            echo "</td></tr>";
    }
}
?>

所以,我的问题是:我怎样才能让所选产品填满整个表格,而不是像现在这样在一个栏目中加入?我确实用value='$id&$name&$price'传递了它,但是如何使用此值字符串将每个条目放在selected_products.php页面上的相应列中?

2 个答案:

答案 0 :(得分:5)

正如评论中已经回答的那样,您可以使用explode()来解决此问题。

foreach($_POST['SelectedData'] as $selected) {
    list($id, $name, $price) = explode("&", $selected);
    echo "<tr><td>".$id.'';
    echo "</td><td>".$name.'';
    echo "</td><td>".$price.'';
    echo "</td></tr>";
}

但这是一个相当糟糕的主意,因为它允许每个人用他们想要的任何东西填充它。这是因为每个人都可以发送他们想要的任何内容的帖子请求。更好的方法是将selected设置为项的id,然后使用项的id再次从数据库中读取所需的数据。这样,只能显示数据库中的项目。

答案 1 :(得分:3)

将字符串拆分为&amp ;.

explode("&",$selected);

这会创建一个数组,以单独的方式保存值。

[0] => 3
[1] => Samsung 960 Pro
[2] => 3150

好好看看你的项目;)

<强>更新 就像@mplungjan所说:用管道来分隔价值观。然后去

explode("|", $selected);