Php 获取mysql查询填充的webform中所有复选框的状态
我有一个由mysql对象填充的Web表单 这是我当前的网络表单: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
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');
});