FRIHOSTFORUMSSEARCHFAQTOSBLOGSCOMPETITIONS
You are invited to Log in or Register a free Frihost Account!


PHP e XML





rafael2112
Estou implementando uma loja do Mercado Livre, porém o script que uso não tem a opção de usuário e senha que é necessário para listar mais de 10 produtos. Gostaria de algum auxilio para entender como colocar usuário e senha antes de chamar o XML para listar.

Esse é o Script que uso e que funciona aqui no server frihost.

Code:
<?php
   $buscar   = "";
   $insideitem = false;
   $item = array();
   $tag = "";
   $title = "";
   $link = "";
   $price = "";
   $image="";
   $currency= "";
   $count = 1;
   $queryXml = "";
   $parcela = "";
   $mpag = "";   
   $keyword = $_GET['keyword'];
        $categoria = $_GET['categoria'];
   $ini_array = parse_ini_file("config1.ini", true);
   $siteID = $ini_array['toolid'];
   $line1Type = $ini_array['Primeiro_Produto']['Quantidade'];
   $line1Categ = $categoria;
   $line1Search = $keyword;
   $line1Compreja = $ini_array['Primeiro_Produto']['Compre_Ja'];
   $line1Mpago = $ini_array['Primeiro_Produto']['Mercado_Pago'];
   $line1Mvend = $ini_array['Primeiro_Produto']['Vendedor_Certificado'];
   $line1Desde = $ini_array['Primeiro_Produto']['Preco_Minimo'];
   $line1Ate = $ini_array['Primeiro_Produto']['Preco_Maximo'];
   
   // renders line 1
   $xml_parser = xml_parser_create();
   xml_set_element_handler($xml_parser, "shoppingStartElement", "shoppingEndElement");
   xml_set_character_data_handler($xml_parser, "shoppingCharacterData");   
   if(trim($line1Type))
      $queryXml .= "as_qshow=".$line1Type."&";
   if(trim($line1Categ))
      $queryXml .= "as_categ_id=".$line1Categ."&";
   if(trim($line1Search))
      $queryXml .= "as_word=".$line1Search."&";
   if(trim($line1Compreja))
      $queryXml .= "as_auct_type_id=AFP&";
   if(trim($line1Mpago) && !trim($line1Mvend))
      $queryXml .= "as_filtro_id=MPAGO&";
   if(trim($line1Mvend) && !trim($line1Mpago))
      $queryXml .= "as_filtro_id2=CERTIFIED&";
   if(trim($line1Mvend) && trim($line1Mpago))
      $queryXml .= "as_other_filter_id=MKT&";
   if(trim($line1Desde))
      $queryXml .= "as_price_min=".$line1Desde."&";
   if(trim($line1Ate))
      $queryXml .= "as_price_max=".$line1Ate."&";

   $queryXml .= "as_display_type=G";
   $fp1 = "http://www.mercadolivre.com.br/jm/searchXml?".$queryXml;
   
   //echo "<!-- fp1: ".$fp1."-->";
   
   ini_set("allow_url_fopen", 1);
   $fp1 = fopen($fp1, "r") or die("Error reading data. 1");
   ini_set("allow_url_fopen", 0);
   ?>

   <?php
   $contador = 0;
   while ($data = fread($fp1, 4096)) {
      xml_parse($xml_parser, $data, feof($fp1)) or die(sprintf("XML error1: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)),
      xml_get_current_line_number($xml_parser)));
   }
   fclose($fp1);
   xml_parser_free($xml_parser);
   ?>
   </td></tr>
   </table>
   <?php
   function shoppingCharacterData($parser, $data) {
      global $insideitem, $tag, $title, $link, $price, $image, $currency, $item, $attrs, $siteID, $mpago;
      if ($insideitem) {
         switch ($tag) {
            case "ITEM":
            $id .= $item['ID'];
            break;
            case "TITLE":
            $title .= $data;
            break;
            case "LINK":
            $link .= str_replace("XXX",$siteID,$data);
            break;
            case "PRICE":
            $price .= $data;
            break;
            case "IMAGE_URL":
            $image .= $data;
            break;
            case "CURRENCY":
            $currency .= $data;
            break;
            case "MPAGO":
            $mpago .= $data;
            break;      
         }
      }
   }
   function shoppingStartElement($parser, $name, $attrs) {
      global $insideitem, $tag, $title, $link, $price, $image, $currency, $item, $count;
      if ($insideitem) {
         $tag = $name;
      } elseif ($name == "ITEM") {
         $insideitem = true;
      }
   }
   function shoppingEndElement($parser, $name) {
      global $insideitem, $tag, $title, $link, $price, $image, $currency, $item, $attrs, $count, $max, $mpago, $parcela;
      if ($name == "ITEM") {
         echo "<div align=\"center\" valign=\"middle\" style=\"float:left;margin-right:10px;width:100px\" >";
         echo "<img  width=\"60\" height=\"60\" src=\"".$image."\" align=\"center\" valign=\"middle\" >";
         echo "<div style=\"word-wrap: break-word; font-family: arial, verdana; font-size: 11px;\"><a href=\"".$link."\" target=\"_blank\">". utf8_decode(substr($title, 0, 15)) ."...</a><br></div>";
         echo "<div style=\"word-wrap: break-word; font-family: arial, verdana; font-size: 12px; color: red;\"><b>".$currency." ".$price;
         
         if(trim($mpago) == "Y"){
         $parcela = str_replace(",","",$price) / 10;
         echo "<br>ou 12x de ".$currency." ".number_format($parcela, 2)." no cart&atilde;o";
         }
         echo "</b></div></div>";
         $title = "";
         $link = "";
         $price = "";
         $mpago = "";
         $item = "";
         $image = "";
         $currency = "";
         $insideitem = false;
         $parcela = "";      
         
      }
   }
   ?>



