Php 获取mysql查询填充的webform中所有复选框的状态

Php 获取mysql查询填充的webform中所有复选框的状态,php,html,jquery,mysql,Php,Html,Jquery,Mysql,我有一个由mysql对象填充的Web表单 这是我当前的网络表单: if($statement_opc->execute()) { $numero_opciones = 0; $result_opc = $statement_opc->fetchAll(); foreach($result_opc as $row_opc) { if ($row_opc['producto'] == $row['id']) { $n

我有一个由mysql对象填充的Web表单

这是我当前的网络表单:

if($statement_opc->execute())
{
    $numero_opciones = 0;
    $result_opc = $statement_opc->fetchAll();
    foreach($result_opc as $row_opc)
    {
        if ($row_opc['producto'] == $row['id']) {
            $numero_opciones = $numero_opciones + 1;
            $output .= '
                <div class="checkbox">
                    <label><input type="checkbox"  id="opcion'.$row["id"].'"  value="">'.$row_opc['nombre'].' (+ $'.$row_opc['precio'].')</label>
                </div>
                <input type="hidden" name="hidden_name" id="opcion_nombre'.$row["id"].'" value="'.$row_opc["nombre"].'" />
                <input type="hidden" name="hidden_name" id="opcion_precio'.$row["id"].'" value="'.$row_opc["precio"].'" />
            ';

        }
    }
}
$cat_anterior = $row['id_cat'];

$output .= '
    <input type="text" name="quantity" id="quantity' . $row["id"] .'" class="form-control" value="1" style="text-align:right;"/>
    <br>
    <input type="hidden" name="hidden_name" id="name'.$row["id"].'" value="'.$row["name"].'" />
    <input type="hidden" name="hidden_price" id="price'.$row["id"].'" value="'.$row["price"].'" />

    <div class="input-group">
        <span class="input-group-bt style="text-align:LEFT">
            <button type="button" class="btn btn-danger btn-number" name="restar"  id="'.$row["id"].'" " >
                <span class="glyphicon glyphicon-minus"></span>
            </button>
        </span>

        <span class="input-group-btn style="text-align:RIGHT">
            <button type="button" class="btn btn-success btn-number-sumar" name="sumar" id="'.$row["id"].'"">
                <span class="glyphicon glyphicon-plus"></span>
            </button>
        </span>
    </div>

    <input type="button" name="add_to_cart" id="'.$row["id"].'" style="margin-top:5px;" class="btn btn-success form-control add_to_cart" value="Add to Cart" />

    </div>
    </div>
    </div>
    ';
}

//echo $titulo;
echo $output;
 
如您所见,我通过其产品id值获取所有对象,该值使用附录$row['id']

每个webform项可能有或没有其他对象,在本例中,新对象是由另一个MySQL查询填充的复选框。 我指的是网络表单的这一部分:

$numero_opciones = 0;
$result_opc = $statement_opc->fetchAll();
foreach($result_opc as $row_opc)
{
    if ($row_opc['producto'] == $row['id']) {
        $numero_opciones = $numero_opciones + 1;
        $output .= '
            <div class="checkbox">
                <label><input type="checkbox"  id="opcion'.$row["id"].'"  value="">'.$row_opc['nombre'].' (+ $'.$row_opc['precio'].')</label>
            </div>
            <input type="hidden" name="hidden_name" id="opcion_nombre'.$row["id"].'" value="'.$row_opc["nombre"].'" />
            <input type="hidden" name="hidden_name" id="opcion_precio'.$row["id"].'" value="'.$row_opc["precio"].'" />
            ';
        }
    }
}

我知道要理解我在问什么并不容易,但请耐心等待,询问有关我的问题的更多详细信息。

使用
。jquery中的class
选择器而不是
\id
选择器将返回所有匹配的元素。因此,在所有复选框中,向其添加一个特殊类,如下所示:

'<input type="checkbox" id="opcion'.$row["id"].'"  class="opcion_cbox"  value="">'
或者你也可以沿着这条线循环它们:

$(".opcion_cbox:checkbox:checked").each(function(){
    // do something with $(this) checkbox in a loop
});

如果您希望获得该“行id”,以便可以使用该id引用页面上的其他元素,则可以使用
数据变量

'<input type="checkbox" 
    id="opcion'.$row["id"].'" 
    class="opcion_cbox" 
    data-rowid="'. $row["id"] .'" 
    value="">'

或者更清楚地说,您可以将这些值本身作为php中的数据变量:

'<input type="checkbox" 
    id="opcion'.$row["id"].'" 
    class="opcion_cbox" 
    data-nombre="'. $row_opc["nombre"] .'" 
    data-precio="'. $row_opc["precio"] .'" 
    value="">'
// be sure to escape any double-quotes in nombre/precio


从这里开始,您可以使用每个复选框进行各种排序。如果您愿意,您可以在所有选项框上循环,然后检查是否选中了该框(如果您需要对所有框执行操作,而不仅仅是对选中的框执行操作)。

使用
.class
选择器获取所有复选框的数组。清理代码时,缩进和间距都很奇怪;)@难以置信的帽子,谢谢你的评论。我花了两天时间试图解决这个问题,我不确定是否理解你的建议。我将感谢一个实际的建议,根据你的意见。我已经实施了你的建议,它工作良好,它检测时,复选框被选中。但现在我需要的是获得复选框项的值,如:x检查编辑,我在您评论时添加了它;)还添加了一种不同的方法来将这些值传递给jquery,而不是使用隐藏输入(除非您需要表单POST的隐藏输入)。非常好,它工作正常,经过两天的尝试后非常高兴。我发现了一个问题,可能不难解决。目前至少有10种商店商品,其中一些有复选框。每个项目都有一个add_to_cart按钮,问题是当在任何项目上单击该按钮时,jquery函数$(“.opcion_cbox:checkbox:checked”)。每个(函数()正在阅读页面上的每个复选框,不仅是所选项目中的复选框……听起来有点超出了这个问题的范围。但是,是的,可能有什么东西在泄漏,或者有什么东西正在深层触发。很难从您的描述中确知。选择器*应该只有复选框(带有
checked=“checked”的复选框)
为它们设置)。
$(".opcion_cbox:checkbox:checked").each(function(){
    // do something with $(this) checkbox in a loop
});
'<input type="checkbox" 
    id="opcion'.$row["id"].'" 
    class="opcion_cbox" 
    data-rowid="'. $row["id"] .'" 
    value="">'
$(".opcion_cbox:checkbox:checked").each(function(){
    
    var rowid = $(this).data('rowid');

    var nombre = $("#opcion_nombre"+ rowid).val();
    var precio = $("#opcion_precio"+ rowid).val();

});
'<input type="checkbox" 
    id="opcion'.$row["id"].'" 
    class="opcion_cbox" 
    data-nombre="'. $row_opc["nombre"] .'" 
    data-precio="'. $row_opc["precio"] .'" 
    value="">'
// be sure to escape any double-quotes in nombre/precio
$(".opcion_cbox:checkbox:checked").each(function(){
    
    var nombre = $(this).data('nombre');
    var precio = $(this).data('precio');

});