Как вставить значение флажка jstree в базу данных

#javascript #php #jquery #checkbox #jstree

#javascript #php #jquery #флажок #jstree

Вопрос:

 <script type="text/javascript">
$(document).ready(function(){ 
    //fill data to tree  with AJAX call
    $('#tree-container').jstree({
	'plugins': ["wholerow", "checkbox"],
        'core' : {
            'data' : {
                "url" : "response.php",
                "dataType" : "json" // needed only if you do not supply JSON headers
            }
        }
    })
});
</script>


 <div id="tree-container"></div>  
 <?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "defectsystem";

$conn = mysqli_connect($servername, $username, $password, $dbname) or die("Connection failed: " . mysqli_connect_error());
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %sn", mysqli_connect_error());
    exit();
}
$sql = "SELECT * FROM `treeview_items` ";
$res = mysqli_query($conn, $sql) or die("database error:". mysqli_error($conn));
	//iterate on results row and create new index array of data
	while( $row = mysqli_fetch_assoc($res) ) { 
		$data[] = $row;
	}
	$itemsByReference = array();

// Build array of item references:
foreach($data as $key => amp;$item) {
   $itemsByReference[$item['id']] = amp;$item;
   // Children array:
   $itemsByReference[$item['id']]['children'] = array();
   // Empty data class (so that json_encode adds "data: {}" ) 
   $itemsByReference[$item['id']]['data'] = new StdClass();
}

// Set items as children of the relevant parent item.
foreach($data as $key => amp;$item)
   if($item['parent_id'] amp;amp; isset($itemsByReference[$item['parent_id']]))
      $itemsByReference [$item['parent_id']]['children'][] = amp;$item;

// Remove items that were added to parents elsewhere:
foreach($data as $key => amp;$item) {
   if($item['parent_id'] amp;amp; isset($itemsByReference[$item['parent_id']]))
      unset($data[$key]);
}
// Encode:
echo json_encode($data);
?>  

Я успешно создал jstree с флажком. Однако, как я могу вставить значение флажка в базу данных, когда я нажимаю на него и отправляю.

Спасибо, если кто-нибудь может мне помочь!! Если возникнут какие-либо вопросы, можете задать мне комментарий ниже.

Ответ №1:

Попробуйте что-нибудь вроде этого:

 var array = [];
// create an array

$.each($("input[name='user_permission']:checked"), function(){
    permissions.push($(this).val());
});
// Iterate over each checkbox which is checked and push its value in the array variable.
  

Пример:

 ......
var permissions = [];
$.each($("input[name='user_permission']:checked"), function(){
    permissions.push($(this).val());
});

$.ajax({
    url         : 'add_permission.php',
    method      : 'post',
    data       :
    {
        permissions : JSON.stringify(permissions)
    }
    ....
});
// After complete iteration you will get the value of each checked checkbox. 
  

Теперь вставьте его в базу данных с помощью вызова ajax

Комментарии:

1. Да, я нашел много похожего кода, подобного этому.

2. Я использую его в своем проекте, и он работает как шарм

3. Например, функция submitMe() { var checked_ids = []; $(‘#your-tree-id’).jstree(‘get_checked’,null,true).each(функция(){ checked_ids.push(this.id ); }); //установка значения скрытополе document.getElementById(‘jsfields’).value = checked_ids.join(«,»); } </script>

4. Понятно, можешь объяснить подробнее?

5. Спасибо! Еще один вопрос. У меня было три уровня в моем jstree. Например, компания — уровень 1, проект — уровень 2, фаза — уровень 3. Я хочу вставить его в таблицу, содержащую 3 столбца. Как я могу это сделать?