За последние 24 часа нас посетили 20172 программиста и 1579 роботов. Сейчас ищут 2005 программистов ...

Ajax data source (arrays)

Тема в разделе "JavaScript и AJAX", создана пользователем tabarigen, 18 мар 2015.

  1. tabarigen

    tabarigen Новичок

    С нами с:
    18 мар 2015
    Сообщения:
    19
    Симпатии:
    0
    Пытаюсь сделать такую штуку.http://www.datatables.net/examples/ajax/simple.html

    Данные для отображения в таблице получаю от вебсервиса 1с по SOAP.
    Файл .php имеет следующий код.

    Код (Text):
    1. <?php
    2.  
    3. header("Content-Type: text/html; charset=UTF-8");
    4. $SoapClient1C = new SoapClient("http://localhost/wsBase/ws/getProduct.1cws?wsdl");
    5. $List = $SoapClient1C->vernutcatalog();
    6.  
    7. if(is_array($List->return->Список ))
    8. {
    9. foreach ( $List->return->Список as $key)
    10.  
    11. echo $key->УникальныйИдентификатор." ".$key->Наименование." ".$key->Цена." ".$key->Остаток." "."<br>";
    12.  
    13.  } else
    14. echo $List->return->Список->УникальныйИдентификатор." ".$List->return->Список->Наименование." ".$List->return->Список->Цена." ".$List->return->Список->Остаток;
    15.  
    16. ?>

    Вопрос как можно отредактировать код, чтоб получить данные вида
    Код (Text):
    1. {
    2.   "data": [
    3.     [
    4.       "Tiger Nixon",
    5.       "System Architect",
    6.       "Edinburgh",
    7.       "5421",
    8.       "2011/04/25",
    9.       "$320,800"
    10.     ],
    11.     [
    12.       "Garrett Winters",
    13.       "Accountant",
    14.       "Tokyo",
    15.       "8422",
    16.       "2011/07/25",
    17.       "$170,750"
    18.     ],
    19. ]
    20. }

    Сейчас я получаю после выполнения php скрипта просто набор строк в которых выводятся получаемые данные.
    Немного дискутировали по этой теме на Тостере https://toster.ru/q/202835, но там не смогли мне помочь. Только начинаю свой пкть в php не судите строго.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  3. tabarigen

    tabarigen Новичок

    С нами с:
    18 мар 2015
    Сообщения:
    19
    Симпатии:
    0
    if(is_array($List->return->Список ))
    {
    foreach ( $List->return->Список as $key)

    echo $key->УникальныйИдентификатор." ".$key->Наименование." ".$key->Цена." ".$key->Остаток." "."<br>";

    }

    помогите осилить этот кусок кода.
    Если Массив, то выполняем операцию на веб-сервисе, далее перебираем получаемые параметры и присваиваем их переменной $key.
    Как теперь эти $key привести в удобоваримый для JSON вид?
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.799
    Симпатии:
    1.331
    Адрес:
    Лень
  5. tabarigen

    tabarigen Новичок

    С нами с:
    18 мар 2015
    Сообщения:
    19
    Симпатии:
    0
    Пробую так
    Код (Text):
    1. if(is_array($List->return->Список ))
    2. {
    3. foreach ( $List->return->Список as $key)
    4.  $stroka_tablici = array (
    5.      "Код"=>$key->УникальныйИдентификатор,
    6.      "Наименование"=>$key->Наименование,
    7.      "Цена"=>$key->Цена,
    8.      "Остаток"=>$key->Остаток
    9.  );
    10.  
    11. echo json_encode($stroka_tablici);
    Выдается бред
    Не киррилица ли тому виной??
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Это не бред, это действительно кириллица в urlen encode, не волнуйтесь, информация не повреждена, просто нужно urlen decode сделать.
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.799
    Симпатии:
    1.331
    Адрес:
    Лень
    кошмар..
     
  8. tabarigen

    tabarigen Новичок

    С нами с:
    18 мар 2015
    Сообщения:
    19
    Симпатии:
    0
    Для кого кошмар, а для кого то первые шаги в программировании.. В пору бы помочь да направить.

    Сделал так,
    Код (Text):
    1. {
    2. foreach ( $List->return->Список as $key)
    3.  $stroka_tablici = array (
    4.      "Код"=>$key->УникальныйИдентификатор,
    5.      "Наименование"=>$key->Наименование,
    6.      "Цена"=>$key->Цена,
    7.      "Остаток"=>$key->Остаток
    8.  );
    9.  echo var_dump($stroka_tablici);
    10.  }
    Выдается
    Добавлено спустя 24 минуты 18 секунд:
    Код (Text):
    1. if(is_array($List->return->Список ))
    2. {
    3. foreach ( $List->return->Список as $key)
    4.  $stroka_tablici = array (
    5.      $key->УникальныйИдентификатор,
    6.      $key->Наименование,
    7.      $key->Цена,
    8.      $key->Остаток
    9.  );
    10. echo json_encode($stroka_tablici, JSON_UNESCAPED_UNICODE);
    11.  }

    На выходе
    А нужно
    Как бы еще и data добавить.
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.119
    Симпатии:
    1.245
    Адрес:
    там-сям
    Чуваки ))) Вы удаляетесь от решения, а не приближаетесь. Изначально было что:
    DataTables работает с данными, оформленными в виде таблицы HTML. Сталобыть задачу можно разбить на две понятные и легковыполнимые подзадачи:
    1. Получить данные из 1С, пусть они изначально в виде массива PHP. С ним удобно работать.
    2. Данные вывести в таблицу <table><tr><td>... и натравить на нее DataTables. примеры в доках хорошие, отвечаю!
     
  10. tabarigen

    tabarigen Новичок

    С нами с:
    18 мар 2015
    Сообщения:
    19
    Симпатии:
    0
    Я вывел их в таблицу, вот так
    Код (Text):
    1. <?php
    2.  
    3.         header("Content-Type: text/html; charset=UTF-8");
    4.         $SoapClient1C = new SoapClient("http://localhost/wsBase/ws/getProduct.1cws?wsdl");
    5.         $List = $SoapClient1C->vernutcatalog();
    6.  
    7.         if(is_array($List->return->Список ))
    8.         {
    9.         foreach ( $List->return->Список as $key)
    10.        
    11.         echo "<tbody><tr><th>".$key->УникальныйИдентификатор."</th>"."<th>".$key->Наименование."</th>"."<th>".$key->Цена."</th>"."<th>".$key->Остаток."</th></tr></tbody>";
    12.  
    13.          } else
    14.         echo $List->return->Список->УникальныйИдентификатор." ".$List->return->Список->Наименование." ".$List->return->Список->Цена." ".$List->return->Список->Остаток;
    15.  
    16.     ?>
    но у меня в такой таблице datatables не работал поиск и пагинация.
     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.119
    Симпатии:
    1.245
    Адрес:
    там-сям
    Знчит ты что-то упустил в документации.
    Двигайся от простого. Поначалу без AJAX. Сформируй таблицу так, чтобы результат радовал. Потом постепенно усложняй.
    http://www.datatables.net/examples/basic_init/zero_configuration.html
    Просто сделай так, чтобы в таблице были твои данные. Остальное оставь как в примере ;)
     
  12. tabarigen

    tabarigen Новичок

    С нами с:
    18 мар 2015
    Сообщения:
    19
    Симпатии:
    0
    Спасибо за ценный совет, я упрямо полагал что сделал все правильно))
     
  13. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.119
    Симпатии:
    1.245
    Адрес:
    там-сям
    не смотря на это?
     
  14. tabarigen

    tabarigen Новичок

    С нами с:
    18 мар 2015
    Сообщения:
    19
    Симпатии:
    0
    Вообще то это была ирония
     
  15. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.119
    Симпатии:
    1.245
    Адрес:
    там-сям
    Ок. А то новичкам часто кажется, что их кто-то притесняет и унижает. Но ты не такой, понятно )))

    Добавлено спустя 41 секунду:
    Конкретно с DT я проходил этот же путь и сделал всё, что хотел. Написал свою версию их бэкенда для DataTables Editor, который они дают в коммерческой версии.
     
  16. tabarigen

    tabarigen Новичок

    С нами с:
    18 мар 2015
    Сообщения:
    19
    Симпатии:
    0
    Лан, помучаюсь еще. Вроде и пытки но многое познаешь. Попробую через Json все таки.
     
  17. tabarigen

    tabarigen Новичок

    С нами с:
    18 мар 2015
    Сообщения:
    19
    Симпатии:
    0
    Ребят, я сделал так
    Код (Text):
    1. foreach ( $List->return->Список as $key)
    2.  $dataq = array ('data' => array(
    3.      "$key->УникальныйИдентификатор",
    4.      "$key->Наименование",
    5.      "$key->Цена",
    6.      "$key->Остаток"
    7.         )
    8.         );
    9.     //var_dump($dataq);
    10.     echo json_encode($dataq, JSON_UNESCAPED_UNICODE);
    11.  } else
    var_dump($dataq) выдает

    datatables отображает https://yadi.sk/i/e3_zEOprfMxTa
    Изображение по ссылке

    То есть выводятся поочерено символы первого элемента массива.
    Истина где то рядом..
     
  18. tabarigen

    tabarigen Новичок

    С нами с:
    18 мар 2015
    Сообщения:
    19
    Симпатии:
    0
    Ребят я очень близок к решению))

    Попробовал так,
    Код (Text):
    1. if(is_array($List->return->Список ))
    2. {
    3. foreach ( $List->return->Список as $key)
    4.   $json_data = array ("$key->УникальныйИдентификатор","$key->Наименование","$key->Цена","$key->Остаток");
    5.   $table_json = array ('data'=>array($json_data));
    6. echo json_encode($table_json, JSON_UNESCAPED_UNICODE);    
    7.     //var_dump($dataq);
    8.     //echo json_encode($dataq, JSON_UNESCAPED_UNICODE);
    9.  }
    И у меня выводится только одна строка, в таблице datatables.

    После выполнения json_encode() я получаю массив:
    то есть выбирается только первый элемент массива, остальные опускаются.
     
  19. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Код (PHP):
    1. $table_json[] = array();
    2. foreach (...)
    3.   $json_data = ...;
    4.   $table_json[] = array ('data'=>array($json_data));
    5.  }
    6. echo json_encode($table_json, JSON_UNESCAPED_UNICODE);    
    7.  
     
  20. tabarigen

    tabarigen Новичок

    С нами с:
    18 мар 2015
    Сообщения:
    19
    Симпатии:
    0
    Проблема решена, надо было всего то
    Код (Text):
    1. foreach ( $List->return->Список as $key)
    2.   $json_data[] = array("$key->УникальныйИдентификатор","$key->Наименование","$key->Цена","$key->Остаток");
    3.   $table_json['data'] = $json_data;  
    4.     echo json_encode($table_json, JSON_UNESCAPED_UNICODE);