Aqui tem um script (13° post) com usuário e senha mais não conheço as funções PHP.

http://forum.wmonline.com.br/topic/141379-mercado-livre-como-parceiro/

Se aguem puder ajudar agradeço
D'Artagnan
O que o script do WMONLINE aparentemente faz de diferente é só passar os parametros user e pwd via get

Quote:

$url = "http://www.mercadolivre.com.br/jm/searchXml?as_categ_id=" . $cat . "&as_word=" . $busca . "&as_desde=" . $inicio . "&as_qshow=" . $qtd . "&user=" . $usuario . "&pwd=" . $senha . "&noQCat=Y";


segue o teu script editado para receber as variáveis de Usuário e senha, o que eu adicionei esta em negrito:

Quote:

?php
$buscar = "";
$insideitem = false;
$item = array();
$tag = "";
$title = "";
$link = "";
$price = "";
$image="";
$currency= "";
$count = 1; categoria
$queryXml = "";
$parcela = "";
$mpag = "";
$keyword = $_GET['keyword'];
$categoria = $_GET['categoria'];

$ini_array = parse_ini_file("config1.ini", true);
$siteID = $ini_array['toolid'];
$line1Type = $ini_array['Primeiro_Produto']['Quantidade'];
$line1Categ = $categoria;
$line1Search = $keyword;
$line1Compreja = $ini_array['Primeiro_Produto']['Compre_Ja'];
$line1Mpago = $ini_array['Primeiro_Produto']['Mercado_Pago'];
$line1Mvend = $ini_array['Primeiro_Produto']['Vendedor_Certificado'];
$line1Desde = $ini_array['Primeiro_Produto']['Preco_Minimo'];
$line1Ate = $ini_array['Primeiro_Produto']['Preco_Maximo'];


// renders line 1
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "shoppingStartElement", "shoppingEndElement");
xml_set_character_data_handler($xml_parser, "shoppingCharacterData");
if(trim($line1Type))
$queryXml .= "as_qshow=".$line1Type."&";
if(trim($line1Categ))
$queryXml .= "as_categ_id=".$line1Categ."&";
if(trim($line1Search))
$queryXml .= "as_word=".$line1Search."&";
if(trim($line1Compreja))
$queryXml .= "as_auct_type_id=AFP&";
if(trim($line1Mpago) && !trim($line1Mvend))
$queryXml .= "as_filtro_id=MPAGO&";
if(trim($line1Mvend) && !trim($line1Mpago))
$queryXml .= "as_filtro_id2=CERTIFIED&";
if(trim($line1Mvend) && trim($line1Mpago))
$queryXml .= "as_other_filter_id=MKT&";
if(trim($line1Desde))
$queryXml .= "as_price_min=".$line1Desde."&";
if(trim($line1Ate))
$queryXml .= "as_price_max=".$line1Ate."&";


