選択した値でツリーを生成するのはどうですか? 選択したキーを保存し、編集時に、選択したキーを使用して追加の json 配列を使用してツリーを生成します。しかし、問題は、mysql を介して画像の順序を変更すると、キーが実際の値を表していないことです。
これは、深さ = 1 でツリーの json 配列を作成する方法です。
/*** get image tree structure ***/
$i = 0; $j = 0;//$j = 0; $l = 0;
$counter = 0;
$whole_tree = $this->cms_model->get_tree_big_array('0');
foreach ($whole_tree as $node_key => $node_array) {
foreach ($node_array as $key_name => $node_element_value) {
if($key_name == 'title'):
$new_array[$i][$key_name] = $node_element_value;
elseif($key_name == 'filename'):
$new_array[$i][$key_name] = $node_element_value;
elseif($key_name == 'id'):
$new_array[$i][$key_name] = $node_element_value;
elseif($key_name == 'is_folder'):
$new_key_name = 'isFolder';
if($node_element_value == '1'):
$new_node_element_value = 'true';
$new_array[$i][$new_key_name] = $new_node_element_value;
$cur_id = $node_array['id'];
$children = $this->cms_model->get_children_array($cur_id);
foreach ($children as $child_key_name => $child_element_value) {
foreach ($child_element_value as $super_child_key_name => $childnode_element_value) {
if($super_child_key_name == 'title'):
$new_array[$i]['children'][$child_key_name][$super_child_key_name] = $childnode_element_value;
elseif($super_child_key_name == 'filename'):
$new_array[$i]['children'][$child_key_name][$super_child_key_name] = $childnode_element_value;
elseif($super_child_key_name == 'id'):
$new_array[$i]['children'][$child_key_name][$super_child_key_name] = $childnode_element_value;
endif;
}
$counter++;
}
else:
$new_node_element_value = 'false';
endif;
$cur_id = $node_array['id'];
$children = $this->cms_model->get_children_array($cur_id);
endif;
$j++;
}
$i++;
}
//print_r($new_array);
$json_tree = json_encode($new_array);
$data['json'] = $json_tree;
上記は dynatree スクリプトです。ページの写真をいくつか選択し、選択されたものとアクティブ化されたもののプレビューを作成します。この場合、私は写真を持っています。
jQuery(function(){
jQuery("#tree").dynatree({
checkbox: true,
onPostInit: function(isReloading, isError){
var data = <?php echo $json;?>; // the whole json array tree object
var array = <?php echo $key_array;?>; // these the stored keys where selected from last post.
var imgarray = <?php echo $img_array;?>; // these are the selected images id's
for(i=0; i<array.length; i++){
var tree = jQuery("#tree").dynatree("getTree");
tree.getNodeByKey(array[i]).select(); // i'm selecting on load the selected nodes using this function.
// what i want is to select the nodes using the $img_array array in order to have
// an independence in what order the nodes are generated
}
},
onActivate: function(node) {
var site_url = '<?php echo site_url(); ?>';
var controller_path = '/admin/actions/get_image_path/';
var image_id = node.data.id;
jQuery.ajax({
url: site_url+controller_path+image_id,
type: 'GET',
datatype: 'html',
processData: false,
success: function(msg){
jQuery('.image-previewer').css({display: 'block'});
jQuery('.image-previewer').html(msg);
}
});
},
onSelect: function(flag, node) {
//alert(node.data.id);
if(flag){
jQuery('<div id="'+node.data.id+'">').css({
display: 'block',
borderRadius: '3px',
margin: '0 0 10px 0',
})
.appendTo('.list');
jQuery('<span id="'+node.data.id+'" style="padding:0px 5px; line-height:40px; margin-right:5px; float:left; background:#fffccc;">Εχεις επιλέξει: '+node.data.filename+' </span>').appendTo('div#'+node.data.id+'');
jQuery('<img id="img_'+node.data.id+'" src="http://pinecone.gr/files/thumbs/'+node.data.filename+'" style="float:left; margin-right:5px">').appendTo('div#'+node.data.id+'');
jQuery('<span>').css({
lineHeight: '40px',
display: 'block',
float: 'left',
id: 'span_'+node.data.id
})
jQuery('<input>',
{
type: 'hidden',
name: 'img_array[]',
id : 'input_'+node.data.id,
value: 'img_'+node.data.id
}).appendTo('div#'+node.data.id+'');
jQuery('<input>',
{
type: 'hidden',
name: 'keys_array[]',
id : 'inputkeys_'+node.data.id,
value: node.data.key
}).appendTo('div#'+node.data.id+'');
jQuery('<br clear="all" />').appendTo('div#'+node.data.id+'');
jQuery('input#input_'+node.data.id+'').attr({ value: node.data.id})
}else if(!flag){
jQuery('.list div#'+node.data.id+'').remove();
}
},
persist: false,
children:
<?php echo $json; ?>
});
});
データベース内の画像レコードの順序を変更したり、画像を追加したりすると、構造が変更され、データの整合性に問題があるため、現在のレコードの選択されたキーは実際のものではなくなります。解決策として何を提案しますか。前もって感謝します