Ir para conteúdo

POWERED BY:

Arquivado

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

Natan Domingos

O q esta errado??

Recommended Posts

Pessoal, estou tentando criar um arquivo xml via php, estou usando esse codigo mas fika dando erro. Olha o php:

 

PHP

[*]<?php

[*]

[*]$connection = mysql_connect("localhost", "usuario", "senha") or die ('cannot reach database');

[*]

[*]$db = mysql_select_db("bd") or die ("this is not a valid database");

[*]

[*]$sql = @mysql_query("SELECT LEFT(nome,1) as letra, nome, telefone, email, cidade, endereco from agenda Order by nome;") or die("ERRO NO SQL");

[*]

[*]$row=mysql_num_rows($sql);

[*]

[*]if($row>0){

[*]

[*] $conteudo = "<?xml version='1.0'?><list>";

[*]

[*] for($i=0; $i<$row; $i++) {

[*]

[*] $letra = mysql_result($sql,$i,"LETRA");

[*]

[*] $nome = mysql_result($sql,$i,"NOME");

[*]

[*] $telefone = mysql_result($sql,$i,"TELEFONE");

[*]

[*] $email= mysql_result($sql,$i,"EMAIL");

[*]

[*] $cidade = mysql_result($sql,$i,"CIDADE");

[*]

[*] $endereco = mysql_result($sql,$i,"ENDERECO");

[*]

[*] $conteudo .= "<agenda><letra>";

[*]

[*] $conteudo .= $letra;

[*]

[*] $conteudo .= "</letra><nome>";

[*]

[*] $conteudo .= $nome;

[*]

[*] $conteudo .= "</nome><telefone>";

[*]

[*] $conteudo .= $telefone;

[*]

[*] $conteudo .= "</telefone><email>";

[*]

[*] $conteudo .= $email;

[*]

[*] $conteudo .= "</email><cidade>";

[*]

[*] $conteudo .= $cidade;

[*]

[*] $conteudo .= "</cidade><endereco>";

[*]

[*] $conteudo .= $endereco;

[*]

[*] $conteudo .= "</endereco></agenda>";

[*]

[*] }

[*]

[*] $conteudo .= "</list>";

[*]

[*] $ponteiro = fopen("agenda.xml", "w");

[*]

[*] fwrite($ponteiro, utf8_encode($conteudo));

[*]

[*] fclose($ponteiro);

[*]

[*] echo "O arquivo <b> agenda.xml </b> foi gerado com SUCESSO !";

[*]

[*]}else{

[*]

[*] echo "Não existe nenhum registro na agenda!";

[*]

[*]}

[*]?>

 

E o xml fika dessa maneira:

 

<?xml version="1.0" ?>  <list> <agenda> <letra />  <nome />  <telefone />  <email />  <cidade />  <endereco />  </agenda> <agenda> <letra />  <nome />  <telefone />  <email />  <cidade />  <endereco />  </agenda> </list>
Não sei onde esta o erro. Espero q possam me ajudar.

 

Valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa, mas esse codigo esta funcionando sim, foi apenas uma falta de atenção minha, mas estou tendo problemas pra fazer um arquivo em xml como esse:

 

<?xml version="1.0" ?><agenda><primeira letra="N"><primeiro nome='nome'><telefone>telefone</telefone><email>email</email><cidade>cidade</cidade><endereco>endereco</endereco></primeiro><primeiro nome='n'><telefone>55555555</telefone><email>fjdjdfjfdf</email><endereco>djdjdjdjdjd</endereco></primeiro></primeira></agenda>
Eu queria q os nomes fikassem agrupados na tag primeira letra, mas quando fasso isso no php ele não coloka juntas, olha o codigo php:

 

PHP

[*]<?php

[*]

[*]$connection = mysql_connect("localhost", "usuario", "senha") or die ('cannot reach database');

[*]$db = mysql_select_db("bd") or die ("this is not a valid database");

[*]

[*]$sql = @mysql_query("SELECT LEFT(nome,1) as letra, nome, telefone, email, cidade, endereco from agenda Order by nome;") or die("ERRO NO SQL");

[*]

[*]$row=mysql_num_rows($sql);

[*]

