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 :: Версия для печати :: Экспорт в XML с помощью PHP
Форумы портала PHP.SU » » Вопросы новичков » Экспорт в XML с помощью PHP

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

1. Rick_77 - 04 Марта, 2021 - 09:57:15 - перейти к сообщению
Здравствуйте камрады!
Подскажите.
У меня УЖЕ есть готовый код, по экспорту в формат XML данных из MySQL. Однако не пойму одну вещь.
Есть условие при котором в поле записывается значение:
fwrite($create_f, ' <ROW LINE="0" TAB="0" NAME="KB">'.PHP_EOL);
if (strlen($row['naln']==12))
{
fwrite($create_f, ' <VALUE>2</VALUE>'.PHP_EOL);
}else{
fwrite($create_f, ' <VALUE>1</VALUE>'.PHP_EOL);
}
or
{
if ($row['naln']>=1)
fwrite($create_f, ' <VALUE></VALUE>'.PHP_EOL);
}
fwrite($create_f, ' </ROW>'.PHP_EOL);
И так. Первый этап.
Вычисляю длину строки в поле naln, если она равна 12, то в поле "KB" я записываю одно значение ( fwrite($create_f, ' <VALUE>2</VALUE>'.PHP_EOL);), иначе другое ( fwrite($create_f, ' <VALUE>1</VALUE>'.PHP_EOL);).
Загвоздка в третьем значении, а именно, ЕСЛИ длина не превышает значения 1, то необходимо в поле "KB" ничего не записывать.
Дело ещё в том, что когда добавляю ещё одну проверку, то скрипт не срабатывает.
Где, что я недосмотрел и почему?
Спасибо.
2. Vladimir Kheifets - 04 Марта, 2021 - 14:03:17 - перейти к сообщению
Rick_77 пишет:
Здравствуйте камрады!
Подскажите.
У меня УЖЕ есть готовый код, по экспорту в формат XML данных из MySQL. Однако не пойму одну вещь.
PHP:
скопировать код в буфер обмена
  1. if ($row['naln']>=1)
  2.   fwrite($create_f, '<VALUE></VALUE>'.PHP_EOL);

Загвоздка в третьем значении, а именно, ЕСЛИ длина не превышает значения 1, то необходимо в поле "KB" ничего не записывать.
Где, что я недосмотрел и почему?
Спасибо.

Добрый день! Если хотите проверить длину, то д.б.
Удачи!
3. Rick_77 - 04 Марта, 2021 - 14:13:53 - перейти к сообщению
Vladimir Kheifets пишет:
Rick_77 пишет:
Здравствуйте камрады!
Подскажите.
У меня УЖЕ есть готовый код, по экспорту в формат XML данных из MySQL. Однако не пойму одну вещь.
PHP:
скопировать код в буфер обмена
  1. if ($row['naln']>=1)
  2.   fwrite($create_f, '<VALUE></VALUE>'.PHP_EOL);

Загвоздка в третьем значении, а именно, ЕСЛИ длина не превышает значения 1, то необходимо в поле "KB" ничего не записывать.
Где, что я недосмотрел и почему?
Спасибо.

Добрый день! Если хотите проверить длину, то д.б.
Удачи!


Благодарю за внимание к такому, казалось бы простому вопросу (для меня). Пробую.
4. Rick_77 - 04 Марта, 2021 - 16:21:39 - перейти к сообщению
Rick_77 пишет:
Vladimir Kheifets пишет:
Rick_77 пишет:
Здравствуйте камрады!
Подскажите.
У меня УЖЕ есть готовый код, по экспорту в формат XML данных из MySQL. Однако не пойму одну вещь.
PHP:
скопировать код в буфер обмена
  1. if ($row['naln']>=1)
  2.   fwrite($create_f, '<VALUE></VALUE>'.PHP_EOL);

Загвоздка в третьем значении, а именно, ЕСЛИ длина не превышает значения 1, то необходимо в поле "KB" ничего не записывать.
Где, что я недосмотрел и почему?
Спасибо.

