Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos.
Estou com um problema bem estranho e já faz algum tempinho que eu estou tentando descobrir uma solução (ou pelo menos a causa do roblema), mas não estou conseguindo.
Achei um script pronto na Internet que serve para ler um endereço que fornece uma XML do Mercado Livre com os produtos a venda, ofertas, categorias... O endereço é esse: http://www.mercadolivre.com.br/jm/searchXml?as_categ_id=1648
O script usa o cURLpara obter os dados da XML fornecida.
Segue o script:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Documento sem título</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body><p>Loja do Ricardo</p><p>Produtos:</p><table width="100%" border="1" cellpadding="2" cellspacing="0" bordercolor="#000000"><?php$timeout = 5; // define um timeout - 5 é o que uso sempre$url = "[http://www.mercadolivre.com.br/jm/searchXml?as_categ_id=1648";$ch](http://www.mercadolivre.com.br/jm/searchXml?as_categ_id=1648) = curl_init();curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);$data = curl_exec($ch);curl_close($ch);function startElement($parser, $name){ global $insideitem, $tag, $title, $link, $price, $image, $currency, $item, $mpago; if ($insideitem) { $tag = $name; } elseif ($name == "ITEM") { $insideitem = true; }}function endElement($parser, $name){ global $insideitem, $tag, $title, $link, $price, $image, $currency, $item, $attrs, $mpago; if ($name == "ITEM") { echo("<tr>"); echo("<td>"); echo("<img src=".$image." height=60></td>"); echo("<td><a href=".$link."target=_blank>".htmlentities($title)."</a><br />"); if ($mpago == 'Y') { echo("Aceita Mercado Pago: SIM "); } else { echo("Aceita Mercado Pago: NÃO "); } echo($mpago); echo($currency.$price); echo("</td>"); echo("</tr>"); $title = ""; $link = ""; $price = ""; $item = ""; $image = ""; $currency = ""; $insideitem = false; $mpago = ""; }}function characterData($parser, $data) { global $insideitem, $tag, $title, $link, $price, $image, $currency, $item, $attrs, $mpago; if ($insideitem) { switch ($tag) { case "ITEM": $id .= $item['ID']; break; case "TITLE": $title .= $data; break; case "LINK": $link .= str_replace("XXX","333296",$data); break; case "PRICE": $price .= $data; break; case "IMAGE_URL": $image .= $data; break; case "CURRENCY": $currency .= $data; break; case "MPAGO": $mpago .= $data; break; } }}$xml_parser = xml_parser_create("ISO-8859-1");xml_set_element_handler($xml_parser, "startElement", "endElement");xml_set_character_data_handler($xml_parser, "characterData");xml_parse($xml_parser, $data);xml_parser_free($xml_parser);?></table></body></html>Agora o problema.
Reparem na função endElement existe a seguinte condição:
if ($mpago == 'Y') { echo("Aceita Mercado Pago: SIM "); } else { echo("Aceita Mercado Pago: NÃO "); }Porém, mesmo a variável $mpago assumindo o valor de "Y", a condição não é executada. Se vocês colocarem o script para rodar (requer o cURL), vocês vão ver que eu exibo o valor da variável $mpago logo depois da condição e ela assume os valores corretos ("Y" ou "N"), porém a condição não é executada (mesmo ela assumindo o valor "Y") e ela acaba sempre entrando no else.
Alguém sabe o que pode estar acontecendo e se tem alguma solução para isso?
Grato.
Carregando comentários...