Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: многоуровневый массив, двойной селект
Форумы портала PHP.SU » » Вопросы новичков » многоуровневый массив, двойной селект

Страниц (1): [1]
 

1. imediasun - 24 Декабря, 2012 - 21:24:35 - перейти к сообщению
Есть такой скрипт, который выводит из многоуровневого массива категории и в зависимости от выбранной в селекте категории выводит подкатегорию.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. require_once('blocks/services_array.php'); // подключаем список с городами
  4.  
  5. $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
  6.  
  7. // возвращаем список городов
  8. if ($action == 'getCity')
  9. {
  10.     if (isset($city[$_GET['region']]))
  11.     {
  12.         echo json_encode($city[$_GET['region']]); // возвраащем данные в JSON формате;
  13.     }
  14.     else
  15.     {
  16.         echo json_encode(array('Выберите область'));
  17.     }
  18.  
  19.     exit;
  20. }
  21.  
  22. // выводим пришедшие данные
  23. if ($action == 'postResult')
  24. {
  25.     echo '<pre>' . htmlspecialchars(print_r($_POST, true)) . '</pre>';
  26.     exit;
  27. }
  28. ?>
  29. <!DOCTYPE html>
  30. <html>
  31. <head>
  32.     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  33. CODE (javascript):
    скопировать код в буфер обмена
    1.  
    2.     <script type="text/javascript">
    3.     // <![CDATA[
    4.         function loadCity(select)
    5.         {
    6.             var citySelect = $('select[name="city"]');
    7.             citySelect.attr('disabled', 'disabled'); // делаем список городов не активным
    8.            
    9.             // послыаем AJAX запрос, который вернёт список городов для выбранной области
    10.             $.getJSON('../services.php', {action:'getCity', region:select.value}, function(cityList){
    11.                
    12.                 citySelect.html(''); // очищаем список городов
    13.                
    14.                 // заполняем список городов новыми пришедшими данными
    15.                 $.each(cityList, function(i){
    16.                     citySelect.append('<option value="' + i + '">' + this + '</option>');
    17.                 });
    18.                
    19.                 citySelect.removeAttr('disabled'); // делаем список городов активным
    20.                
    21.             });
    22.         }
    23.     // ]]>
    24.     </script>
    25.  
  • </head>
  • <body>
  •     <form action="../block/services.php" method="post">
  •            <select name="region" onchange="loadCity(this)">
  •             <option></option>
  •            
  •             <?PHP
  •             // заполняем список областей
  •             foreach ($city as $region => $cityList)
  •             {
  •                 echo '<option value="' . $region . '">' . $region . '</option>' . "\n";
  •             }
  •             ?>
  •            
  •         </select>
  •            <select name="city" disabled="disabled">
  •             <option>Выберите область</option>
  •         </select>
  •        
  •         <input type="hidden" name="action" value="postResult" />
  •         <input type="submit" value="отправить" />
  •     </form>
  •  
  •  

  • сам же файл массива выглядит так (кратко)
    PHP:
    скопировать код в буфер обмена
    1.  
    2. $city = array (
    3.   'Бухгалтерсие услуги' => array (
    4.     0 => 'Аудиторские',
    5.     1 => 'Бухгалтерские услуги и сопровождение',
    6.         2 => 'Подготовка и сдача бухгалтерской отчетности',
    7.         3 => 'Постановка бухгалтерского учета',
    8.         4 => 'Скорая помощь для бухгалтера',
    9.     // ...
    10.   ),
    11.  

    как правильно добавить в массив еще один уровень а в скрипт еще инпуты соответствующие третьему уровню по одному на каждый
    2. DlTA - 25 Декабря, 2012 - 01:07:06 - перейти к сообщению
    сначала надо определиться как будет проходить обращение к этим новым элементам.
    3. imediasun - 25 Декабря, 2012 - 10:36:14 - перейти к сообщению
    Ума не приложу, если знаете как это переделать сообщите

     

    Powered by ExBB FM 1.0 RC1