【问题标题】:PHP arrays/ form postPHP 数组/表单帖子
【发布时间】:2014-09-27 02:39:33
【问题描述】:

我之前在这里问过这个问题,但我不确定这个问题是否足够清楚或正确。所以现在我再问一次,我的解决方案不是100%对的!

我有一个表格并提交它,其中有一个表格。 表格的每一行都有一个复选框,您可以检查订购产品、选择产品费用的选择字段,当然还有价格(在选择字段中,所以我有一个价格值)。

要实现的目标是在邮件中设置块,如下所示:

product: greek salad xl
quantity: 4pcs.
price: 5.50$

product: tomatos
quantity: 8pcs.
price: 2.50$

....

所以我有这个,但价格总是取自第一个元素,所以,如果我选择第二个和第三个产品:价格取自第一个元素。数量取自第一个 - 它移动一个。

我能做什么?

这是我尝试过的(简单的)foreach PHP 设置(以及许多其他变体):

$product = $_POST['bestellung']; --> this is the checkbox that is  correct!
$quantity = $_POST['menge']; --> always shifted...
$price = $_POST['liq_preis']; --> always shifted...

foreach( $product as $key => $item ) {
$bestell_tab .= "\n\nProdukt: $item  \n\nStueckzahl: ".$quantity[$key]." \n\nPreis: ".$price[$key].";
}

(我在 PHP 邮件中提交的 $bestell_tab ...)

如果有人可以通过“简单”的解决方案帮助 php-greenhorn,那就太好了!

这里是 HTML 标记:

<select class="kat-preis" name="liq_preis[]"><option value="10.00">10.00</option></select>
<select class="1-100" name="menge[]"><option value="1">1</option><option value="2">2</option></select>
<input type="checkbox" name="bestellung[]" value="expl-tomatos">

编辑

array(14) {
["tablepress-23_length"]=>
string(2) "10"
["menge"]=>
array(6) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "2"
[3]=>
string(1) "2"
[4]=>
string(1) "2"
[5]=>
string(1) "2"
}
["liq_preis"]=>
array(6) {
[0]=>
string(4) "1.00"
[1]=>
string(4) "2.00"
[2]=>
string(4) "3.00"
[3]=>
string(4) "4.00"
[4]=>
string(4) "5.00"
[5]=>
string(4) "6.00"
}
["bestellung"]=>
array(5) {
[0]=>
string(9) "tomatos109"
[1]=>
string(9) "tomatos111"
[2]=>
string(9) "tomatos116"
[3]=>
string(9) "tomatos118"
[4]=>
string(9) "tomatos209"
}

在此,我点击了第二个产品。第一个是空的,但值不对。仅适用于产品名称“bestellung”吧

编辑

<td class="column-1">51234</td><td class="column-2">goodchoice</td><td class="column-3">tomatos from Spain</td><td class="column-4"><select class="kat-preis" name="liq_preis[]"><option value="1.00">10.00</option></select></td><td class="column-5">1.00 CHF</td><td class="column-6"><select class="1-100" name="menge[]"><option value="1">1</option><option value="2">2</option></select></td><td class="column-7"><input type="checkbox" name="bestellung[]" value="51234"> </td>

【问题讨论】:

  • 你的html是什么样子的
  • 这是一个正常工作的表格......(其中是一个表格,使用tablepress插件4 wordpress生成)最后,它是一个表格中的普通表格,就是这样。你认为是html的东西?
  • 是的,例如,您可能需要确保 name 属性上有括号 [] 以便将数组发送到服务器
  • 是的,我有括号,看我的编辑
  • 你能用 var_dump($_POST); 更新吗? ?

标签: php forms html-table html-email


【解决方案1】:

php代码变成:

product = $_POST['bestellung']; --> this is the checkbox that is  correct!
$quantity = $_POST['menge']; --> allways shifted...
$price = $_POST['liq_preis']; --> allways shifted...

foreach( $product as $item ) {
$bestell_tab .= "\n\nProdukt: ".$item."  \n\n
Stueckzahl: ".$quantity[$item]." \n\n
Preis: ".$price[$item];//here there was an error in original code - an extra "   
}

要使上述方法起作用,您必须将 bestsellung 的值放入其他两个的数组中。用户怎么会知道它是西红柿呢?总之,html变成了:

<table>
<td class="column-1">51234</td>
<td class="column-2">goodchoice</td>
<td class="column-3">tomatos from Spain</td>
<td class="column-4">
    <select class="kat-preis" name="liq_preis[51234]">
        <option value="1.00">10.00</option>
    </select>
</td>
<td class="column-5">1.00 CHF</td>
<td class="column-6">
    <select class="1-100" name="menge[51234]">
        <option value="1">1</option>
        <option value="2">2</option>
    </select>
</td>
<td class="column-7">
    <input type="checkbox" name="bestellung[]" value="51234"> 
</td>
</table>

【讨论】:

  • 谢谢你,它似乎工作。 - 对我来说,解决方案是我搜索的内容,但只是为了更好地理解:还有其他解决方案吗? - 这样我就不必在我的表中填写 100 多个值? ($product as $key => $item) 但我下次会尝试了解更多。再次:谢谢!
  • 重点是,我不能在每个块后面带一个空行,以便更好地阅读。
  • 嗯,“更好”的方法是从数据库中循环加载数据。这样你就执行一次,然后让程序执行 100 次。
  • 如果你不想要一个空行,删除一个\n
猜你喜欢
  • 2012-05-10
  • 1970-01-01
  • 2018-09-15
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
  • 1970-01-01
  • 2013-02-24
  • 2011-12-30
相关资源
最近更新 更多