Перейти к содержимому


Мгновенное сохранение данных в Представлениях


Сообщений в теме: 10

#1 dimichspb

    Активный участник

  • Пользователи
  • PipPipPip
  • 55 сообщений

Отправлено 15 Март 2012 - 22:17

Добрый день!


Вопрос к разработчикам и, может быть, кто-то уже реализовал у себя.

Есть ли возможность осуществлять мгновенное сохранение данных в представлениях так, как это реализовано в функции "Редактирование в таблице". Не очень хочется делать заново то, что уже предусмотрено в программе.


С уважением.

#2 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 357 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 15 Март 2012 - 22:26

через ajax можно
при изменении поля данные отправляются в базу

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#3 dimichspb

    Активный участник

  • Пользователи
  • PipPipPip
  • 55 сообщений

Отправлено 18 Март 2012 - 11:59

Спасибо!

Подскажите, пожалуйста, как это реализовать?

С уважением,
Дмитрий

#4 dimichspb

    Активный участник

  • Пользователи
  • PipPipPip
  • 55 сообщений

Отправлено 19 Март 2012 - 16:54

Уважаемые разработчики,


Не подскажете, можно ли это реализовать тем набором скриптов, которые уже используются в программе?


С уважением.

#5 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 357 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 19 Март 2012 - 18:03

опишите более конкретно, можно даже пример привести: таблицу, поля
а я постараюсь объяснить, ссылаясь на ваше описание

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#6 dimichspb

    Активный участник

  • Пользователи
  • PipPipPip
  • 55 сообщений

Отправлено 19 Март 2012 - 20:33

Просмотр сообщенияandibrag (19 Март 2012 - 18:03) писал:

опишите более конкретно, можно даже пример привести: таблицу, поля
а я постараюсь объяснить, ссылаясь на ваше описание

Ну грубо говоря так:
Таблица 1 - столбцы: ID1, Наименование1
Таблица 2 - столбцы: ID2, Наименование2
Табилца 3 - столбцы: ID3, Наименование1, Наименование 2, Сумма

Все это сводим в представление, которое выглядит как таблица, в заголовках строк Наименование1, в заголовках столбцов - Наименование2, на пересечении - ячейки с соответствующими значениями Суммы из представления.

Задача - изменяем значение в ячейке представления, и соответствующие значения сразу же сохраняются в соответствующих полях Таблицы 3.


Вот как-то примерно так.


С уважением.

#7 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 357 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 19 Март 2012 - 20:48

само представление уже организовали?

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#8 dimichspb

    Активный участник

  • Пользователи
  • PipPipPip
  • 55 сообщений

Отправлено 19 Март 2012 - 22:17

Просмотр сообщенияandibrag (19 Март 2012 - 20:48) писал:

само представление уже организовали?

Конечно, с этим проблем нет. Вопрос в том, какие скрипты подключить и какие функции использовать в событиях.

#9 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 357 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 20 Март 2012 - 20:35

Предложенная Вами структура хранения данных может иметь варианты исполнения. Речь о Таблице_3.
Я бы сделал ее связанной с Таблицей_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 dimichspb

    Активный участник

  • Пользователи
  • PipPipPip
  • 55 сообщений

Отправлено 20 Март 2012 - 22:23

Добрый вечер!


Огромное спасибо за столь подробный ответ!

Будем разбираться что к чему.


С уважением.

#11 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 357 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 20 Март 2012 - 22:42

Пожалуйста.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения






Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных