как показать данные в флажке - PullRequest
1 голос
/ 28 января 2012

Мой вывод такой: - когда я 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

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

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

1 Ответ

1 голос
/ 28 января 2012

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

$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:

Если вы хотите установить флажок для всех дочерних элементов, если выбран родительский элемент, вам нужно c = использовать 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 CODE:

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

Новое редактирование:

Если вы хотите снять флажок с родительского элемента, если дочерний элемент не отмечен, и с помощью родительского элемента, если выбран весь дочерний элемент, вы можете использовать это:

КОД 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 CODE:

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

Эта штука работает:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...