[*]if($row>0){

[*]

[*] $conteudo = "<?xml version='1.0'?><agenda>";

[*]

[*] for($i=0; $i<$row; $i++) {

[*]

[*] $letra = mysql_result($sql,$i,"LETRA");

[*]

[*] $nome = mysql_result($sql,$i,"NOME");

[*]

[*] $telefone = mysql_result($sql,$i,"TELEFONE");

[*]

[*] $email= mysql_result($sql,$i,"EMAIL");

[*]

[*] $cidade = mysql_result($sql,$i,"CIDADE");

[*]

[*] $endereco = mysql_result($sql,$i,"ENDERECO");

[*]

[*] $conteudo .= "<primeira letra='$letra'>";

[*]

[*] $conteudo .= "<primeiro nome='$nome'>";

[*]

[*] $conteudo .= "<telefone>$telefone</telefone>";

[*]

[*] $conteudo .= "<email>$email</email>";

[*]

[*] $conteudo .= "<cidade>$cidade</cidade>";

[*]

[*] $conteudo .= "<endereco>$endereco</endereco>";

[*]

[*] $conteudo .= "</primeiro>";

[*]

[*] $conteudo .= "</primeira>";

[*]

[*] }

[*]

[*] $conteudo .= "</agenda>";

[*]

[*] $ponteiro = fopen("agenda2.xml", "w");

[*]

[*] fwrite($ponteiro, utf8_encode($conteudo));

[*]

[*] fclose($ponteiro);

[*]

[*] echo "O arquivo <b> agenda.xml </b> foi gerado com SUCESSO !";

[*]

[*]}else{

[*]

[*] echo "Não existe nenhum registro na agenda!";

[*]

[*]}

[*]

[*]?>

 

Desculpe pelo outro post e espero q possam quebrar esse galho pra mim.

 

Valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao entendi cara...voce quer por:

<primeira letra='N'>{$loop$}</primeira>

é ? se for voce teria qeu tirar o primeira letra do loop:

$conteudo = "<?xml version='1.0'?><agenda>";$conteudo .= "<primeira letra='$letra'>";for($i=0; $i<$row; $i++) {$letra = mysql_result($sql,$i,"LETRA");$nome = mysql_result($sql,$i,"NOME");$telefone = mysql_result($sql,$i,"TELEFONE");$email= mysql_result($sql,$i,"EMAIL");$cidade = mysql_result($sql,$i,"CIDADE");$endereco = mysql_result($sql,$i,"ENDERECO");$conteudo .= "<primeiro nome='$nome'>";$conteudo .= "<telefone>$telefone</telefone>";$conteudo .= "<email>$email</email>";$conteudo .= "<cidade>$cidade</cidade>";$conteudo .= "<endereco>$endereco</endereco>";$conteudo .= "</primeiro>";}$conteudo .= "</primeira>";$conteudo .= "</agenda>";

ps: se estou falando besteira desculpe, to com sono e nao sei muito bem o que estou lendo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae red neck *, o seu codigo continuou na msm, vou tentar te explikar um poko melhor pra você e os outros entenderem. Eu quero criar um codigo em php para gerar um xml q sera usado no Flash, é importante eu colokar os nomes nas letras q correspondem ao seu nome, com João no J, Natan no N etc. No código q bolei ele cria tudo certo mas os nomes não fikam agrupados corretamente, fika assim:

 

<?xml version="1.0" ?><agenda><primeira letra = "N"><primeiro nome = "Natan"><aki vem os dados correspondente ao nome></primeiro></primeira><primeira letra = "N"><primeiro nome = "Natalia"><aki vem os dados correspondente ao nome></primeiro></primeira></agenda>

Viu, os nomes não sao colokados junto com a letra e sim cria mais um node (acho q eh esse o nome neh) com a letra, e não estão agrupados como esse aki q eu queria:

 

<?xml version="1.0" ?><agenda><primeira letra = "N"><primeiro nome = "Natan"><aki vem os dados correspondente ao nome></primeiro><primeiro nome = "Natalia"><aki vem os dados correspondente ao nome></primeiro></primeira></agenda>

No seu aparece assim:

 

<?xml version="1.0"?><agenda><primeira letra = ""><primeiro nome = "Natan"><dados correspondente ao nome></primeiro><primeiro nome = "José"><dados correspondentes ao nome></primeiro></primeira></agenda>

