Второй набор полей не показывает результаты таблицы - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть 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);
...