Espector 0 Denunciar post Postado Julho 24, 2012 Boa noite, Pesquisei em diversos sites e não encontrei nada, espero a ajuda de todos! Tenho o seguinte formulário em HTML: Index.html <form> <input type="text" name="nome" value="Nome"></br> <input type="text" name="senha" value="Senha"></br> <select name="lista" size="1"> <option value="1">Selecione</option> <option value="CEU">CEU</option> <option value="MYPROFILE">MYPROFILE</option> </select> </br> <textarea name="comentario" rows="5" cols="40"></textarea></br> <input type="submit" value="Enviar" > </form> E possui um arquivo.xml. Gostaria que ao inserir as informações no formulário HTML ele joga-se dentro do arquivo.xml no seguinte formato: <user name="felix" password="1100" profiles="myprofile" /> <!-- marcelod2 --> Nome = "felix" Senha = "1100" Selecione = "myprofile" Comentario = <!-- marcelod2 --> Observe que as informações que foi colocado no formulário HTML iriam no formato xml para o arquivo.xml. Teria como fazer isso em PHP? ou de alguma outra forma? Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Julho 24, 2012 Cara, você pode trabalhar com a classe DOMDocument Exemplo: <?php $id = 1; $name = 'Carlos Coelho'; $password = '12345'; $profile = 'My profile'; $comment = 'My comment'; $filename = 'file.xml'; $DOMDocument = new DOMDocument( '1.0', 'UTF-8' ); $DOMDocument->formatOutput = true; $DOMDocument->preserveWhiteSpace = false; if( file_exists( $filename ) ) { $DOMDocument->load( $filename ); $users = $DOMDocument->getElementsByTagName( 'users' )->item( 0 ); $id = ( int ) $users->lastChild->getAttribute( 'id' ); $id++; } else { $users = $DOMDocument->createElement( 'users' ); } $user = $DOMDocument->createElement( 'user' ); $user->setAttribute( 'id', $id ); $user->appendChild( $DOMDocument->createElement( 'name', $name ) ); $user->appendChild( $DOMDocument->createElement( 'password', $password ) ); $user->appendChild( $DOMDocument->createElement( 'profile', $profile ) ); $user->appendChild( $DOMDocument->createElement( 'comment', $comment ) ); $users->appendChild( $user ); $DOMDocument->appendChild( $users ); $DOMDocument->save( $filename ); ?> Vai gerar um arquivo xml assim: <?xml version="1.0" encoding="UTF-8"?> <users> <user id="1"> <name>Carlos Coelho</name> <password>12345</password> <profile>My profile</profile> <comment>My comment</comment> </user> <user id="2"> <name>Carlos Coelho</name> <password>12345</password> <profile>My profile</profile> <comment>My comment</comment> </user> <user id="3"> <name>Carlos Coelho</name> <password>12345</password> <profile>My profile</profile> <comment>My comment</comment> </user> </users> Depois para "puxar" o que você quer: <?php $id = 3; $filename = 'file.xml'; $DOMDocument = new DOMDocument( '1.0', 'UTF-8' ); $DOMDocument->preserveWhiteSpace = false; $DOMDocument->load( $filename ); $DOMXPath = new DOMXPath( $DOMDocument ); foreach( $DOMXPath->query( sprintf( './/user[@id="%u"]', $id ) ) as $childNodes ) { printf( '<strong>%s:</strong> %u<br/>', ucfirst( $childNodes->attributes->item( 0 )->name ), $childNodes->getAttribute( 'id' ) ); foreach( $childNodes->childNodes as $childNode ) { printf( '<strong>%s:</strong> %s<br/>', ucfirst( $childNode->nodeName ), $childNode->nodeValue ); } } ?> Saída: Id: 3 Name: Carlos Coelho Password: 12345 Profile: My profile Comment: My comment Compartilhar este post Link para o post Compartilhar em outros sites
Espector 0 Denunciar post Postado Julho 25, 2012 Boa noite, Consegui da seguinte maneira: <?php extract($_POST); $xml = simplexml_load_file ("teste.xml"); $filho = $xml->addChild('user',''); $filho->addChild("name","$nome"); $filho->addChild("password","$senha"); $filho->addChild("profiles","$profiles"); file_put_contents ("teste.xml", $xml->asXML()); echo "<script>window.location='index.html';alert('Dados Incluidos com Sucesso!');</script>"; ?> Ele grava certinho pegando as informações do formulário e jogando no teste.xml!! Porém ele joga sempre na ultima linha do arquivo xml. Teria como fazer para ele jogar conforme o código abaixo? <user-manager class="com.bowman.cardserv.SimpleUserManager"> <auth-config> <user name="admin" password="adsl" max-connections="5" admin="true"/> "O usuário cadastrado seria jogado dentro deste campo." </auth-config> </user-manager> Ou teria como eu vincular o "user-manager" ou "auth-config" a outro XML ou iria conter os usuarios? Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Vadio 13 Denunciar post Postado Julho 26, 2012 acho q com a simple xml não tem não mas com a domdocument tem. com o appendchild utilize o cod do Carlos Coelho para implementação http://www.php.net/manual/pt_BR/class.domdocument.php Compartilhar este post Link para o post Compartilhar em outros sites