Поиск по этому блогу

Показаны сообщения с ярлыком jquery. Показать все сообщения
Показаны сообщения с ярлыком jquery. Показать все сообщения

понедельник, 10 сентября 2018 г.

datatables server side processing ajax reload page остаться на странице

Здравствуйте!

Помимо настройки подгрузки данных через server-side-processing порой встаёт задача обновления загруженных данных. Зачастую это связано с изменением данных в таблице - например вы отредактировали строку и хотите обновить таблицу без перезагрузки страницы.

инструкция, полезное, ajax, datatables, jquery, программирование,

В данном случае можно использовать функцию:
$('#table_data').DataTable().ajax.reload(null, false);
В первом параметре передаётся callback который может быть вызван по завершению обновления таблицы. Второй параметр отвечает за возврат к первой странице ( false - строка и лимит записей остаются так как выбраны пользователем ; true - таблица возвращается к стандартному лимиту записей для показа и 1 странице ).

Лично у меня возникли глюки с данной функцией - она просто ничего не делала. Для работы пришлось добавить задержку в 1 секунду после редактирования и всё начало отрабатывать.
setTimeout(function(){$('#table_data').DataTable().ajax.reload(null, false);}, 1000);
Надеюсь пост был полезен.
Успехов и хорошего дня!

воскресенье, 9 сентября 2018 г.

datatables server side processing ajax

Здравствуйте!

При использовании в веб проекте таблиц зачастую все приходят к использованию очень крутого jquery скрипта под названием datatables. Полностью бесплатный ( версия без редактора ) и с кучей функций - обычно хватает за глаза.

инструкция, полезное, ajax, datatables, jquery, программирование,


Но в случае с использованием с большим количеством данных которые нельзя загрузить на страницу во избежание зависания браузера требуется подгружать данные используя ajax. Для этого в официальной инструкции имеется такой вариант загрузки данных как server side processing через post подтягивающий данные возвращённые php файлом.

Но к сожалению он не совсем корректно работает с русским языком ( точнее совсем не работает ). Имеется модифицированная версия данного класса а так же как производить инициализацию ( и передачу параметров если надо ):

$('#table_data').DataTable( { 
"processing": true, 
"serverSide": true, 
"order": [[ 0, "desc" ]], 
"ajax": "server_processing.php" 
});
В случае необходимости передачи параметров их можно передать в GET:
"ajax": "server_processing.php?page=index" 
server_processing.php:
<?php
//Primary el в таблице
$primaryKey = 'id'; 

//Имя таблицы для использования
$table_name = "указать имя";

//Перечисление элементов для вывода из таблицы
$columns = array(
array( 'db' => 'id',   'dt' => 0 )
);

// Информация для подключения к mysql
$sql_details = array(
    'user' => 'Имя_Пользователя',
    'pass' => 'Пароль',
    'db'   => 'Имя_Базы_Данных',
    'host' => 'Хост',
    'charset' => 'utf8'
);
require( 'ssp.class.php' );
echo json_encode(
    SSP::simple( $_GET, $sql_details, $table_name, $primaryKey, $columns )
);

?>
Так же требуется в директорию загрузить видоизменённый ssp.class.php

Надеюсь пост был полезен.
Успехов и хорошего дня!

среда, 29 августа 2018 г.

php multi image upload загрузка множества фото

Здравствуйте!

Встала тут задачка сделать загрузку множества фотографий с динамическими input . Да имеется возможность multiple но не всегда она удобна. Был найден и использован следующий вариант. Требует jQuery для работы.

php, js, jquery, html, программирование, инструкция, полезное,

HTML
<div class="field_wrapper">
<input type="file" name="photos[]" class="form-control">
</div>
<i class="add_button fa fa-plus">Добавить ещё</i> 
JS
<script type="text/javascript">
$(document).ready(function(){
    var maxField = 10;
    var addButton = $('.add_button');
    var wrapper = $('.field_wrapper');
    var fieldHTML = '<br><input type="file" name="photos[]" value="" class="form-control">';
    var x = 1;
   
    $(addButton).click(function(){
        if(x < maxField){
            $(wrapper).append(fieldHTML);
        }
    });
   
    $(wrapper).on('click', '.remove_button', function(e){
        e.preventDefault();
        $(this).parent('div').remove();
        x--;
    });
});
</script>
PHP
$total = count($_FILES['photos']['name']);
for( $i=0 ; $i < $total ; $i++ ) {
$tmpFilePath = $_FILES['photos']['tmp_name'][$i];
        $photo = generateFilename();
$photo.=".jpg";
move_uploaded_file($tmpFilePath, "../uploads/".$photo); 
          }

В коде так же используется самописная функция generateFilename которая возвращает созданное имя файла:

function generateFilename(){
$chars = 'abdefhiknrstyz123456789_';
$string = '';
for ($i = 0; $i < 30; $i++) {
$string .= substr($chars, rand(1, 24) - 1, 1);
}
return $string;
}


Надеюсь код был полезен.
Успехов и хорошего дня!