Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Francispansa

Como editar Arquivo XML com PHP

Recommended Posts

Olá, gostaria de ver se podem me ajudar maisu ma vez.

 

Estou no seguinte dilema, tenho um calendário feito com Flash+XML que funciona perfeitamente.

Ele busca os dados no arquivo XML e imprime como eventos no calendário.

 

Agora vem meu probleminha. :lol:

Como fazer para editar esse arquivo XML através de um formulário PHP.

 

Aqui vai o código do xml.

 

calendar.xml

<?xml version="1.0" encoding="utf-8"?>

<calendar>
<year value='2010'>
<month value='04'>
<day value='13'>
<label>Teste 01</label>
<description>Aqui vai toda a descrição do evento...</description>
</day>
<day value='17'>
<label>Excurção</label>
<description>Aqui vai toda a descrição da excurção...</description>
</day>
</month>
</year>
</calendar>

Bom, ai eu pergunto, como fazer para inserir novos eventos através do furmulario php.

Até consegui inserir alguns dados da seguinte forma.:

 

gravar.php

<?
	//PEGA OS DADOS ENVIADOS PELO FORMULÁRIO
	$ano	=    $_POST["ano"];
	$mes	=    $_POST["mes"];
	$dia	=    $_POST["dia"];
        $titulo	=    $_POST["titulo"];
	$descricao = $_POST["descricao"];
	
	
	$conteudo	="\n<calendar>\n<year value='$ano'>\n<month value='$mes'>\n<day value='$dia'>\n<label>$titulo</label>\n\n<description>$descricao</description>\r\n</day></month></year></calendar>";
	
	
	$arquivo	=	"calendar.xml";
	
	
	if (!$abrir = fopen($arquivo, "a")) {
         echo  "Erro abrindo arquivo ($arquivo)";
         exit;
    }
	
	
	if (!fwrite($abrir, $conteudo)) {
        print "Erro escrevendo no arquivo ($arquivo)";
        exit;
    }
	
	echo "Arquivo gravado com Sucesso !!";
	
	//FECHA O ARQUIVO 
	fclose($abrir);
?>

Mas eu acredito que não estou fazendo da forma mais correta essa inclusão de dados, e outra todos os dados tenque ficar dentro dos node <calendar> <year>, e da forma que fiz ele sempre adiciona <calendar> e <year> o que gera um erro, onde o calendario so lê o primeiro evento da lista.

 

Se alguem puder me dar uma luz fico grato.

 

Att, Francis

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom,

 

Não sei a complexidade, ou funcionalidades do seu projeto.

 

Mas algo que está sendo muito utilizado para criar XML seria a utilizar do velho e bom HEADER.

 

 

No caso você criaria o seu código PHP, com ou sem banco de dados, só que acrescente um detalhe logo após <?

 

<?
header("Content-type: text/xml");  

//imprima seu código aqui, print ou echo já funcionaria.

?>

 

rode o seu arquivo.php e veja o resultado, pode requisitá-lo como .php

 

até mesmo para sitemap.xml funciona beleza, e uso em meus clientes, pois gera os sitemaps dinamicamente. (sitemap.php)

 

Esperto te ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom,

 

Não sei a complexidade, ou funcionalidades do seu projeto.

 

Mas algo que está sendo muito utilizado para criar XML seria a utilizar do velho e bom HEADER.

 

 

No caso você criaria o seu código PHP, com ou sem banco de dados, só que acrescente um detalhe logo após <?

 

<?
header("Content-type: text/xml");  

//imprima seu código aqui, print ou echo já funcionaria.

?>

 

rode o seu arquivo.php e veja o resultado, pode requisitá-lo como .php

 

até mesmo para sitemap.xml funciona beleza, e uso em meus clientes, pois gera os sitemaps dinamicamente. (sitemap.php)

 

Esperto te ajudado.

 

IntDigital, trabalhando com header eu estaria criando o XML, ou estou enganado?

Mas teria como através do header eu estar editando o arquivo XML?

 

Desde já agradeço pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal agora acho q ficou mais simples.

Como eu faço para inserir algumas linhas de XML em determinado ponto do arquivo XML.

 

Exemplo, meu arquivo XML tem a seguinte estrutura.:

 

calendar.xml

<?xml version="1.0" encoding="utf-8"?>
<calendar>
<year value="2010">

</year>
</calendar>
Eu consigo adicionar o que quero no XML, mas sempre fica um abaixo do outro, assim.:

 

<?xml version="1.0" encoding="utf-8"?>
<calendar>
<year value="2010">

</year>
</calendar>
   <month value='04'>
    <day value='04'>
     <label>04</label>
       <description>04</description>
</day>
</month>
   <month value='05'>
    <day value='05'>
     <label>05</label>
       <description>05</description>
</day>
</month>

Agora a unica coisa de que preciso é saber como adicionar essas linhas dentro das tags " calendar e year ".:

 

<?xml version="1.0" encoding="utf-8"?>
<calendar>
<year value="2010">

Inserir as linhas aqui dentro..

</year>
</calendar>

A estrutura do meu arquivo PHP que grava esses dados no XML é essa.:

 

<?
$arquivo = "calendar.xml";
$year = $_POST["year"];
$month = $_POST["month"];
$day = $_POST["day"];
$label = $_POST["label"];
$description = $_POST["description"];

$conteudo = "<month value='$month'>\n<day value='$day'>\n<label>$label</label>\n<description>$description</description>\n</day>\n</month>\n\n";

if(is_writable($arquivo)) {
$manipular = fopen("$arquivo", "a");

if(!$manipular) {
echo "";
}
if(!fwrite($manipular, $conteudo)) {
echo "";
}
echo "Salvo com sucesso";

fclose($manipular);
}
else {
echo "O $arquivo não tem permissões de leitura e/ou escrita.";
}
?>

Vou continuar procurando a solução, mas como sou iniciante me PHP toda ajuda é bem vinda.

 

Obrigado pela atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.