Вы можете сделать так:
$parents = array();
$childs = array();
foreach ($aResultData as $aResultDataValue) {
$parents [$aResultDataValue['parent']] = $aResultDataValue['parent'];
$childs [$aResultDataValue['parent']][] = $aResultDataValue['child'];
}
foreach ($parents as $parent) {
echo '<div>';
echo '<div><input type="checkbox" name="parents[]" value="'.$parent.'" id="parents_'.$parent.'"/>
<label for="parents_'.$parent.'">'.$parent.'</label></div>';
foreach ($childs[$parent] as $child) {
echo '<div style="margin-left:15px;"><input type="checkbox" name="childs[]" value="'.$child.'" id="childs_'.$child.'"/>
<label for="childs_'.$child.'">'.$child.'</label></div>';
}
echo '</div>';
}
Надеется, что это помогает
EDIT:
Если вы хотите, чтобы проверить все ребенок флажок, если родитель выбран, то вам необходимо с = использовать jQuery, а также пришлось изменить код PHP:
Код PHP:
$parents = array();
$childs = array();
foreach ($aResultData as $aResultDataValue) {
$parents [$aResultDataValue['parent']] = $aResultDataValue['parent'];
$childs [$aResultDataValue['parent']][] = $aResultDataValue['child'];
}
foreach ($parents as $parent) {
echo '<div>';
$parent_value = "'$parent'";
echo '<div><input type="checkbox" name="parents[]" value="'.$parent.'" id="'.$parent.'" class="parentCheck"/>
<label for="parents_'.$parent.'">'.$parent.'</label></div>';
foreach ($childs[$parent] as $child) {
echo '<div style="margin-left:15px;"><input type="checkbox" name="childs[]" value="'.$child.'" id="childs_'.$child.'" class="child_'.$parent.'"/>
<label for="childs_'.$child.'">'.$child.'</label></div>';
}
echo '</div>';
}
JS КОД:
jQuery(document).ready(function(){
// add multiple select/deselect functionality
jQuery(".parentCheck").click(function() {
var childId = jQuery(this).attr('id');
jQuery('.child_'+childId).attr('checked', this.checked);
});
});
NEW EDIT:
Если вы хотите, чтобы снять родительский, когда ребенок бесконтрольно и проверить родителя, когда выбраны все ребенок, которого вы можете использовать этот :
PHP КОД:
$parents = array();
$childs = array();
foreach ($aResultData as $aResultDataValue) {
$parents [$aResultDataValue['parent']] = $aResultDataValue['parent'];
$childs [$aResultDataValue['parent']][] = $aResultDataValue['child'];
}
foreach ($parents as $parent) {
echo '<div>';
$parent_value = "'$parent'";
echo '<div><input type="checkbox" name="parents[]" value="'.$parent.'" id="'.$parent.'" class="parentCheck"/>
<label for="parents_'.$parent.'">'.$parent.'</label></div>';
foreach ($childs[$parent] as $child) {
$child_value = "'$child'";
echo '<div style="margin-left:15px;"><input type="checkbox" name="childs[]" value="'.$child.'" id="childs_'.$child.'" class="child_'.$parent.'" onclick="checkParent('.$parent_value.','.$child_value.');"/>
<label for="childs_'.$child.'">'.$child.'</label></div>';
}
echo '</div>';
}
JS КОД:
jQuery(document).ready(function(){
// add multiple select/deselect functionality
jQuery(".parentCheck").click(function() {
var childId = jQuery(this).attr('id');
jQuery('.child_'+childId).attr('checked', this.checked);
});
});
function checkParent(parentId,childId) {
if(jQuery(".child_"+parentId).length == $(".child_"+parentId+":checked").length) {
$('#'+parentId).attr("checked", "checked");
} else {
$('#'+parentId).removeAttr("checked");
}
}
Эта вещь работает :)
Можете ли вы быть более точным, на которых Данные будут показаны вы хотите, чтобы все родители и ребенок должны быть показаны или только один – Sabari
@Sabari :) Вопрос изменен – John
Все еще есть путаница. Вы хотите установить флажок как для родительского, так и для дочернего или jsut one checkbox и показать родителя и ребенка ?? – Sabari