PHP + SQL + XML
|
13-04-2010, 15:58
(Esta mensagem foi modificada pela última vez a: 13-04-2010 16:42 por mpmont.)
Mensagem: #1
|
|||
|
|||
PHP + SQL + XML
boa tarde,
estou a tentar fazer uma pequena aplicação em flash que vai buscar todo o conteúdo a xml. Então, agora pensei em fazer um pequeno backoffice para a coisa e estou a fazer uns testes para ver se consigo por a coisa a funcionar, mas até agora sem sucesso. Pelo que li a melhor maneira para fazer isto é ter uma base de dados que basicamente tem a estrutura do xml. por exemplo tenho o xml articles que pode ser algo como: <articles> <article> <id>1</id> <title>asd</title> <intro>asdasd</intro> <content>asdasd</content> <date>asdasd</date> </article> </articles> e então terei uma tabela chamada articles que tem esta estrutura. Depois sempre que vou submeter um artigo novo por um formulário em php tenho que ir buscar os dados à base de dados e re-escrever o ficheiro articles.xml. Na parte do inserir na base de dados os novos dados, não tenho qualquer problema, no entanto é na parte do escrever de novo o xml é que as coisas se complicam. aqui vai o que consegui fazer até agora: Código PHP: //vai buscar conteudo à bd por agora recebo dois erros: Warning: SimpleXMLElement::addChild() [simplexmlelement.addchild]: Cannot add child. Parent is not a permanent member of the XML tree in D:\wamp\www\xmlteste\addnew.php on line 31 Fatal error: Call to a member function addChild() on a non-object in D:\wamp\www\xmlteste\addnew.php on line 32 alguém me pode ajudar?? não tenho experiência nenhuma em trabalhar com php e XML.. a única experiência que tenho é de php + SQL e mesmo assim não é assim tanta. ok, ja consigo adicionar a nova info no ficheiro xml: fiz a seguinte modificação: Código PHP: $xml = simplexml_load_file("articles.xml"); como podem ver adicionei na linha 2 $xml->articles[0] = NULL; supostamente isto deveria apagar todo o conteudo do node articles, no entanto isso não acontece... já só falta isto pois agora quando escrevo o xml ele nao apaga o conteudo que já lá estava e fica a dobrar... |
|||
13-04-2010, 17:08
Mensagem: #2
|
|||
|
|||
RE: PHP + SQL + XML
Boas,
Por acaso não costumo utilizar esse método para gravar XML's, escrevo mesmo as tags e escrevo no ficheiro. Assim de repente (e sem ver exactamente o que faz o método asXML() nem perceber a existência do $sxe), mostra a tua função gravarXML, sff. BrunoBernardino.com |
|||
13-04-2010, 17:30
(Esta mensagem foi modificada pela última vez a: 13-04-2010 17:35 por mpmont.)
Mensagem: #3
|
|||
|
|||
RE: PHP + SQL + XML
Código PHP: function gravarXML( $simpleXMLobject ) { eu acho que também preferia escrever as tags... por acaso não tens nenhum exemplo para eu me guiar??? é que todos os exemplos que encontrei usavam simpleXML o asXML serve para indentar o XML quando é criado! p'lo menos foi o que li... basicamente o que me falta fazer agora é apagar todo o conteúdo dentro do articles antes de voltar a escrever... |
|||
14-04-2010, 12:20
(Esta mensagem foi modificada pela última vez a: 14-04-2010 14:31 por WebDevXtream.)
Mensagem: #4
|
|||
|
|||
RE: PHP + SQL + XML
Olá bom dia,
Penso que o Bruno se está a referir a isto: Código PHP: //Inicia os dados a gravar no ficheiro XML Espero ter-te ajudado de alguma forma. Abraço WebDevXtream.com - WebDesign, SEO, Domínios, Alojamento, e-Commerce e Publicidade |
|||
14-04-2010, 13:54
(Esta mensagem foi modificada pela última vez a: 14-04-2010 13:54 por Bruno Bernardino.)
Mensagem: #5
|
|||
|
|||
RE: PHP + SQL + XML
O ficheiro articles.xml tem as permissões necessárias?
Quanto ao exemplo que me pediste, é muito simples, é como se estivesses a escrever um ficheiro de texto, vê esta função: Código PHP: <?php BrunoBernardino.com |
|||
14-04-2010, 17:22
(Esta mensagem foi modificada pela última vez a: 14-04-2010 17:24 por mpmont.)
Mensagem: #6
|
|||
|
|||
RE: PHP + SQL + XML
olá e desde já obrigado por estarem a ajudar,
@WebDevXtream esse teu exemplo ele escreve o ficheiro todo, mas imagina que eu no mesmo ficheiro tinha mais info do a info relativa aos articles? como é que eu fazia para ele escrever apenas dentro de <articles> criando cada um dos artigos dentro desta tag... o meu exemplo com simplexml está a funcionar, só não apaga antes de escrever no sitio, mas já escreve no sitio certo... ou seja se houvesse uma maneira de apagar o conteudo do ficheiro entre <articles> e </articles> era ouro sobre azul |
|||
14-04-2010, 17:40
(Esta mensagem foi modificada pela última vez a: 14-04-2010 17:44 por WebDevXtream.)
Mensagem: #7
|
|||
|
|||
RE: PHP + SQL + XML
Olá,
Não sei se percebo muito bem a tua ideia... No exemplo que te dei, no fundo o ficheiro xml é re-escrito todas as vezes que é executado, ou seja não há necessidade de te preocupares com o conteúdo que está dentro de <articles>...</articles> pois consoante a tua "query" são "escritos" os artigos que tu pretendes. E o exemplo também foi no seguimento da sugestão do Bruno, de escrever as tag's directamente. Eu no teu caso, e atenção que estou a "Lançar para o Ar", pois não conheço o que estás no fundo a programar, criaria uma função que me iria gerar este bloco do <articles> (retirando como é obvio a parte de escrever o ficheiro e os header's de geração de xml), e depois na zona onde pretendesse que fosse incorporado a parte de <articles> chamava a função. Assim sendo tens o script com todas as informações que pretendes, além da parte do <articles>, e depois apenas são escritos os resultados da query no formato xml naquele determinado ponto em que chamas a função, e podes continuar a anexar mais informação no script. No fim escreves o ficheiro xml no servidor, coma minha solução "fwrite()" ou com a do Bruno "file_put_contents()", são a mesma coisa. Sei que pode estar a parecer um pouco confuso mas também estamos no campo das suposições . Um abraço. WebDevXtream.com - WebDesign, SEO, Domínios, Alojamento, e-Commerce e Publicidade |
|||
« Mais Antigo | Mais Recente »
|
Utilizadores a ver este tópico: 2 Visitante(s)