Пытаюсь сделать такую штуку.http://www.datatables.net/examples/ajax/simple.html Данные для отображения в таблице получаю от вебсервиса 1с по SOAP. Файл .php имеет следующий код. Код (Text): <?php header("Content-Type: text/html; charset=UTF-8"); $SoapClient1C = new SoapClient("http://localhost/wsBase/ws/getProduct.1cws?wsdl"); $List = $SoapClient1C->vernutcatalog(); if(is_array($List->return->Список )) { foreach ( $List->return->Список as $key) echo $key->УникальныйИдентификатор." ".$key->Наименование." ".$key->Цена." ".$key->Остаток." "."<br>"; } else echo $List->return->Список->УникальныйИдентификатор." ".$List->return->Список->Наименование." ".$List->return->Список->Цена." ".$List->return->Список->Остаток; ?> Вопрос как можно отредактировать код, чтоб получить данные вида Код (Text): { "data": [ [ "Tiger Nixon", "System Architect", "Edinburgh", "5421", "2011/04/25", "$320,800" ], [ "Garrett Winters", "Accountant", "Tokyo", "8422", "2011/07/25", "$170,750" ], ] } Сейчас я получаю после выполнения php скрипта просто набор строк в которых выводятся получаемые данные. Немного дискутировали по этой теме на Тостере https://toster.ru/q/202835, но там не смогли мне помочь. Только начинаю свой пкть в php не судите строго.
В php данные конвертировать в JSON http://php.ru/manual/function.json-encode.html а в браузере на javascrit с помощью jquery расставить их как хочешь
if(is_array($List->return->Список )) { foreach ( $List->return->Список as $key) echo $key->УникальныйИдентификатор." ".$key->Наименование." ".$key->Цена." ".$key->Остаток." "."<br>"; } помогите осилить этот кусок кода. Если Массив, то выполняем операцию на веб-сервисе, далее перебираем получаемые параметры и присваиваем их переменной $key. Как теперь эти $key привести в удобоваримый для JSON вид?
Пробую так Код (Text): if(is_array($List->return->Список )) { foreach ( $List->return->Список as $key) $stroka_tablici = array ( "Код"=>$key->УникальныйИдентификатор, "Наименование"=>$key->Наименование, "Цена"=>$key->Цена, "Остаток"=>$key->Остаток ); echo json_encode($stroka_tablici); Выдается бред Не киррилица ли тому виной??
Это не бред, это действительно кириллица в urlen encode, не волнуйтесь, информация не повреждена, просто нужно urlen decode сделать.
Для кого кошмар, а для кого то первые шаги в программировании.. В пору бы помочь да направить. Сделал так, Код (Text): { foreach ( $List->return->Список as $key) $stroka_tablici = array ( "Код"=>$key->УникальныйИдентификатор, "Наименование"=>$key->Наименование, "Цена"=>$key->Цена, "Остаток"=>$key->Остаток ); echo var_dump($stroka_tablici); } Выдается Добавлено спустя 24 минуты 18 секунд: Код (Text): if(is_array($List->return->Список )) { foreach ( $List->return->Список as $key) $stroka_tablici = array ( $key->УникальныйИдентификатор, $key->Наименование, $key->Цена, $key->Остаток ); echo json_encode($stroka_tablici, JSON_UNESCAPED_UNICODE); } На выходе А нужно Как бы еще и data добавить.
Чуваки ))) Вы удаляетесь от решения, а не приближаетесь. Изначально было что: DataTables работает с данными, оформленными в виде таблицы HTML. Сталобыть задачу можно разбить на две понятные и легковыполнимые подзадачи: 1. Получить данные из 1С, пусть они изначально в виде массива PHP. С ним удобно работать. 2. Данные вывести в таблицу <table><tr><td>... и натравить на нее DataTables. примеры в доках хорошие, отвечаю!
Я вывел их в таблицу, вот так Код (Text): <?php header("Content-Type: text/html; charset=UTF-8"); $SoapClient1C = new SoapClient("http://localhost/wsBase/ws/getProduct.1cws?wsdl"); $List = $SoapClient1C->vernutcatalog(); if(is_array($List->return->Список )) { foreach ( $List->return->Список as $key) echo "<tbody><tr><th>".$key->УникальныйИдентификатор."</th>"."<th>".$key->Наименование."</th>"."<th>".$key->Цена."</th>"."<th>".$key->Остаток."</th></tr></tbody>"; } else echo $List->return->Список->УникальныйИдентификатор." ".$List->return->Список->Наименование." ".$List->return->Список->Цена." ".$List->return->Список->Остаток; ?> но у меня в такой таблице datatables не работал поиск и пагинация.
Знчит ты что-то упустил в документации. Двигайся от простого. Поначалу без AJAX. Сформируй таблицу так, чтобы результат радовал. Потом постепенно усложняй. http://www.datatables.net/examples/basic_init/zero_configuration.html Просто сделай так, чтобы в таблице были твои данные. Остальное оставь как в примере
Ок. А то новичкам часто кажется, что их кто-то притесняет и унижает. Но ты не такой, понятно ))) Добавлено спустя 41 секунду: Конкретно с DT я проходил этот же путь и сделал всё, что хотел. Написал свою версию их бэкенда для DataTables Editor, который они дают в коммерческой версии.
Ребят, я сделал так Код (Text): foreach ( $List->return->Список as $key) $dataq = array ('data' => array( "$key->УникальныйИдентификатор", "$key->Наименование", "$key->Цена", "$key->Остаток" ) ); //var_dump($dataq); echo json_encode($dataq, JSON_UNESCAPED_UNICODE); } else var_dump($dataq) выдает datatables отображает https://yadi.sk/i/e3_zEOprfMxTa Изображение по ссылке То есть выводятся поочерено символы первого элемента массива. Истина где то рядом..
Ребят я очень близок к решению)) Попробовал так, Код (Text): if(is_array($List->return->Список )) { foreach ( $List->return->Список as $key) $json_data = array ("$key->УникальныйИдентификатор","$key->Наименование","$key->Цена","$key->Остаток"); $table_json = array ('data'=>array($json_data)); echo json_encode($table_json, JSON_UNESCAPED_UNICODE); //var_dump($dataq); //echo json_encode($dataq, JSON_UNESCAPED_UNICODE); } И у меня выводится только одна строка, в таблице datatables. После выполнения json_encode() я получаю массив: то есть выбирается только первый элемент массива, остальные опускаются.
Код (PHP): $table_json[] = array(); foreach (...) $json_data = ...; $table_json[] = array ('data'=>array($json_data)); } echo json_encode($table_json, JSON_UNESCAPED_UNICODE);
Проблема решена, надо было всего то Код (Text): foreach ( $List->return->Список as $key) $json_data[] = array("$key->УникальныйИдентификатор","$key->Наименование","$key->Цена","$key->Остаток"); $table_json['data'] = $json_data; echo json_encode($table_json, JSON_UNESCAPED_UNICODE);