[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сохранение в файл xml
maximka787
Всем привет. Помогите пожалуйста разобраться с кодом. Мне нужно, чтобы по нажатию на ссылку вылетал файл xml сгенерированный. С выводом текстового файла проблем нет, а с XML непонятно, что не так, еще и второй заголовок добавлен.

<?
if(isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))

Header('Content-Type: application/force-download');
else
Header('Content-Type: application/octet-stream');

Header('Accept-Ranges: bytes');
Header('Content-Length: '.strlen($test));
Header('Content-disposition: attachment; filename="new.xml"');

///////////// СОДЕРЖАНИЕ
header("Content-type: text/html; charset=Windows-1251"); // ВОЗМОЖНО И ТУТ ПРОБЛЕМА

echo '<?xml version="1.0" encoding="Windows-1251"?>';

$result = mysql_query("select * from table");
$num_results = mysql_num_rows($result);
$row = mysql_fetch_array($result);

echo '<root>
<firm name="'
.$row['name'].'
inn="'
.$row['inn'].'
kpp="'
.$row['kpp'].'">
</root>'
;
///////////// СОДЕРЖАНИЕ
?>

Еще и выдает пустой файл



Спустя 32 минуты, 54 секунды (8.02.2011 - 12:35) linker написал(а):
text/xml. Вот это вот непонятно че такое
echo '<root>
<firm name="'
.$row['name'].'
inn="'
.$row['inn'].'
kpp="'
.$row['kpp'].'">
</root>'
;
видимо надо
echo '<root>
<firm name="'
.htmlentities($row['name']).'" inn="'.$row['inn'].'" kpp="'.$row['kpp'].'">
</root>'
;
Вообще все напутано, то ли это два разных сорца, то ли еще что, ибо два раза заголовок с разным Content-Type - так не бывает.

Спустя 8 минут, 22 секунды (8.02.2011 - 12:43) maximka787 написал(а):
Было вот так
$string = "Hello, world!";

if(isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))

Header('Content-Type: application/force-download');
else
Header('Content-Type: application/octet-stream');

Header('Accept-Ranges: bytes');
Header('Content-Length: '.strlen($string));
Header('Content-disposition: attachment; filename="test.xml"');

echo $string;
exit();

Мне только вместо файла txt надо xml

$row['name'] - это значение переменной из базы
зачем такая конструкция: htmlentities($row['name']) ??

Спустя 9 минут, 23 секунды (8.02.2011 - 12:53) linker написал(а):
XML ругается когда в качестве значений атрибутов и прочих выступают символы: <>!="&|
echo '<root>
<firm name="'
.htmlentities($row['name']).'" inn="'.$row['inn'].'" kpp="'.$row['kpp'].'" />
</root>'
;
Собственно нет никакой разницы, текстовый там или XML файл отдается.

Спустя 2 минуты, 24 секунды (8.02.2011 - 12:55) maximka787 написал(а):
Цитата (linker @ 8.02.2011 - 09:53)
XML ругается когда в качестве значений атрибутов и прочих выступают символы: <>!="&|
echo '<root>
<firm name="'
.htmlentities($row['name']).'" inn="'.$row['inn'].'" kpp="'.$row['kpp'].'" />
</root>'
;

То есть, при выводе в XML использовать не $row['name']

а ТОЛЬКО!

htmlentities($row['name']) ?

Спустя 1 минута, 45 секунд (8.02.2011 - 12:57) linker написал(а):
Так делать только с теми данными, которые являются текстовыми и которые могут содержать перечисленные символы.

Спустя 2 минуты, 30 секунд (8.02.2011 - 13:00) maximka787 написал(а):
Спасибо, буду иметь ввиду. И кстати, вопрос решил с кодом. Сильно напутал в коде самом и заголовок закомментил
header("Content-type: text/html; charset=Windows-1251");


_____________
..Работает - не трогай!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.