Viu, ele agrupa todos os nomes e não os correspondentes a letra.

 

Ufa, acho q agora eu explikei melhor e espero q possam me ajudar agora sem muitos problemas pra entende. Qualquer duvida eh so falar. Valew

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi, voce quer organizar por letras...tipo, como que esta na db ?eu pensei aqui num jeito trabalhoso e pouco eficaz, por exemplo:select * from tabela WHERE letra="a"ai poe os contatos de aassim vai indo ate o Z, mais nao seria eficaz, e seria bem trabalhoso, mais nao consigo pensar em outro jeito =/desse jeito que falei poderia botar o select dentro de um loop, ai ficaria facil.. mais mesmo assim continua sem um jeito trabalhoso de fazer isso..espera que o pessoal deve ter ideias melhores[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu pensei agora poko faze um poko diferente, mas precisaria ainda da ajuda de vcs. Podia criar uma arquivo xml ja com todas as letras, depois usariamos algum if pra verificar a primeira letra, se fosse verdadeira colokava na letra correspondente, entendeu. Eu vou tentar fazer aki mas eu nao sei se consigo, se vcs pudessem me ajudar sou muito grato.Valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tinha pensado nisso tambem, mais nao sei se daria certo, ai eu postei o outro jeito que é mais garantido ^^[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colokei essa pergunta em outro forum e reponderam com esse código:

 

PHP

[*]<?php

[*]

[*]$connection = mysql_connect("localhost", "usuario", "senha") or die ('cannot reach database');

[*]

[*]$db = mysql_select_db("bd") or die ("this is not a valid database");

[*]

[*]$sql = @mysql_query("SELECT LEFT(nome,1) as letra, nome, telefone, email, cidade, endereco from agenda Order by nome;") or die("ERRO NO SQL");

[*]

[*]$row=mysql_num_rows($sql);

[*]

[*]if($row>0){

[*]

[*]  $conteudo = "<?xml version='1.0'?><agenda>";

[*]

[*]$letraAnterior="";

[*]

[*]$grupoAberto=false;

[*]

[*]  for($i=0; $i<$row; $i++) {

[*]

[*]  $letra = mysql_result($sql,$i,"LETRA");

[*]

[*]  $nome = mysql_result($sql,$i,"NOME");

[*]

[*]  $telefone = mysql_result($sql,$i,"TELEFONE");

[*]

[*]  $email= mysql_result($sql,$i,"EMAIL");

[*]

[*]  $cidade = mysql_result($sql,$i,"CIDADE");

[*]

[*]  $endereco = mysql_result($sql,$i,"ENDERECO");

[*]

[*] if($letraAnterior != $letra){

[*]

[*] if($grupoAberto){

[*]

[*]  $conteudo .= "</primeira>";

[*]

[*]  $grupoAberto=false;  

[*]

[*] }else{

[*]

[*]  $grupoAberto=true;

[*]

[*] }

[*]

[*]  $letraAnterior=$letra;

[*]

[*]  $conteudo .= "<primeira letra='$letra'>";

[*]

[*]  }

[*]

[*] $conteudo .= "<primeiro nome='$nome'>";

[*]

[*] $conteudo .= "<telefone>$telefone</telefone>";

[*]

[*] $conteudo .= "<email>$email</email>";

[*]

[*] $conteudo .= "<cidade>$cidade</cidade>";

[*]

[*] $conteudo .= "<endereco>$endereco</endereco>";

[*]

[*] $conteudo .= "</primeiro>";

[*]

[*]  }

[*]if($grupoAberto){

[*] 

[*] $conteudo .= "</primeira>";

[*]

[*]}

[*]

[*]  $conteudo .= "</agenda>";

[*]

[*]  $ponteiro = fopen("agenda2.xml", "w");

[*]

[*]  fwrite($ponteiro, utf8_encode($conteudo));

[*]

[*]  fclose($ponteiro);

[*]

[*]  echo "O arquivo <b> agenda.xml </b> foi gerado com SUCESSO !";

[*]

[*]}else{

[*]

[*]  echo "Não existe nenhum registro na agenda!";

[*]

[*]}

[*]

[*]?>

 

Funcionar ele funciona mas aki ele falta fechar um node do xml, entao da erro. V se acontece com vcs e me falem onde pode estar o erro se tiver.

 

Valew

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.