Мгновенное сохранение данных в Представлениях
#1
Отправлено 15 Март 2012 - 22:17
Вопрос к разработчикам и, может быть, кто-то уже реализовал у себя.
Есть ли возможность осуществлять мгновенное сохранение данных в представлениях так, как это реализовано в функции "Редактирование в таблице". Не очень хочется делать заново то, что уже предусмотрено в программе.
С уважением.
#2
Отправлено 15 Март 2012 - 22:26
при изменении поля данные отправляются в базу
Творческая группа "ТАВР".
www.TAVR.pro Художественная ковка, металлоконструкции.
www.СтолМет.рф Складные столы, стулья и системы для их хранения
#3
Отправлено 18 Март 2012 - 11:59
Подскажите, пожалуйста, как это реализовать?
С уважением,
Дмитрий
#4
Отправлено 19 Март 2012 - 16:54
Не подскажете, можно ли это реализовать тем набором скриптов, которые уже используются в программе?
С уважением.
#5
Отправлено 19 Март 2012 - 18:03
а я постараюсь объяснить, ссылаясь на ваше описание
Творческая группа "ТАВР".
www.TAVR.pro Художественная ковка, металлоконструкции.
www.СтолМет.рф Складные столы, стулья и системы для их хранения
#6
Отправлено 19 Март 2012 - 20:33
andibrag (19 Март 2012 - 18:03) писал:
а я постараюсь объяснить, ссылаясь на ваше описание
Ну грубо говоря так:
Таблица 1 - столбцы: ID1, Наименование1
Таблица 2 - столбцы: ID2, Наименование2
Табилца 3 - столбцы: ID3, Наименование1, Наименование 2, Сумма
Все это сводим в представление, которое выглядит как таблица, в заголовках строк Наименование1, в заголовках столбцов - Наименование2, на пересечении - ячейки с соответствующими значениями Суммы из представления.
Задача - изменяем значение в ячейке представления, и соответствующие значения сразу же сохраняются в соответствующих полях Таблицы 3.
Вот как-то примерно так.
С уважением.
#7
Отправлено 19 Март 2012 - 20:48
Творческая группа "ТАВР".
www.TAVR.pro Художественная ковка, металлоконструкции.
www.СтолМет.рф Складные столы, стулья и системы для их хранения
#9
Отправлено 20 Март 2012 - 20:35
Я бы сделал ее связанной с Таблицей_1 и добавил бы в нее поле связи с Таблицей_2.
Т.о. будут охвачены все возможные варианты, проще сформировать код и организовать передачу данных в нужную запись.
Касаемо вопроса темы смысл в следующем:
1) все поля, которые подлежат редактированию, должны быть одного класса, например class="edit_field", и иметь собственный id - id="id_COL_ROW", где COL - ID строки Таблицы_1 и ROW - ID строки Таблицы_2, соответственно.
2) средствами jquery объявляем обработчик для события change для всех полей с этим классом
3) в обработчике через ajax вызываем php и передаем ряд параметров, включая значение поля, которое вызвало событие, т.е. в которое внесли новые данные
4) в случае удачной выгрузки - поле можно подсветить, в случае ошибки - вывести окно с предупреждающим сообщением
Выглядит это так.
$(document).ready(function(){
$(".edit_field").bind("change",function(){
var elem = $(this);
str_id = elem.attr("id");
str_id1 = str_id.replace(/id_(\d+)_(\d+)/,"$1"); // выделяем id таблицы 1
str_id2 = str_id.replace(/id_(\d+)_(\d+)/,"$2"); // выделяем id таблицы 2
var new_data={};
new_data['Сумма']=elem.val();
new_data['id1']=str_id1;
new_data['id2']=str_id2;
new_data['Статус записи']=0;
$.ajax({
dataType: "html",
cache: false,
url: "../cb_modules/cb_sqlquery.php",
cache: false,
data: {
typeQuery: '1',
tableName: 'Таблица_3',
arrData: new_data,
whereStr: '`id1`=' + str_id1 + 'AND `id2`=' + str_id2 //где id1 и id2 - поле связи Таблицы_3 с таблицами 1 и 2, соответственно
},
success: function(){
// любые действия в случае удачной выгрузки
// например кратковременно подсветить поле
},
error: function(){
alert('Ошибка передачи данных!'); // как вариант
}
});
});
});
Теперь о файле cb_sqlquery.phpИзначально он был написан для изменения (режим update) или внесения (режим insert) данных в КБ.
В первом режиме возвращает true или false в зависимости от того - удалось или нет обновить данные (можно использовать по своему усмотрению), во-втором случае - id вновь созданной строки. Код привожу, быть может пригодится.
<?php
// Включаем модули и подключаемся к клиентской базе
require_once $_SERVER['DOCUMENT_ROOT'] . "/cb/include/config.php";
require_once $_SERVER['DOCUMENT_ROOT'] . "/cb/include/mysql_connect.php";
require_once $_SERVER['DOCUMENT_ROOT'] . "/cb/include/functions1.php";
require_once $_SERVER['DOCUMENT_ROOT'] . "/cb/include/functions2.php";
require_once $_SERVER['DOCUMENT_ROOT'] . "/cb/include/constants.php";
$typeQuery = $_REQUEST['typeQuery']; // тип запроса INSERT или UPDATE
$arrData = $_REQUEST['arrData']; // массив с данными
$tableName = $_REQUEST['tableName']; // название таблицы
$whereStr = $_REQUEST['whereStr']; // условия отбора
switch ($typeQuery) {
case 1;
case 'update':
$res=update_query($arrData,$tableName,$whereStr);
break;
case 2;
case 'insert';
default:
$res=insert_query($arrData,$tableName);
break;
}
echo $res;
?>
В Вашем случае, для автоматического формирования таблицы, код будет выглядеть примерно так:<?php // Включаем модули и подключаемся к клиентской базе require_once $_SERVER['DOCUMENT_ROOT'] . "/cb/include/config.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/cb/include/mysql_connect.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/cb/include/functions1.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/cb/include/functions2.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/cb/include/constants.php"; $arrData = $_REQUEST['arrData']; // массив с данными $tableName = $_REQUEST['tableName']; // название таблицы $whereStr = $_REQUEST['whereStr']; // условия отбора $res=update_query($arrData,$tableName,$whereStr); if (!$res) insert_query($arrData,$tableName); // если update не удался - строки с такими параметрами не существует, следовательно создаем новую ?>Успехов.
Творческая группа "ТАВР".
www.TAVR.pro Художественная ковка, металлоконструкции.
www.СтолМет.рф Складные столы, стулья и системы для их хранения
#10
Отправлено 20 Март 2012 - 22:23
Огромное спасибо за столь подробный ответ!
Будем разбираться что к чему.
С уважением.
#11
Отправлено 20 Март 2012 - 22:42
Творческая группа "ТАВР".
www.TAVR.pro Художественная ковка, металлоконструкции.
www.СтолМет.рф Складные столы, стулья и системы для их хранения
Количество пользователей, читающих эту тему: 2
0 пользователей, 2 гостей, 0 анонимных













