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


Мгновенная подгрузка связанных полей

ajax связь подгрузка полей

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

#1 Александр Jet

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

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

Отправлено 20 Декабрь 2017 - 21:47

Есть поле типа связь Клиент, а также поле Телефон. В поле Телефон загружается значение из таблицы Клиенты:

$line['Телефон'] = $line['Клиент']['Телефон']

Нужно чтобы вычисление срабатывало до сохранения записи, как это реализовано в подтаблицах. Как можно сделать загрузку мгновенной, есть ли примеры кода?

#2 plotnikov

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

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

Отправлено 21 Декабрь 2017 - 07:00

1. на яваскрипте (аякс) писать обработчик самому.

2. В 10-й версии есть опция изменения полей без общего редактирования записи (из просмотра). Там обновление на лету по задумке работать должно, на практике на сколько помню (по первым версиям) срабатывало не всегда, но сейчас возможно уже все отладили (я быстрое редактирование отключил, не пользуюсь по ряду причин). Но, опять же, при полном редактировании таблицы без первого пункта не обойтись.

#3 Александр Jet

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

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

Отправлено 23 Декабрь 2017 - 12:38

Цитата

на яваскрипте (аякс) писать обработчик самому.
Может быть кто-то такое уже делал? Есть ли примеры?

#4 maksn

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

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 23 Декабрь 2017 - 20:28

Просмотр сообщенияАлександр Jet (23 Декабрь 2017 - 12:38) писал:

Может быть кто-то такое уже делал? Есть ли примеры?

В поле Клиент ставите JS
function onchange_{$one_field.id}()
{
  var client_id = document.getElementById('value1111').value;//где 1111 - ID поля связи с клиентом

  $.ajax({
  type: "POST",
  url: "/ВАШ/ПУТЬ/К ФАЙЛУ/обработчика_ajax.php",
  data: "client_id="+client_id+"&csrf="+csrf,
  success: function(msg){
	var answer = msg;
	document.getElementById("value2222").value = answer; // 2222 - ID поля с телефоном в вашей таблице
	 }
  });
}
$('#value{$one_field.id}').change(onchange_{$one_field.id});

Сам обработчик кладете в папку "/modules/public/" или любую другую, в папке "/modules/"

Код обработчика ajax
<?php
/********************************
В данном примере файл размещен в папке "/modules/public/"
********************************/
session_start();
if (!defined('__DIR__'))
	define('__DIR__', dirname(__FILE__));

$modules_dir = 'modules';
$dir = explode($modules_dir , __DIR__);
define('CB_ROOT',$dir[0]);

$config['script_noauth']=1;

include_once(CB_ROOT.'common.php');
if (isset($_SESSION[$ses_id]['login_redirect']))
   unset($_SESSION[$ses_id]['login_redirect']);
$phone = "";
if(intval($_POST['client_id']))
{
  $client_id = intval($_POST['client_id']);
  $sql_phone = "
  SELECT `fXXX` as phone FROM `".DATA_TABLE."YY`
  WHERE `id` = ".$client_id."
  ";
  // fXXX - поле с телефоном
  //`".DATA_TABLE."YY` - таблица Клиенты
  $res_phone = sql_query($sql_phone);
  while($row_phone=sql_fetch_assoc($res_phone))
	$phone = trim($row_phone['phone']);

}
echo $phone;

Сообщение отредактировал maksn: 23 Декабрь 2017 - 20:30

"...Сижу, паяю. CRM починяю..."
Мои разработки

#5 Александр Jet

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

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

Отправлено 23 Декабрь 2017 - 20:48

Просмотр сообщенияmaksn (23 Декабрь 2017 - 20:28) писал:

В поле Клиент ставите JS
Большое спасибо, буду разбираться!





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

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