PHP数组/表单post


PHP arrays/ form post

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

我有一个表单,我提交它,里面有一个表。表的每一行都有一个复选框,您可以选中该复选框以订购产品,还有一个选择字段用于选择产品的收费,当然还有价格(在选择字段中,因此我有一个价格值)。

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

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

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

我能做什么?

这是我尝试过的每个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].";
}

($bestell_tab我放在PHP邮件提交…)

如果有人能帮助一个php新手一个"简单"的解决方案,那将是伟大的!

这里的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>

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>