将变量从一个表传递到另一个 PHP 页面中的另一个 [重复]
Posted
技术标签:
【中文标题】将变量从一个表传递到另一个 PHP 页面中的另一个 [重复]【英文标题】:Pass variables from one table to another in another PHP page [duplicate] 【发布时间】:2017-04-11 22:44:53 【问题描述】:我正在学校做一项作业,我们应该模拟一个网络零售商店,该商店通过 php 将产品从数据库发送到最终用户。然后,用户应该能够通过复选框将产品添加到购物车,然后按一个按钮将它们带到购物车,其中只有产品表中的选定项目应该显示。
我已经取得了一些很大的进步,但我被困在这个很小的问题上,即:我无法弄清楚如何在表格中呈现所选项目。让我向您展示我的产品表现在的样子:
还有代码:
<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
页面,如下所示:
还有代码:
<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
页面上的相应列中?
【问题讨论】:
你需要通过explode函数拆分字符串,但是如果你的产品名称是L&T
或者H&P
呢?
value='$id|$name|$price'
不要使用“&”,就像@mplungjan说的那样,使用管道“|”用于内爆一组值。
我建议使用自定义分隔符,而不是像 &
、|
等单个字符,例如 ~!~
【参考方案1】:
正如 cmets 中已经回答的那样,您可以使用 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 再次从数据库中读取您需要的数据。这样只能显示数据库中的项目。
【讨论】:
谢谢大家!我以前读过有关 explode 的文章,但我不确定如何使用它,或者它是否适用于我的项目。再次感谢大家!【参考方案2】:在 & 处分割你的字符串。
explode("&",$selected);
这将创建一个单独保存值的数组。
[0] => 3
[1] => Samsung 960 Pro
[2] => 3150
你的项目看起来不错;)
更新: 就像@mplungjan 说的:使用管道分隔值。那就去吧
explode("|", $selected);
【讨论】:
除非他有一台AT&T
电脑 - 请注意我 10 分钟前评论过这个
没错。他应该关心这个——但这就是他所要求的答案。
所以将其标记为我给出的评论中链接的副本以上是关于将变量从一个表传递到另一个 PHP 页面中的另一个 [重复]的主要内容,如果未能解决你的问题,请参考以下文章