Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6727-й день

Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua

 Вопросы по PHP

Glavar
Dec 12 2010, 20:35
  
Пост #1



Репутация:   10  
Активист
*

Группа: Пользователи
Сообщений: 375
С нами с: 11-May 08


Доброго время суток!
1. Скажите как мне обрезать первых 7 знаков, а остальные занести в базу?
2. У меня есть максимальное число голосов припустим 50, как мне присвоить ему 1 место
15 глосов - 5 место
43 голоса - 2 место
28 голосов - 3 место
24 - 4 место и т.д. и что бы место записывалось и обновлялось автоматически в базе данных?

Тема для обговорення мови програмування PHP, всі сторонні коментарі будуть видалятися, а їх автори отримувати %

Сообщение отредактировал BoyKot - Feb 3 2011, 13:22
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
20 Страницы  « < 17 18 19 20 >  
Reply to this topicStart new topic
Ответов(360 - 379)
mzk
Nov 13 2018, 9:52
  
Пост #361



Репутация:   83  
Cтаршой
**

Группа: Пользователи
Сообщений: 673
С нами с: 27-February 08


Странно, да... но изменять ничего не могу, к сожалению.
Схема тоже не сработает - применится только последний массив $communications[]
Вот сейчас у меня для одного выглядит так:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
phpkiev
Nov 13 2018, 13:54
  
Пост #362



Репутация:   308  
Ветеран
*****

Группа: Пользователи
Сообщений: 5 193
С нами с: 24-November 07


(mzk @ Nov 13 2018, 9:52) Перейти к цитате

...
Схема тоже не сработает - применится только последний массив $communications[]
...


Не очень понял, что же вам надо и где ваш код, если ХМЛ менять нельзя, сервис менять нельзя smile.gif Вы пишете сервер или клиента? Метод 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;


А возможно там есть параметр или метод, который будет принимать сразу ХМЛ на входе и сам всё разбирать?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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] =>
                                )

                        )

                )

А что-то там менять или допилить возможности нет sad.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
phpkiev
Nov 14 2018, 13:55
  
Пост #364



Репутация:   308  
Ветеран
*****

Группа: Пользователи
Сообщений: 5 193
С нами с: 24-November 07


(mzk @ Nov 14 2018, 9:24) Перейти к цитате

Попробовал этот вариант... По-видимому, сами веб-сервисы не понимают такой формат


Ну тогда писать в саппорт сервиса и спрашивать smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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
-----------------------------------------

А хочется все получить. Где туплю?

Спасибо!
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mzk
Jun 16 2019, 11:11
  
Пост #367



Репутация:   83  
Cтаршой
**

Группа: Пользователи
Сообщений: 673
С нами с: 27-February 08


Спасибо за подсказку, с for все получилось smile.png
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
YaAllex
Jun 16 2019, 11:35
  
Пост #368



Репутация:   80  
Постоялец
***

Группа: Пользователи
Сообщений: 1 184
С нами с: 15-November 11


(mzk @ Jun 16 2019, 12:11) Перейти к цитате

Спасибо за подсказку, с for все получилось smile.png

интересно было бы глянуть код. sunglasses.png
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mzk
Jun 16 2019, 12:06
  
Пост #369



Репутация:   83  
Cтаршой
**

Группа: Пользователи
Сообщений: 673
С нами с: 27-February 08


(YaAllex @ Jun 16 2019, 12:35) Перейти к цитате

интересно было бы глянуть код. sunglasses.png

Как-то так...


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 потому, что он является таким себе ключом в массиве (количество линий из таблицы)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
YaAllex
Jun 16 2019, 13:08
  
Пост #370



Репутация:   80  
Постоялец
***

Группа: Пользователи
Сообщений: 1 184
С нами с: 15-November 11


Немного громозко, но раз устраивает, то ладно )

ПС. Меня код интересовал только с точки зрения - "а что же хотели получить", тк формулировка вопроса была расплывчатой. xD Как всегда в таких ситуациях - вопрошающий думал одно, отвечающий другое).
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mzk
Jul 3 2019, 14:01
  
