Ir para conteúdo
Fórum Script Brasil
  • 0

Criar XML com PHP


paulo ch8

Pergunta

Socorro!!!

Estou tentando desesperadamente retornar um XML para criação de combobox dinamica mas não consigo obter resultado.

Eu chamo pelo script:

xmlhttp.onreadystatechange = function () {

//Se a requisição estiver completada

if (xmlhttp.readyState == 4 || xmlhttp.readyState == 0) {

//Se o status da requisição estiver OK

if (xmlhttp.status == 200) {

//Insere no 'elemento' a página postada

montaCombo(xmlhttpPosicao.responseXML);

} else {

//Insere no 'elemento' o texto atribuído

elemento.innerHMTL = 'Página não encontrada!';

}

}

}

xmlhttp.open('POST', 'situacaoPosicao.php?idSituacao='+valor, true);

xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

xmlhttp.send('idSituacao='+valor);

e passo para o php: situacaoPosicao.php:

<?php

class DB_Login{

var $conexao

function conectar($nmUsuario,$pwdSenha){

$servidor = "localhost";

$basedados = "processosdb";

if($conexao = mysql_connect($servidor,$nmUsuario,$pwdSenha)){

echo "condectou db";

if(!mysql_select_db($basedados)){

return fales;

}

else{

return true;

}

}

else{

return false;

}

}

function desconectar(){

mysql_close($conexao);

}

}

extract($_GET);

header("Content-type: text/xml; charset=ISO-8859-1");

echo '<?xml version="1.0" encoding="ISO-8859-1"?>';

$conexao = new DB_Login;

if ($conexao->conectar('root','')){

$sql ="SELECT ps.`idPosicao`, p.`Descricao` FROM posicao_has_situacao ps, posicao p WHERE ps.`idPosicao` = p.`idPosicao` AND ps.`idSituacao` = '$idSituacao'";

$resultado = mysql_query($sql);

$qtdResultdados = mysql_num_rows($resultado);

echo "<Posicoes>";

while ( $record = mysql_fetch_array($resultado, MYSQL_ASSOC) ) {

echo ("<posicao>\n");

echo ("<idPosicao>%s</idPosicao>\n", $record['idPosicao']);

echo ("<Descricao>%s</Descricao>\n", $record['Descricao']);

echo ("</posicao>\n");

}

echo "</Posicoes>";

$db->desconectar;

}

?>

Mas ele nunca reconhece o xmlhttpPosicao.responseXML e retorna xmlhttp.status 500.

O que eu devo fazer?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Resolvido.

Eu não conseguia verificar as falhas nos resultados porque o retorno do php voltava ao xmlhttp e eu não conseguia ver os erros do retorno.

Consegui inspecionando o elemento xmlhttp com o depurador do Chrome.

Finalmente: Erro de sintaxe e outras coisas... eis o correto:

javascript

function catchDados(valor) {

var elemento = document.getElementById('idPosicao');

objetoXML();

if (!xmlhttp) {

elemento.innerHTML = 'Impossível iniciar o objeto XMLHttpRequest.';

return;

} else {

elemento.innerHTML = 'Carregando...';

}

xmlhttp.onreadystatechange = function () {

//Se a requisição estiver completada

if (xmlhttp.readyState == 4 || xmlhttp.readyState == 0) {

//Se o status da requisição estiver OK

if (xmlhttp.status == 200) {

//Insere no 'elemento' a página postada

montaCombo(xmlhttp.responseXML);

} else {

//Insere no 'elemento' o texto atribuído

elemento.innerHMTL = 'Página não encontrada!';

}

}

}

xmlhttp.open('GET', 'situacaoPosicao.php?idSituacao='+valor, true);

xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

xmlhttp.send(null);

}

function montaCombo(XML){

var items = XML.getElementsByTagName("posicao");

posicoes = document.getElementById("idPosicao");

opt = document.createElement("option");

opt.value = "";

opt.text = "";

posicoes.options.add(opt);

for(var i = 0 ; i < items.length ; i++) {

var item = items;

id = item.getElementsByTagName("idPosicao")[0].firstChild.nodeValue;

nome = item.getElementsByTagName("Descricao")[0].firstChild.nodeValue;

opt = document.createElement("option");

opt.value = id;

opt.text = i+1 +" - " + nome;

posicoes.options.add(opt);

}

}

Arquivo php:

<?php

class DB_Login{

function conectar($nmUsuario,$pwdSenha){

$servidor = "localhost";

$db = "processosdb";

if($conexao = mysql_connect($servidor,$nmUsuario,$pwdSenha)){

if(!mysql_select_db($db)){

echo "Não foi possível selecionar a base de dados<br />";

return fales;

}

else{

//echo "conectou a base de dados<br />";

return true;

}

}

else{

echo "Não foi possível conectar ao banco de dados";

return false;

}

}

}

extract($_GET);

header("Content-type: text/xml; charset=ISO-8859-1");

echo '<?xml version=1.0" encoding="ISO-8859-1"?>';

$conexao = new DB_Login;

if ($conexao->conectar('root','')){

$sql ="SELECT ps.`idPosicao`, p.`Descricao`

FROM posicao_has_situacao ps, posicao p

WHERE ps.`idPosicao` = p.`idPosicao`

AND ps.`idSituacao` = '$idSituacao'";

$resultado = mysql_query($sql);

echo "<Posicoes>";

while ( $record = mysql_fetch_array($resultado, MYSQL_ASSOC) ) {

printf ("<posicao>\n");

printf ("<idPosicao>%s</idPosicao>\n", $record['idPosicao]);

printf ("<Descricao>%s</Descricao>\n", $record['Descricao']);

printf ("</posicao>\n");

}

echo "</Posicoes>";

}

?>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...