У меня есть 2 набора полей: Set A (Field1, Field2) и Set B (Field3, Field4).
- Field1 загружает данные из таблицы Mariadb в соответствии с выбором пользователя, а затем загружает соответствующие данные из таблицы А в поле 2. Для этого используется файл. php с именем 1-2. php. Field1 и Field2 работают нормально, но:
Проблема для набора A : Проверка Element-> Console во внешнем интерфейсе показывает все данные Field2.
- Field3 загружает данные из таблицы MariadbB в соответствии с выбором пользователя, а затем загружает соответствующие данные из таблицы B в Field4. Для этого используется файл. php с именем 3-4. php. Field3 загружается нормально из таблицы B, но:
Проблема для набора B : Field4 ничего не показывает!
* Обратите внимание, что структура tableA и tableB идентична
1. Установите A (Field1 и Field2)
Field1-> Actionscript-> Custom-> Change:
function ff_field1_action(element, action)
{
switch (action) {
case 'change':
jQuery.ajax({
type: "POST",
url: "http://someurl/1-2.php",
data: { field1: element.value },
success: function(data) {
var obj = JSON.parse(data);
jQuery('#ff_elem2496').empty();
var arr = obj;
jQuery('#ff_elem2496').append(jQuery('<option>', {
value: '',
text: 'whatever'
}));
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
jQuery('#ff_elem2496').append(jQuery('<option>', {
value: arr[i],
text: arr[i]
}));
}
}
});
break;
default:;
} // switch
} // ff_field1_action
Примечание: elem2496 относится к Поле 2
1-2. php Файл для набора A:
<?php
define('_JEXEC', 1);
if (file_exists(__DIR__ . '/defines.php'))
{
include_once __DIR__ . '/defines.php';
}
if (!defined('_JDEFINES'))
{
define('JPATH_BASE', __DIR__);
require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_BASE . '/includes/framework.php';
$judgePick1 = JRequest::getVar(field1);
$db1 = JFactory::getDbo();
$query1 = $db1->getQuery(true);
$query1
->select('x.name')
->from($db1->quoteName('#__tableA', 'x'))
->join('LEFT', $db1->quoteName('#__tableA', 'y') . ' ON ' . $db1->quoteName('x.parent') .' = '. $db1->quoteName('y.id'))
->where($db1->quoteName('y.name') .' = '. $db1->quote($judgePick1))
->andWhere(array($db1->quoteName('x.parent').' = '. $db1->quoteName('y.id'), $db1->quoteName('x.active').' = 1'), $glue = 'AND')
->order($db1->quoteName('x.name') . ' ASC');
$db1->setQuery($query1);
$result1 = $db1->loadColumn();
if(!$result1){
echo "error";
} else {
echo json_encode($result1);
}
?>
2. Установите B (Field3 и Field4)
Field3-> Actionscript-> Custom-> Change:
function ff_field3_action(element, action)
{
switch (action) {
case 'change':
jQuery.ajax({
type: "POST",
url: "http://someurl/3-4.php",
data: { field3: element.value },
success: function(data) {
var obj = JSON.parse(data);
jQuery('#ff_elem3871').empty();
var arr = obj;
jQuery('#ff_elem3871').append(jQuery('<option>', {
value: '',
text: 'whatever2'
}));
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
jQuery('#ff_elem3871').append(jQuery('<option>', {
value: arr[i],
text: arr[i]
}));
}
}
});
break;
default:;
} // switch
} // ff_field3_action
Примечание: elem3871 относится к Файл Field4
3-4. php для набора B:
<?php
define('_JEXEC', 1);
if (file_exists(__DIR__ . '/defines.php'))
{
include_once __DIR__ . '/defines.php';
}
if (!defined('_JDEFINES'))
{
define('JPATH_BASE', __DIR__);
require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_BASE . '/includes/framework.php';
$judgePick2 = JRequest::getVar(field3);
$db2 = JFactory::getDbo();
$query2 = $db2->getQuery(true);
$query2
->select('x.name')
->from($db2->quoteName('#__tableB', 'x'))
->join('LEFT', $db2->quoteName('#__tableB', 'y') . ' ON ' . $db2->quoteName('x.parent') .' = '. $db2->quoteName('y.id'))
->where($db2->quoteName('y.name') .' = '. $db2->quote($judgePick2))
->andWhere(array($db2->quoteName('x.parent').' = '. $db2->quoteName('y.id'), $db2->quoteName('x.active').' = 1'), $glue = 'AND')
->order($db2->quoteName('x.name') . ' ASC');
$db2->setQuery($query2);
$result2 = $db2->loadColumn();
if(!$result2){
echo "error";
} else {
echo json_encode($result2);
}
?>
Наконец, в форме-> Дополнительно-> Дополнительные параметры-> Части формы-> Перед формой:
// Set A
$this->execPieceByName('ff_InitLib'); //Include BreezingForms Library
$db1 = JFactory::getDBO();//Get Database Object
$db1->setQuery('SELECT name FROM #__tableA WHERE parent=0 AND active=1 ORDER BY id ASC');
$result1 = $db1->loadColumn(); //load the result from the query
$res1 = "0;whatever;0\n";
for ($i = 0; $i < count($result1); $i++)
{
$res1 .= "0;".$result1[$i].";".$result1[$i]."\n";
}
function ff_setSelectList1($name, $value)
{
global $ff_processor;
for ($r = 0; $r < $ff_processor->rowcount; $r++)
{
$row =& $ff_processor->rows[$r];
if ($row->name==$name)
$row->data2 = $value;
unset($row);
} // for
} // ff_setSelectList1
ff_setSelectList1('field1', $res1);
// Set B
$this->execPieceByName('ff_InitLib'); //Include BreezingForms Library
$db2 = JFactory::getDBO();//Get Database Object
$db2->setQuery('SELECT name FROM #__tableB WHERE parent=0 AND active=1 ORDER BY id ASC');
$result2 = $db2->loadColumn(); //load the result from the query
$res2 = "0;whatever2;0\n";
for ($i = 0; $i < count($result2); $i++)
{
$res2 .= "0;".$result2[$i].";".$result2[$i]."\n";
}
function ff_setSelectList2($name, $value)
{
global $ff_processor;
for ($r = 0; $r < $ff_processor->rowcount; $r++)
{
$row =& $ff_processor->rows[$r];
if ($row->name==$name)
$row->data2 = $value;
unset($row);
} // for
} // ff_setSelectList2
ff_setSelectList2('field3', $res2);