$senha = 'MINHA SENHA AQUI';
$usuario = 'MEU USUARIO AQUI';
$queryXml .= "usuario =".$usuario ."&";
$queryXml .= "pwd=".$senha ."&";


//echo $queryXml; - SE NÃO DER CERTO DESCOMENTE ESSA LINHA E POSTE AQUI! - NÃO ESQUEÇA DE TIRAR SUA SENHA DA URL ANTES DE POSTAR

$queryXml .= "as_display_type=G";
$fp1 = "http://www.mercadolivre.com.br/jm/searchXml?".$queryXml;

//echo "<!-- fp1: ".$fp1."-->";

ini_set("allow_url_fopen", 1);
$fp1 = fopen($fp1, "r") or die("Error reading data. 1");
ini_set("allow_url_fopen", 0);
?>

<?php
$contador = 0;
while ($data = fread($fp1, 4096)) {
xml_parse($xml_parser, $data, feof($fp1)) or die(sprintf("XML error1: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
fclose($fp1);
xml_parser_free($xml_parser);
?>
</td></tr>
</table>
<?php
function shoppingCharacterData($parser, $data) {
global $insideitem, $tag, $title, $link, $price, $image, $currency, $item, $attrs, $siteID, $mpago;
if ($insideitem) {
switch ($tag) {
case "ITEM":
$id .= $item['ID'];
break;
case "TITLE":
$title .= $data;
break;
case "LINK":
$link .= str_replace("XXX",$siteID,$data);
break;
case "PRICE":
$price .= $data;
break;
case "IMAGE_URL":
$image .= $data;
break;
case "CURRENCY":
$currency .= $data;
break;
case "MPAGO":
$mpago .= $data;
break;
}
}
}
function shoppingStartElement($parser, $name, $attrs) {
global $insideitem, $tag, $title, $link, $price, $image, $currency, $item, $count;
if ($insideitem) {
$tag = $name;
} elseif ($name == "ITEM") {
$insideitem = true;
}
}
function shoppingEndElement($parser, $name) {
global $insideitem, $tag, $title, $link, $price, $image, $currency, $item, $attrs, $count, $max, $mpago, $parcela;
if ($name == "ITEM") {
echo "<div align=\"center\" valign=\"middle\" style=\"float:left;margin-right:10px;width:100px\" >";
echo "<img width=\"60\" height=\"60\" src=\"".$image."\" align=\"center\" valign=\"middle\" >";
echo "<div style=\"word-wrap: break-word; font-family: arial, verdana; font-size: 11px;\"><a href=\"".$link."\" target=\"_blank\">". utf8_decode(substr($title, 0, 15)) ."...</a><br></div>";
echo "<div style=\"word-wrap: break-word; font-family: arial, verdana; font-size: 12px; color: red;\"><b>".$currency." ".$price;

if(trim($mpago) == "Y"){
$parcela = str_replace(",","",$price) / 10;
echo "<br>ou 12x de ".$currency." ".number_format($parcela, 2)." no cart&atilde;o";
}
echo "</b></div></div>";
$title = "";
$link = "";
$price = "";
$mpago = "";
$item = "";
$image = "";
$currency = "";
$insideitem = false;
$parcela = "";

}
}
?>
rafael2112
Entendi o que fez, acredito estar certo mas não listou mais de 10 produtos, eu pedi essa senha já faz um bom tempo não sei se ela está ativa ou não e agora não tem nenhum tipo de contato direto, não tem para quem mandar e-mail Evil or Very Mad

Aqui está o echo:
Quote:
as_qshow=20&as_categ_id=5040&as_filtro_id=MPAGO&as_price_min=1000&as_price_max=30000&usuario =LUCEXXXXXX&pwd=XXXXXXXXXXXXXXXXI%3D&
rafael2112
Grato pela ajuda D'Artagnan, baixei um outro script e vi o que não estava dando certo, não é usuario e sim "user" . Deve vir antes de chamar os dados, aqui como ficou na parte onde foi modificado:



Quote:
// renders line 1
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "shoppingStartElement", "shoppingEndElement");
xml_set_character_data_handler($xml_parser, "shoppingCharacterData");
$queryXml .= "as_display_type=G"."&";
$usuario = 'XXXXXXXXXX';
$senha = 'XXXXXXXXXXXXXXXXXXXXX';
$queryXml .= "user=".$usuario ."&";
$queryXml .= "pwd=".$senha ."&";

if(trim($line1Type))
$queryXml .= "as_qshow=".$line1Type."&";
if(trim($line1Categ))
$queryXml .= "as_categ_id=".$line1Categ."&";
if(trim($line1Search))
$queryXml .= "as_word=".$line1Search."&";
if(trim($line1Compreja))
$queryXml .= "as_auct_type_id=AFP&";
if(trim($line1Mpago) && !trim($line1Mvend))
$queryXml .= "as_filtro_id=MPAGO&";
if(trim($line1Mvend) && !trim($line1Mpago))
$queryXml .= "as_filtro_id2=CERTIFIED&";
if(trim($line1Mvend) && trim($line1Mpago))
$queryXml .= "as_other_filter_id=MKT&";
if(trim($line1Desde))
$queryXml .= "as_price_min=".$line1Desde."&";
if(trim($line1Ate))
$queryXml .= "as_price_max=".$line1Ate."&";
$fp1 = "http://www.mercadolivre.com.br/jm/searchXml?".$queryXml;
//echo $queryXml;
//echo "<!-- fp1: ".$fp1."-->";



Estranhamente parou de listar já faz alguns dias, qualquer anúncio da parte de automóveis antes estava funcionado.

Aqui está a loja:

http://autoxbr.frihost.net/loja/
mikelll
nao estou vendo onde voce esta errando
gueda
não sei se é ai, mas sua vitrine aqui no meu pc está tudo ok, inclusive listando todos os produtos

ou depois das modificações do script voltou a funcionar?
rafael2112
Sim arrumei a parte de listar automóveis, O Mercado Pago estava habilitado assim com a maioria anuncia sem ser por MP acabava não listando.

Coloquei um htaccess para URL amigáveis para os links diretos OK, porém não consigo tirar os elementos dinâmicos da URL que vem do pesquisar, se alguém puder dar um auxilio eu agradeço!

Form

Quote:
<form method="get" action="lista.php"><input type="text" name="keyword" size="30" /><input type="submit" value="Buscar" />


URL dinâmica:
Quote:
loja/lista.php?keyword=fusca


Fiz umas modificações no form e ficou assim:
Quote:
loja/produtos-?=fusca


Deve ficar assim, vindo do form:

Quote:
loja/produtos-fusca
D'Artagnan
nem tinha visto q tnhas respondido!

essa ultima pergunta fiquei meio na duvida:
Quote:

Coloquei um htaccess para URL amigáveis para os links diretos OK, porém não consigo tirar os elementos dinâmicos da URL que vem do pesquisar, se alguém puder dar um auxilio eu agradeço!


Vc esta tentando fazer as urls ficarem via htaccess e não esta ficando como vc quer?
se for isso vc tem que postar o seu .htaccess aqui para que possamos ajudar. pelo que eu entendi provavelmente é spo um problema na sua expressão regular
rafael2112
O htaccess está funcionado, basta você ir lá no link da loja e clicar no menu, para os links diretos (menu) eu coloquei as urls de acordo a modificação do htaccess.
O que não consegui fazer é tirar os elementos dinâmicos do form (? =). O search atribui o valor text (digitado na caixa) a variável keyword e sempre aparece na URL o sinal de =, o que quero enviar por URL é apenas a palavra digitada sem o sinal de =, se eu enviar por método post ou form PHP resolve?
Related topics
Jaki portal php polecacie?
***PHP E-KÝTAPLARA DEVAM ARKADAÞLAR***(NO RAPÝD)
A hospedagem aceita PHP e CGI?
Problema com php
php..free account help
Projetos em PHP Desenvolvidos no Frihost!
Kto ma pomysl na wpanialy interes w necie?
<? php with .xml............?>
php and xml
Php and xml?
ajuda em php
PhP Nuke ou Joomla
selecçao de emails no php . email selection on php
[Projeto] Jogo Em PHP e MySQL: SpaceQuest On-Line
Reply to topic    Frihost Forum Index -> Language Forums -> Portuguese

FRIHOST HOME | FAQ | TOS | ABOUT US | CONTACT US | SITE MAP
© 2005-2011 Frihost, forums powered by phpBB.