Вопросы по PHP |
Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6829-й день
Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua |
Вопросы по PHP |
Glavar |
Dec 12 2010, 20:35
Пост
#1
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 379 С нами с: 11-May 08 |
Доброго время суток!
1. Скажите как мне обрезать первых 7 знаков, а остальные занести в базу? 2. У меня есть максимальное число голосов припустим 50, как мне присвоить ему 1 место 15 глосов - 5 место 43 голоса - 2 место 28 голосов - 3 место 24 - 4 место и т.д. и что бы место записывалось и обновлялось автоматически в базе данных? Тема для обговорення мови програмування PHP, всі сторонні коментарі будуть видалятися, а їх автори отримувати % Сообщение отредактировал BoyKot - Feb 3 2011, 13:22 |
mzk |
Nov 13 2018, 9:52
Пост
#361
|
Репутация: 83 Cтаршой Группа: Пользователи Сообщений: 673 С нами с: 27-February 08 |
Странно, да... но изменять ничего не могу, к сожалению.
Схема тоже не сработает - применится только последний массив $communications[] Вот сейчас у меня для одного выглядит так: » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « |
phpkiev |
Nov 13 2018, 13:54
Пост
#362
|
Репутация: 308 Ветеран Группа: Пользователи Сообщений: 5 193 С нами с: 24-November 07 |
... Схема тоже не сработает - применится только последний массив $communications[] ... Не очень понял, что же вам надо и где ваш код, если ХМЛ менять нельзя, сервис менять нельзя Вы пишете сервер или клиента? Метод creater() у сервиса - принимает именно массив? По идее в чистом виде 1-в-1 такую структуру в массиве не получится построить, т.к. ключи совпадают и они будут перетирать друг-друга. Только используя вложенные массивы. А вот сгенерировать валидный ХМЛ можно любой, и как он будет обрабатывать вложенные массивы - зависит только от реализации парсера\кодировщика. Есть вот такой xml, который отлично отрабатывает в SoapUI. оно и не удивительно, ведь эта тулза принимает на вход ХМЛ, а он валидный и его можно парсить потегово - никаких проблем. А в вышем случае вопрос к методу creater(). Сможет ли он корректно обработать такой массив: $item = [ 'communicationScopes' => [ 'code' => 1 ], 'value' => 0671234567, 'type' => 1, 'phoneType' => 2, 'order' => 0, 'main' => true ]; $communications[] = ['communications'=>$item]; $item = [ 'value' => '[email protected]', 'type' => 3, 'order' => 0, 'main' => true ]; $communications[] = ['communications'=>$item]; $params['communications'] = $communications; А возможно там есть параметр или метод, который будет принимать сразу ХМЛ на входе и сам всё разбирать? |
mzk |
Nov 14 2018, 9:24
Пост
#363
|
Репутация: 83 Cтаршой Группа: Пользователи Сообщений: 673 С нами с: 27-February 08 |
Попробовал этот вариант... По-видимому, сами веб-сервисы не понимают такой формат:
[communications] => Array ( [0] => Array ( [communications] => Array ( [communicationScopes] => Array ( [code] => 1 ) [value] => 0671234567 [type] => 1 [phoneType] => 2 [order] => 0 [main] => true [any] => ) ) [1] => Array ( [communications] => Array ( [value] => [email protected] [type] => 3 [order] => 0 [main] => true [any] => ) ) ) А что-то там менять или допилить возможности нет |
phpkiev |
Nov 14 2018, 13:55
Пост
#364
|
Репутация: 308 Ветеран Группа: Пользователи Сообщений: 5 193 С нами с: 24-November 07 |
|
mzk |
Jun 15 2019, 21:24
Пост
#365
|
Репутация: 83 Cтаршой Группа: Пользователи Сообщений: 673 С нами с: 27-February 08 |
Ребята, то ли я че-то попутал, то ли лыжи не едут..
Есть вот такой массив: » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « Пытаюсь вытащить данные из его с помощью foreach(): CODE Format $n=0; foreach ($order_array as $key=>$value) { echo $key." - ". $value[$n]."<br>"; $n++; } На выходе получаю только последние значения из каждого внутреннего массива... CODE Format ----------------------------------------- str_line - 1 str_virt_store - 3 str_store - 3 str_order - 663043 str_lmcode - 10917865 str_qty - 6 ----------------------------------------- А хочется все получить. Где туплю? Спасибо! |
YaAllex |
Jun 15 2019, 22:14
Пост
#366
|
Репутация: 80 Постоялец Группа: Пользователи Сообщений: 1 184 С нами с: 15-November 11 |
У вас при каждой итерации выбирается : 1 элемент из массива 1, из 2-го массива 2-й элемент, из 3-го массива 3-й элемент. Вы ошибочно используете n++. По сути значения массивов у вас при каждой итерации хранятся в $value (тут вы правы), но чтобы их распарсить перебирайте массив $value полностью, а не указывая конкретный элемент. Можно второй foreach кинуть на $value, либо другим способом - while,for etc...
CODE Format foreach ($order_array as $key=>$value) { echo $key." - "; foreach ($value as $some_value) { echo $some_value; } } Сообщение отредактировал YaAllex - Jun 15 2019, 22:23 |
mzk |
Jun 16 2019, 11:11
Пост
#367
|
Репутация: 83 Cтаршой Группа: Пользователи Сообщений: 673 С нами с: 27-February 08 |
Спасибо за подсказку, с for все получилось
|
YaAllex |
Jun 16 2019, 11:35
Пост
#368
|
Репутация: 80 Постоялец Группа: Пользователи Сообщений: 1 184 С нами с: 15-November 11 |
|
mzk |
Jun 16 2019, 12:06
Пост
#369
|
Репутация: 83 Cтаршой Группа: Пользователи Сообщений: 673 С нами с: 27-February 08 |
интересно было бы глянуть код. Как-то так... CODE Format $size = sizeof($order_array['str_line']); for ($i = 0; $i < $size; $i++) { //echo $order_array['str_line'][$i]." line $i <br>"; echo $order_array['str_ldap'][$i]. " - ". $order_array['str_line'][$i]. " - ". $order_array['str_virt_store'][$i]. " - ". $order_array['str_mgmt_store'][$i]. " - ". $order_array['str_store'][$i]. " - ". $order_array['str_order'][$i]. " - ". $order_array['str_lmcode'][$i]. " - ". $order_array['str_qty'][$i]. "<br>"; } Считаю str_line потому, что он является таким себе ключом в массиве (количество линий из таблицы) |
YaAllex |
Jun 16 2019, 13:08
Пост
#370
|
Репутация: 80 Постоялец Группа: Пользователи Сообщений: 1 184 С нами с: 15-November 11 |
Немного громозко, но раз устраивает, то ладно )
ПС. Меня код интересовал только с точки зрения - "а что же хотели получить", тк формулировка вопроса была расплывчатой. xD Как всегда в таких ситуациях - вопрошающий думал одно, отвечающий другое). |
mzk |
Jul 3 2019, 14:01
Пост
#371
|
Репутация: 83 Cтаршой Группа: Пользователи Сообщений: 673 С нами с: 27-February 08 |
Друзья, я опять к вам...
Встретился с ситуацией, когда curl возвращает данные, не совсем понятным образом Например, делаю колл с параметрами на wsdl: CODE Format $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://xxxxxx.vices.wsdl", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_POST => 1, CURLOPT_POSTFIELDS => "$xml", CURLOPT_HTTPHEADER => array( "Accept: text/xml", "Content-Type: text/xml; charset=utf-8", "cache-control: no-cache" ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); Получаю ответ в $response: CODE Format print_r($response); Выводит эти данные: » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « CODE Format file_put_contents('test.txt',$response,FILE_APPEND); Пишет нормальный хмл в файл: » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « Пробовал так: CODE Format $xml_simple = simplexml_load_string($response); $json = json_encode($xml_simple); $arr = json_decode($json,true); Внутри $arr - пусто.. Никак не могу понять, как правильно"поймать" и конвертировать $response в обычный массив данных Сообщение отредактировал mzk - Jul 3 2019, 14:37 |
YaAllex |
Jul 4 2019, 7:06
Пост
#372
|
Репутация: 80 Постоялец Группа: Пользователи Сообщений: 1 184 С нами с: 15-November 11 |
Хм... странная любовь у вас к массивам.
CODE Format CURLOPT_POSTFIELDS => "$xml" вы уверены в этой опции? на сколько я помню, там должен стоять urlencoded данные, либо массив данных, которые вы передаете с $_POST запросом $responce - это строка, с тем, что вам curl отдал, в результате запроса. Из того, что я вижу - CODE Format $xml_simple = simplexml_load_string($response); скорее всего возвращает пустой объект simplexml (дальнейшие действия бессмысленны) Попробуйте распарсить строчку с $responce при помощи ф-ций для работы с строками ( раз в файл ложится с переводом строк, то скорее всего там они проставлены): CODE Format $my_super_array = explode(PHP_EOL, $responce); либо через символы перевода строки CODE Format $my_super_array = explode('\n', $responce); |
mzk |
Jul 4 2019, 8:09
Пост
#373
|
Репутация: 83 Cтаршой Группа: Пользователи Сообщений: 673 С нами с: 27-February 08 |
Это не у меня странная любовь, это приходится работать с тем, что есть
Решил вопрос следующим образом: CODE Format $catch = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $response); $xml_create = new SimpleXMLElement($catch); $body = $xml_create->xpath('//soapBody')[0]; $xml_response_to_array = json_decode(json_encode((array)$body), TRUE); print_r($xml_response_to_array); |
СОУП |
Aug 20 2019, 9:21
Пост
#374
|
Репутация: 32 Активист Группа: Пользователи Сообщений: 316 С нами с: 7-July 11 |
Есть сайт, который перенесли с домена А на домен Б
Сайт сейчас работает на домене А, домен Б закрыт для индексирования. После переноса первое время с сайтом на домене А было все ок, но потом слетели какие-то настройки. Какую часть кода надо сравнивать сайта на домене Б с доменом А, чтобы его востановить или надо копаться в БД? http://prntscr.com/ouyoap- сайт на домене Б отображает все корректно http://prntscr.com/ouyqme- сайт на домене А с ошибками. |
YaAllex |
Aug 20 2019, 10:09
Пост
#375
|
Репутация: 80 Постоялец Группа: Пользователи Сообщений: 1 184 С нами с: 15-November 11 |
Wordpress? Если да, то проверьте языковые настройки сайта - в настройках должно быть и список "язык сайта"
|
СОУП |
Aug 20 2019, 10:29
Пост
#376
|
Репутация: 32 Активист Группа: Пользователи Сообщений: 316 С нами с: 7-July 11 |
Wordpress? Если да, то проверьте языковые настройки сайта - в настройках должно быть и список "язык сайта" Да, Wordpress правильно ли я понимаю, что надо вот эти настройки смотреть? http://prntscr.com/ouzr8c |
YaAllex |
Aug 20 2019, 10:38
Пост
#377
|
Репутация: 80 Постоялец Группа: Пользователи Сообщений: 1 184 С нами с: 15-November 11 |
в админке сайта your-site.com/wp-admin |
СОУП |
Aug 20 2019, 11:58
Пост
#378
|
Репутация: 32 Активист Группа: Пользователи Сообщений: 316 С нами с: 7-July 11 |
оба параметра одинаковы
стоит русский http://prntscr.com/ov1529 разница только в дополнительном укр языке http://prntscr.com/ov1660 когда подключаю язык uk - сайт вообще не отображается)))) Сообщение отредактировал СОУП - Aug 20 2019, 12:07 |
СОУП |
Aug 20 2019, 16:18
Пост
#379
|
Репутация: 32 Активист Группа: Пользователи Сообщений: 316 С нами с: 7-July 11 |
Пока, что удалось выяснить, что public_html в обоих сайтах проблем не имеют.
В openserver сконектил public_html старого сайта, с БД нового- все корректно отображается Т.к. на новом сайте проблем нету, то значит исключаем public_html нового из зоны риска Остается в подозрении БД старого сайта. Есть варианты где надо копать? Сообщение отредактировал СОУП - Aug 20 2019, 16:18 |
СОУП |
Aug 20 2019, 16:38
Пост
#380
|
Репутация: 32 Активист Группа: Пользователи Сообщений: 316 С нами с: 7-July 11 |
БД выглядит вот так http://prntscr.com/ov5sy7
проблемма в самом виджете http://prntscr.com/ov6j37 Сообщение отредактировал СОУП - Aug 20 2019, 17:21 |
Упрощённая версия | Сейчас: 25th November 2024 - 1:48 |
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст. |