Я сделал подобную штуку примерно так (понимаю - топорно, но - работает. Прошу строго не судить, если есть какие-нибудь полезные советы - буду рад, если поделитесь):
Задача: при выборе контрагента из списка, разложить его данные по полям формы.
Таблица:
id - id
UserId - регистрационный id юзера (оно мне надо было, вот и поставил - чтобы привязать вводимые данные к конкретному пользователю)
imyaorg - наименование организации - контрагента
contact - контактное лицо контрагента
telephon - телефон контактного лица контрагента
otkuda - адрес контрагента
Выпадающий список "kontragent" с кодом в "Элементы":
//<code>
// Prepare the empty array
$items = array();
$user = JFactory::getUser();
$userid2 = $user->get('id');
// Prepare the database connection
$db = JFactory::getDbo();
// Keep this if you'd like a "Please select" option, otherwise comment or remove it
$items[] = "|Выбрать[c]";
// Run the SQL query and store it in $results
$db->setQuery("SELECT * FROM #__zzz_kontragent WHERE UserId = $userid2");
$results = $db->loadObjectList();
// Now, we need to convert the results into a readable RSForm! Pro format.
// The Items field will accept values in this format:
// value-to-be-stored|value-to-be-shown
// Eg. m|M-sized T-shirt
foreach ($results as $result) {
$value = $result->id;
$label = $result->imyaorg;
$items[] = $value.'|'.$label;
}
// Multiple values are separated by new lines, so we need to do this now
$items = implode("\n", $items);
// Now we need to return the value to the field
return $items;
//</code>
Можно, разумеется, воспользоваться и стандартным вариантом, просто мне надо было привязать к юзеру.
Далее, "Свойства" - "CSS и Javascript", ссылка на <script src="
http://site.ru/modules/mod_base/kaadres.js"></script>
Код:
function getkaadres(){
var kontragent = $('#kontragent :selected').val();
$.ajax({
type: "POST",
url: "http://site.ru/modules/mod_base/kontragent.php",
data: {kontragent:kontragent}
}).done(function( otkuda )
{
$("#kontragentadres").val(otkuda);
})
var kontragent = $('#kontragent :selected').val();
$.ajax({
type: "POST",
url: "http://site.ru/modules/mod_base/kacontact.php",
data: {kontragent:kontragent}
}).done(function( contact )
{
$("#kacontact").val(contact);
});
var kontragent = $('#kontragent :selected').val();
$.ajax({
type: "POST",
url: "http://site.ru/modules/mod_base/katel.php",
data: {kontragent:kontragent}
}).done(function( telephon )
{
$("#katel").val(telephon);
});
}
Три скрипта php (kontragent.php - адрес организации, katel.php - телефон контактного лица, kacontact.php - контактное лицо):
kontragent.php (адрес организации):
<?php
//Подключение к базе данных
$DBASE = mysql_connect("localhost","root", "") or die("Could not connect: " . mysql_error());
mysql_select_db("site") or die("Could not select database");
mysql_query("SET NAMES utf8");
if($_POST['kontragent'] != ''){$kontragent = $_POST['kontragent'];}else{unset($kontragent);}
if(isset($kontragent)){
$otkuda = mysql_query("SELECT otkuda FROM x6yzj_zzz_kontragent WHERE id = '$kontragent'");
$row_otkuda = mysql_fetch_array($otkuda);
$kontragentadres = $row_otkuda['otkuda'];
echo "$kontragentadres";
}
?>
katel.php<?php
//Подключение к базе данных
$DBASE = mysql_connect("localhost","root", "") or die("Could not connect: " . mysql_error());
mysql_select_db("site") or die("Could not select database");
mysql_query("SET NAMES utf8");
if($_POST['kontragent'] != ''){$kontragent = $_POST['kontragent'];}else{unset($kontragent);}
if(isset($kontragent)){
$telephon = mysql_query("SELECT telephon FROM x6yzj_zzz_kontragent WHERE id = '$kontragent'");
$row_telephon = mysql_fetch_array($telephon);
$katel = $row_telephon['telephon'];
echo "$katel";
}
?>
kacontact.php<?php
//Подключение к базе данных
$DBASE = mysql_connect("localhost","root", "") or die("Could not connect: " . mysql_error());
mysql_select_db("site") or die("Could not select database");
mysql_query("SET NAMES utf8");
if($_POST['kontragent'] != ''){$kontragent = $_POST['kontragent'];}else{unset($kontragent);}
if(isset($kontragent)){
$contact = mysql_query("SELECT contact FROM x6yzj_zzz_kontragent WHERE id = '$kontragent'");
$row_contact = mysql_fetch_array($contact);
$kacontact = $row_contact['contact'];
echo "$kacontact";
}
?>
Понимаю - всё это можно сделать
правильно, но, на данный момент своего развития и ограничения по времени, этот вариант реализации получения данных из справочника - единственный доступный для меня.