Php 将两个输入连接在一起(文本和隐藏)?
我在下面有一个循环,它显示一个数量框,并包含一个包含产品名称的隐藏字段 我想把这些联系在一起,所以如果在100个输入中,用户改变了输入90的数量,然后希望隐藏字段输入90与它联系起来 然后,这将为大于零的项目提供数量和产品名称Php 将两个输入连接在一起(文本和隐藏)?,php,html,Php,Html,我在下面有一个循环,它显示一个数量框,并包含一个包含产品名称的隐藏字段 我想把这些联系在一起,所以如果在100个输入中,用户改变了输入90的数量,然后希望隐藏字段输入90与它联系起来 然后,这将为大于零的项目提供数量和产品名称 <?php if(get_field('sizes')) { while(the_repeater_field('sizes')) { ?> <input type="text" name="quantity[]" value="0"> &l
<?php if(get_field('sizes')) {
while(the_repeater_field('sizes')) { ?>
<input type="text" name="quantity[]" value="0"> <?php the_title(); ?>
<input type="hidden" name="product[]" value="<?php the_title(); ?>">
<?php } } ?>
这是我正在处理的页面。如果你点击“获取报价单”,第二步就是上面的代码
@Sn0opy
foreach($_POST['quantity'] as $check) {
if($check > 0) {
$quantityresults .= $check."\n";
}
}
echo $quantityresults;
显然,您需要依次迭代这两个数组,以便查看产品的数量是否为非零,从而决定是否应该显示它 一般来说,
foreach
对于这项工作来说是一个笨拙的工具,方法是使用for
循环并使用同一计数器索引到两个数组中。但是,在此特定情况下,您可以轻松地将两个数组转换为一个数组,其中键是产品名称,数量是值,使用:
然后,您可以轻松地使用foreach
进行迭代:
foreach ($quantities as $product => $quantity) {
if ($quantity > 0) {
echo "$quantity x $product<br>";
}
}
foreach($product形式的数量=>$quantity){
如果($quantity>0){
回显“$quantity x$product
”;
}
}
显然,您需要依次迭代两个数组,以便查看产品的数量是否为非零,从而决定是否应显示该产品
一般来说,foreach
对于这项工作来说是一个笨拙的工具,方法是使用for
循环并使用同一计数器索引到两个数组中。但是,在此特定情况下,您可以轻松地将两个数组转换为一个数组,其中键是产品名称,数量是值,使用:
然后,您可以轻松地使用foreach
进行迭代:
foreach ($quantities as $product => $quantity) {
if ($quantity > 0) {
echo "$quantity x $product<br>";
}
}
foreach($product形式的数量=>$quantity){
如果($quantity>0){
回显“$quantity x$product
”;
}
}
我建议在数量数组中使用产品ID,如下所示:
<input type="text" name="quantity[<?php the_title(); ?>][]" value="0">
我建议在数量数组中使用产品ID,如下所示:
<input type="text" name="quantity[<?php the_title(); ?>][]" value="0">
Rob,我知道你有一个很好的答案,但你可能想知道一个重要的问题
通过发布独立的quantity[]
和products[]
,那么您就依赖于这两种序列化是相互一致的,即都是按DOM顺序序列化的,因此$\u POST['quantity']
和$\u POST['product']
的索引是按元素对应的。对我来说,这不是一个完全安全的假设——请参见所选答案
如果每个产品都有一个
字段,并用产品id表示和数量表示值命名,则更安全、更传统。因此,产品ID及其值保证对应
客户端和服务器端代码需要进行相应的审查。Rob,我知道你有一个很好的答案,但你可能想知道一个重要的问题
通过发布独立的quantity[]
和products[]
,那么您就依赖于这两种序列化是相互一致的,即都是按DOM顺序序列化的,因此$\u POST['quantity']
和$\u POST['product']
的索引是按元素对应的。对我来说,这不是一个完全安全的假设——请参见所选答案
如果每个产品都有一个
字段,并用产品id表示和数量表示值命名,则更安全、更传统。因此,产品ID及其值保证对应
客户端和服务器端代码需要进行相应的检查。即使我为几个输入填写了“1”,但实际上它只输出我填写的最后一个产品。@Rob:这应该可以。如果没有,那就意味着$\u POST
的内容与您发布的代码不符。多个产品是否具有相同的名称?所有名称都是唯一的。我已经用实际使用的代码更新了我的问题,以防里面有什么愚蠢的东西。@Rob:你必须对此进行一些基本的调试。阅读array\u combine
的说明,然后阅读print\r($\u POST)
和print\r($数量)
。到那时,问题就显而易见了。@Rob:几乎任何地方都可以。您只感兴趣的是$\u POST
,它是从开始和$quantities
开始的。尽管我为几个输入填写了“1”,但它实际上只输出了我填写的最后一个产品。@Rob:这应该行得通。如果没有,那就意味着$\u POST
的内容与您发布的代码不符。多个产品是否具有相同的名称?所有名称都是唯一的。我已经用实际使用的代码更新了我的问题,以防里面有什么愚蠢的东西。@Rob:你必须对此进行一些基本的调试。阅读array\u combine
的说明,然后阅读print\r($\u POST)
和print\r($数量)
。到那时,问题就显而易见了。@Rob:几乎任何地方都可以。您只对“开始”和“数量”中的$\u POST
感兴趣。我如何引用它来输出结果?这会使这个名字独一无二吗?我需要它是一样的。好吧,这样你引用的是确切的名称,在本例中是标题()的输出。我建议改为使用产品ID,因为您的产品标题可能包含通过$\u POST['quantity']['my wird@@product@@name!!']
进行引用的字符,例如,这些字符非常复杂。我无法让它使用此方法输出产品名称。我将用代码更新我的问题。肯定有办法合并两个数组并匹配行?我如何将其引用到输出t
<input type="text" name="quantity[<?php the_title(); ?>][]" value="0">