Пост #371



Репутация:   83  
Cтаршой
**

Группа: Пользователи
Сообщений: 673
С нами с: 27-February 08


Друзья, я опять к вам... smile_upsidedown.png

Встретился с ситуацией, когда 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 в обычный массив данных crazy.png

Сообщение отредактировал mzk - Jul 3 2019, 14:37
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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);
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mzk
Jul 4 2019, 8:09
  
Пост #373



Репутация:   83  
Cтаршой
**

Группа: Пользователи
Сообщений: 673
С нами с: 27-February 08


Это не у меня странная любовь, это приходится работать с тем, что есть rgg.png

Решил вопрос следующим образом:
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);

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
СОУП
Aug 20 2019, 9:21
  
Пост #374



Репутация:   32  
Активист
*

Группа: Пользователи
Сообщений: 316
С нами с: 7-July 11


Есть сайт, который перенесли с домена А на домен Б

Сайт сейчас работает на домене А, домен Б закрыт для индексирования.

После переноса первое время с сайтом на домене А было все ок, но потом слетели какие-то настройки.

Какую часть кода надо сравнивать сайта на домене Б с доменом А, чтобы его востановить или надо копаться в БД?
http://prntscr.com/ouyoap- сайт на домене Б отображает все корректно
http://prntscr.com/ouyqme- сайт на домене А с ошибками.

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
YaAllex
Aug 20 2019, 10:09
  
Пост #375



Репутация:   80  
Постоялец
***

Группа: Пользователи
Сообщений: 1 184
С нами с: 15-November 11


Wordpress? Если да, то проверьте языковые настройки сайта - в настройках должно быть и список "язык сайта"
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
СОУП
Aug 20 2019, 10:29
  
Пост #376



Репутация:   32  
Активист
*

Группа: Пользователи
Сообщений: 316
С нами с: 7-July 11


(YaAllex @ Aug 20 2019, 11:09) Перейти к цитате

Wordpress? Если да, то проверьте языковые настройки сайта - в настройках должно быть и список "язык сайта"

Да, Wordpress
правильно ли я понимаю, что надо вот эти настройки смотреть?
http://prntscr.com/ouzr8c
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
YaAllex
Aug 20 2019, 10:38
  
Пост #377



Репутация:   80  
Постоялец
***

Группа: Пользователи
Сообщений: 1 184
С нами с: 15-November 11


(СОУП @ Aug 20 2019, 11:29) Перейти к цитате

Да, Wordpress
правильно ли я понимаю, что надо вот эти настройки смотреть?
http://prntscr.com/ouzr8c

в админке сайта
your-site.com/wp-admin

Open in new window
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
СОУП
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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
СОУП
Aug 20 2019, 16:18
  
Пост #379



Репутация:   32  
Активист
*

Группа: Пользователи
Сообщений: 316
С нами с: 7-July 11


Пока, что удалось выяснить, что public_html в обоих сайтах проблем не имеют.

В openserver сконектил public_html старого сайта, с БД нового- все корректно отображается
Т.к. на новом сайте проблем нету, то значит исключаем public_html нового из зоны риска

Остается в подозрении БД старого сайта.
Есть варианты где надо копать?

Сообщение отредактировал СОУП - Aug 20 2019, 16:18
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
СОУП
Aug 20 2019, 16:38
  
Пост #380



Репутация:   32  
Активист
*

Группа: Пользователи
Сообщений: 316
С нами с: 7-July 11


БД выглядит вот так http://prntscr.com/ov5sy7

проблемма в самом виджете http://prntscr.com/ov6j37

Сообщение отредактировал СОУП - Aug 20 2019, 17:21
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

20 Страницы  « < 17 18 19 20 >
Reply to this topicStart new topic

 



- Упрощённая версия
Сейчас: 14th August 2024 - 18:03
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст.