Jump to content
Fórum Script Brasil
  • 0

Criar XML com PHP


Question

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 to post
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      149287
    • Total Posts
      645679
×
×
  • Create New...