Добрый день! Если хотите проверить длину, то д.б.
Удачи!


Благодарю за внимание к такому, казалось бы простому вопросу (для меня). Пробую.



К сожалению не помогло(((
5. Vladimir Kheifets - 04 Марта, 2021 - 16:57:44 - перейти к сообщению
Rick_77 пишет:
Rick_77 пишет:
Vladimir Kheifets пишет:
Rick_77 пишет:
Здравствуйте камрады!
Подскажите.
У меня УЖЕ есть готовый код, по экспорту в формат XML данных из MySQL. Однако не пойму одну вещь.
PHP:
скопировать код в буфер обмена
  1. if ($row['naln']>=1)
  2.   fwrite($create_f, '<VALUE></VALUE>'.PHP_EOL);

Загвоздка в третьем значении, а именно, ЕСЛИ длина не превышает значения 1, то необходимо в поле "KB" ничего не записывать.
Где, что я недосмотрел и почему?
Спасибо.

Добрый день! Если хотите проверить длину, то д.б.
Удачи!


Благодарю за внимание к такому, казалось бы простому вопросу (для меня). Пробую.



К сожалению не помогло(((


Покажите, пожалуйста, Ваш код так, чтобы он был читаемым - в блоке [PHP]
6. Rick_77 - 05 Марта, 2021 - 08:01:35 - перейти к сообщению
Vladimir Kheifets пишет:
Rick_77 пишет:
Rick_77 пишет:
Vladimir Kheifets пишет:
Rick_77 пишет:
Здравствуйте камрады!
Подскажите.
У меня УЖЕ есть готовый код, по экспорту в формат XML данных из MySQL. Однако не пойму одну вещь.
PHP:
скопировать код в буфер обмена
  1. if ($row['naln']>=1)
  2.   fwrite($create_f, '<VALUE></VALUE>'.PHP_EOL);

Загвоздка в третьем значении, а именно, ЕСЛИ длина не превышает значения 1, то необходимо в поле "KB" ничего не записывать.
Где, что я недосмотрел и почему?
Спасибо.

Добрый день! Если хотите проверить длину, то д.б.
Удачи!


Благодарю за внимание к такому, казалось бы простому вопросу (для меня). Пробую.



К сожалению не помогло(((


Покажите, пожалуйста, Ваш код так, чтобы он был читаемым - в блоке [PHP]

CODE (html):
скопировать код в буфер обмена
  1.  
  2. ...
  3. fwrite($create_f, '        <ROW LINE="0" TAB="0" NAME="KB">'.PHP_EOL);
  4.         //if (strlen($row['naln']==12))
  5.         if ($row['naln']=12)
  6.         {
  7.                 fwrite($create_f, '          <VALUE>2</VALUE>'.PHP_EOL);
  8.         }
  9.         else
  10.         {
  11.                 fwrite($create_f, '          <VALUE>1</VALUE>'.PHP_EOL);
  12.         }
  13.         {
  14.     if ($row['naln']>=1)
  15.                 fwrite($create_f, '<VALUE></VALUE>'.PHP_EOL);
  16.         }
  17.         fwrite($create_f, '        </ROW>'.PHP_EOL);
  18. ...
  19.  

Спасибо.
7. Vladimir Kheifets - 05 Марта, 2021 - 10:03:02 - перейти к сообщению
Rick_77,
Вы заменили
PHP:
скопировать код в буфер обмена
  1.  //if (strlen($row['naln']==12))
  2. if ($row['naln']=12)
Потеряли знак =
т.е хотелось бы проверить не длину строки, а значение $row['naln']
попробуйте так:
Спойлер (Отобразить)
Удачи!

P.S. Для конвертироваия array в xml можно применить PHP class SimpleXMLElement
https://stackoverflow[dot]com/questi[dot][dot][dot]ray-to-simplexml
8. Rick_77 - 05 Марта, 2021 - 10:49:06 - перейти к сообщению
Vladimir Kheifets пишет:
Rick_77,
Вы заменили
PHP:
скопировать код в буфер обмена
  1.  //if (strlen($row['naln']==12))
  2. if ($row['naln']=12)
Потеряли знак =
т.е хотелось бы проверить не длину строки, а значение $row['naln']
попробуйте так:
Спойлер (Отобразить)
Удачи!

P.S. Для конвертироваия array в xml можно применить PHP class SimpleXMLElement
https://stackoverflow.com/questions/1397036/how-to-convert-array-to-simplexml

Благодарю ещё раз!
Однако не сработало корректно. А именно при длине в 12 символов записывает пустое значение.
(Добавление)
Rick_77 пишет:
Vladimir Kheifets пишет:
Rick_77,
Вы заменили
PHP:
скопировать код в буфер обмена
  1.  //if (strlen($row['naln']==12))
  2. if ($row['naln']=12)
Потеряли знак =
т.е хотелось бы проверить не длину строки, а значение $row['naln']
попробуйте так:
Спойлер (Отобразить)
Удачи!

P.S. Для конвертироваия array в xml можно применить PHP class SimpleXMLElement
https://stackoverflow.com/questions/1397036/how-to-convert-array-to-simplexml

Благодарю ещё раз!
Однако не сработало корректно. А именно при длине в 12 символов записывает пустое значение.


И при длине в 10 символов тоже. Значит не срабатывает проверка на длину строки и переходит сразу на условие где значение >= 1
9. Vladimir Kheifets - 05 Марта, 2021 - 11:10:40 - перейти к сообщению
Rick_77 пишет:
Благодарю ещё раз!
Однако не сработало корректно. А именно при длине в 12 символов записывает пустое значение.

Что у Вас $row['naln'] - число или строка?
Что Вы хотите проверить длины строк или значения чисел в $row['naln']?
Можно предположить, что если ($row['naln']==12) false , то там нет числа 12.
Если пытаться угадывать, то поменяйте $row['naln'] на strlen($row['naln'])
10. Rick_77 - 05 Марта, 2021 - 11:13:37 - перейти к сообщению
Rick_77 пишет:
Vladimir Kheifets пишет:
Rick_77,
Вы заменили
PHP:
скопировать код в буфер обмена
  1.  //if (strlen($row['naln']==12))
  2. if ($row['naln']=12)
Потеряли знак =
т.е хотелось бы проверить не длину строки, а значение $row['naln']
попробуйте так:
Спойлер (Отобразить)
Удачи!

P.S. Для конвертироваия array в xml можно применить PHP class SimpleXMLElement
https://stackoverflow.com/questions/1397036/how-to-convert-array-to-simplexml

Благодарю ещё раз!
Однако не сработало корректно. А именно при длине в 12 символов записывает пустое значение.
(Добавление)
Rick_77 пишет:
Vladimir Kheifets пишет:
Rick_77,
Вы заменили
PHP:
скопировать код в буфер обмена
  1.  //if (strlen($row['naln']==12))
  2. if ($row['naln']=12)
Потеряли знак =
т.е хотелось бы проверить не длину строки, а значение $row['naln']
попробуйте так:
Спойлер (Отобразить)
Удачи!

P.S. Для конвертироваия array в xml можно применить PHP class SimpleXMLElement
https://stackoverflow.com/questions/1397036/how-to-convert-array-to-simplexml

Благодарю ещё раз!
Однако не сработало корректно. А именно при длине в 12 символов записывает пустое значение.



И при длине в 10 символов тоже. Значит не срабатывает проверка на длину строки и переходит сразу на условие где значение >= 1
Значения в таблице у меня такие.
(Добавление)
Rick_77 пишет:
Rick_77 пишет:
Vladimir Kheifets пишет:
Rick_77,
Вы заменили
PHP:
скопировать код в буфер обмена
  1.  //if (strlen($row['naln']==12))
  2. if ($row['naln']=12)
Потеряли знак =
т.е хотелось бы проверить не длину строки, а значение $row['naln']
попробуйте так:
Спойлер (Отобразить)
Удачи!

P.S. Для конвертироваия array в xml можно применить PHP class SimpleXMLElement
https://stackoverflow.com/questions/1397036/how-to-convert-array-to-simplexml

Благодарю ещё раз!
Однако не сработало корректно. А именно при длине в 12 символов записывает пустое значение.
(Добавление)
Rick_77 пишет:
Vladimir Kheifets пишет:
Rick_77,
Вы заменили
PHP:
скопировать код в буфер обмена
  1.  //if (strlen($row['naln']==12))
  2. if ($row['naln']=12)
Потеряли знак =
т.е хотелось бы проверить не длину строки, а значение $row['naln']
попробуйте так:
Спойлер (Отобразить)
Удачи!

P.S. Для конвертироваия array в xml можно применить PHP class SimpleXMLElement
https://stackoverflow.com/questions/1397036/how-to-convert-array-to-simplexml

Благодарю ещё раз!
Однако не сработало корректно. А именно при длине в 12 символов записывает пустое значение.



И при длине в 10 символов тоже. Значит не срабатывает проверка на длину строки и переходит сразу на условие где значение >= 1
Значения в таблице у меня такие.

В случае с длиной строки тоже не срабатывает (strlen($row['naln']) == 12)
11. Vladimir Kheifets - 05 Марта, 2021 - 14:47:04 - перейти к сообщению
Rick_77 пишет:
Однако не сработало корректно. А именно при длине в 12 символов записывает пустое значение.
И при длине в 10 символов тоже. Значит не срабатывает проверка на длину строки и переходит сразу на условие где значение >= 1
Значения в таблице у меня такие.
В случае с длиной строки тоже не срабатывает (strlen($row['naln']) == 12)

На самом деле с strlen($row['naln']) == 12) cрабатывало.
У Вас было проблема с " длина не превышает значения 1"
Я добавил в тэг value атрибут test, который после тестирования нужно убрать.
Спойлер (Отобразить)
Удачи!
12. Rick_77 - 05 Марта, 2021 - 15:25:27 - перейти к сообщению
Vladimir Kheifets пишет:
Rick_77 пишет:
Однако не сработало корректно. А именно при длине в 12 символов записывает пустое значение.
И при длине в 10 символов тоже. Значит не срабатывает проверка на длину строки и переходит сразу на условие где значение >= 1
Значения в таблице у меня такие.
В случае с длиной строки тоже не срабатывает (strlen($row['naln']) == 12)

На самом деле с strlen($row['naln']) == 12) cрабатывало.
У Вас было проблема с " длина не превышает значения 1"
Я добавил в тэг value атрибут test, который после тестирования нужно убрать.
Спойлер (Отобразить)
Удачи!


Большущая благодарность за участие.
Решил вопрос таким способом:
PHP:
скопировать код в буфер обмена
  1.  
  2.     fwrite($create_f, '<ROW LINE="0" TAB="0" NAME="KB">'.PHP_EOL);
  3.                 if (strlen($row['naln']) == 10)
  4.                 {
  5.                         fwrite($create_f, '<VALUE>1</VALUE>'.PHP_EOL);
  6.                 }
  7.                         else if (strlen($row['naln']) == 12)
  8.                         {
  9.                 fwrite($create_f, '<VALUE>2</VALUE>'.PHP_EOL);
  10.                         }
  11.                 else
  12.                 {
  13.              fwrite($create_f, '<VALUE></VALUE>'.PHP_EOL);
  14.                 }
  15.     fwrite($create_f, '</ROW>'.PHP_EOL);
  16.  
13. Vladimir Kheifets - 05 Марта, 2021 - 18:17:16 - перейти к сообщению
Rick_77 пишет:
Vladimir Kheifets пишет:
Rick_77 пишет:
Однако не сработало корректно. А именно при длине в 12 символов записывает пустое значение.
И при длине в 10 символов тоже. Значит не срабатывает проверка на длину строки и переходит сразу на условие где значение >= 1
Значения в таблице у меня такие.
В случае с длиной строки тоже не срабатывает (strlen($row['naln']) == 12)

На самом деле с strlen($row['naln']) == 12) cрабатывало.
У Вас было проблема с " длина не превышает значения 1"
Я добавил в тэг value атрибут test, который после тестирования нужно убрать.
Спойлер (Отобразить)
Удачи!


Большущая благодарность за участие.
Решил вопрос таким способом:
PHP:
скопировать код в буфер обмена
  1.  
  2.     fwrite($create_f, '<ROW LINE="0" TAB="0" NAME="KB">'.PHP_EOL);
  3.                 if (strlen($row['naln']) == 10)
  4.                 {
  5.                         fwrite($create_f, '<VALUE>1</VALUE>'.PHP_EOL);
  6.                 }
  7.                         else if (strlen($row['naln']) == 12)
  8.                         {
  9.                 fwrite($create_f, '<VALUE>2</VALUE>'.PHP_EOL);
  10.                         }
  11.                 else
  12.                 {
  13.              fwrite($create_f, '<VALUE></VALUE>'.PHP_EOL);
  14.                 }
  15.     fwrite($create_f, '</ROW>'.PHP_EOL);
  16.  

Можно короче
PHP:
скопировать код в буфер обмена
  1. foreach($res as $row['naln'])
  2. {      
  3.     $len = strlen($row['naln']);
  4.     $value=$len==12?2:$len==10?1:"";
  5.     fwrite($create_f, '<ROW LINE="0" TAB="0" NAME="KB">'.PHP_EOL);  
  6.     fwrite($create_f, "<VALUE>$value</VALUE>".PHP_EOL);    
  7.     fwrite($create_f, '</ROW>'.PHP_EOL);
  8. }
14. Rick_77 - 09 Марта, 2021 - 08:39:18 - перейти к сообщению
Vladimir Kheifets пишет:
Rick_77 пишет:
Vladimir Kheifets пишет:
Rick_77 пишет:
Однако не сработало корректно. А именно при длине в 12 символов записывает пустое значение.
И при длине в 10 символов тоже. Значит не срабатывает проверка на длину строки и переходит сразу на условие где значение >= 1
Значения в таблице у меня такие.
В случае с длиной строки тоже не срабатывает (strlen($row['naln']) == 12)

На самом деле с strlen($row['naln']) == 12) cрабатывало.
У Вас было проблема с " длина не превышает значения 1"
Я добавил в тэг value атрибут test, который после тестирования нужно убрать.
Спойлер (Отобразить)
Удачи!


Большущая благодарность за участие.
Решил вопрос таким способом:
PHP:
скопировать код в буфер обмена
  1.  
  2.     fwrite($create_f, '<ROW LINE="0" TAB="0" NAME="KB">'.PHP_EOL);
  3.                 if (strlen($row['naln']) == 10)
  4.                 {
  5.                         fwrite($create_f, '<VALUE>1</VALUE>'.PHP_EOL);
  6.                 }
  7.                         else if (strlen($row['naln']) == 12)
  8.                         {
  9.                 fwrite($create_f, '<VALUE>2</VALUE>'.PHP_EOL);
  10.                         }
  11.                 else
  12.                 {
  13.              fwrite($create_f, '<VALUE></VALUE>'.PHP_EOL);
  14.                 }
  15.     fwrite($create_f, '</ROW>'.PHP_EOL);
  16.  

Можно короче
PHP:
скопировать код в буфер обмена
  1. foreach($res as $row['naln'])
  2. {      
  3.     $len = strlen($row['naln']);
  4.     $value=$len==12?2:$len==10?1:"";
  5.     fwrite($create_f, '<ROW LINE="0" TAB="0" NAME="KB">'.PHP_EOL);  
  6.     fwrite($create_f, "<VALUE>$value</VALUE>".PHP_EOL);    
  7.     fwrite($create_f, '</ROW>'.PHP_EOL);
  8. }


Благодарю за помощь! Удачи!

 

Powered by ExBB FM 1.0 RC1