2012-01-28 2 views
1

Моего выхода, как это: - , когда я print_r ($aResultData), как показывают данные в флажке

Array ([0] => Array ([parent] => SK336 [child] => CP) [1] => Array ([parent] => SK336 [child] => PES) [2] => Array ([parent] => SK995 [child] => MS) [3] => Array ([parent] => SK995 [child] => LSW) [4] => Array ([parent] => SK995 [child] => GES) [5] => Array ([parent] => SK995 [child] => RSW)) 

Теперь я хочу, чтобы показать эти данные в флажок в PHP.

  parent child 
checkbox SK336 CP 
checkbox SK336 PES 
checkbox SK995 MS 
checkbox SK995 LSW 
checkbox SK995 GES 
checkbox SK995 RSW 

и кнопку отправить

и после того, как отправить флажок (это зависит от того, что я выбран) и, наконец, он хранит в другой базе данных, что я могу сделать?

+0

Можете ли вы быть более точным, на которых Данные будут показаны вы хотите, чтобы все родители и ребенок должны быть показаны или только один – Sabari

+0

@Sabari :) Вопрос изменен – John

+0

Все еще есть путаница. Вы хотите установить флажок как для родительского, так и для дочернего или jsut one checkbox и показать родителя и ребенка ?? – Sabari

ответ

1

Вы можете сделать так:

$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"); 
     } 
} 

Эта вещь работает :)

+0

:) Точно, но я также хочу выбрать все, если я выберу родителя, посмотри мой вопрос http://stackoverflow.com/questions/9038135/how-to-show-data-with-checkboxes-in-zend-framework – John

+0

Пожалуйста см. мой отредактированный код для вашего ответа – Sabari

+0

:) это работает для меня спасибо, но я хочу, когда я отменил выбор любого из дочерних элементов, например, LSW, затем после его родительского примера, например, SK995 также автоматически отменил выбор – John

Смежные вопросы