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

Problema com select


luizhcota

Pergunta

Pessoal,

Estou tentando fazer a seguinte rotina. Ler dados de uma tabela e enquanto ela tiver dados passar parametros para pegar dados de um site.

O código para pegar os dados funciona normal, se ao invés de passar o parâmetros vindos do banco, passar na mão funciona normal.

Acontece o seguinte erro: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\TestePhp.php on line 14

Se eu tiro a parte do código que pegar os dados de outro site, o select funciona normal, se eu tiro a parte do select, o código de pegar dados de outra site funciona, o problema é quando se junta os dois

<?php

$ch = curl_init();

$conexao = mysql_connect("localhost","root","");

$db = mysql_select_db("DadosCVM");

//Agora é realizar a querie de busca no banco de dados

$sql = "SELECT empresa, Pregao, Codigo FROM empresahtml LIMIT 1";

$resultado = mysql_query($sql)

or die ("Não foi possível realizar a consulta ao banco de dados");

//linha 14

while ($linha=mysql_fetch_array($resultado)) {

$Pregao = $linha["empresa"];

$Razao = $linha["Pregao"];

$CCVM = $linha["Codigo"];

$url = "http://www.bovespa.com.br/dxw/FrDXW.asp?site=B&mercado=16&razao=$Razao&pregao=$Pregao&ccvm=$CCVM&data=30/09/2008&tipo=4";

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_REFERER, $url);

curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);

curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");

curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 60);

$result = curl_exec($ch);

curl_close($ch);

unset($ch);

//Agora vams pro segundo url

$ch = curl_init();

$url2 = "http://www.bovespa.com.br/dxw/FormDetalheDXWBalanco.asp?TipoInfo=C&Tipo=01%20-%20Ativo";

curl_setopt($ch, CURLOPT_URL, $url2);

curl_setopt($ch, CURLOPT_REFERER, $url2);

curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);

curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");

curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 60);

$resultado = curl_exec($ch);

curl_close($ch);

}

?>

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

<?php

while ($linha=mysql_fetch_array($resultado)) {

$Pregao = $linha["empresa"];

$Razao = $linha["Pregao"];

$CCVM= $linha["Codigo"];

$url = "http://www.bovespa.com.br/dxw/FrDXW.asp?site=B&mercado=16&razao=$Razao&pregao=$Pregao&ccvm=$CCVM&data=30/09/2008&tipo=4";

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_REFERER, $url);

curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);

curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");

curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 60);

$result = curl_exec($ch);

curl_close($ch);

unset($ch);

//Agora vams pro segundo url

$ch = curl_init();

$url2 = "http://www.bovespa.com.br/dxw/FormDetalheDXWBalanco.asp?TipoInfo=C&Tipo=01%20-%20Ativo";

curl_setopt($ch, CURLOPT_URL, $url2);

curl_setopt($ch, CURLOPT_REFERER, $url2);

curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);

curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");

curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 60);

$resultado = curl_exec($ch);

curl_close($ch);

}

?>

o problema está em usar o laço para acessar uma url e manuzear dados do bd, acredito que que não será compativel devido a velocidade de execução do escrito, são coisas diferentes o manuseio de dados é rapido já a captura de dados de outro site depende da conexão e será sempre mais lenta que o manuseio.

conclusão

tente executar um laço e depois outro

ficaria mais ou menos assim

<?php

//despresei o resto

$NumeroLinhas=0;

while ($linha=mysql_fetch_array($resultado)) {

$Pregao[$NumeroLinhas]= $linha["empresa"];

$Razao[$NumeroLinhas]= $linha["Pregao"];

$CCVM[$NumeroLinhas]= $linha["Codigo"];

$NumeroLinhas++;

}

//aqui aplicaremos outro laço independente

For($Ipr=0; $Ipr<count($Pregao); $Ipr++){

$Pregaodes=$Pregao[$Ipr];

$Razaodes= $Razao[$Ipr];

$CCVMdes=$CCVM[$Ipr];

$url = "http://www.bovespa.com.br/dxw/FrDXW.asp?site=B&mercado=16&razao=$Razaodes&pregao=$Pregaodes&ccvm=$CCVMdes&data=30/09/2008&tipo=4";

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_REFERER, $url);

curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);

curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");

curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 60);

$result = curl_exec($ch);

curl_close($ch);

unset($ch);

//Agora vams pro segundo url

$ch = curl_init();

$url2 = "http://www.bovespa.com.br/dxw/FormDetalheDXWBalanco.asp?TipoInfo=C&Tipo=01%20-%20Ativo";

curl_setopt($ch, CURLOPT_URL, $url2);

curl_setopt($ch, CURLOPT_REFERER, $url2);

curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);

curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");

curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 60);

$resultado = curl_exec($ch);

curl_close($ch);

}

?>

Fiz algumas alterações não testei, mas acredito que o problema estava no uso de um mesmo laço para duas funções distintas que tinham tempo de execução diferentes.

se ouver erros post ai

até mais

Editado por rickayron
Link para o comentário
Compartilhar em outros sites

  • 0

Amigo,

O erro parou de acontecer, porém não apresenta o resultado esperado. se ao invés de pegar os valores do banco de dados funciona, a pagina é exibida, com o dados vindo do banco a pagina não é exibida.

<?php

while ($linha=mysql_fetch_array($resultado)) {

$Pregao = $linha["empresa"];

$Razao = $linha["Pregao"];

$CCVM= $linha["Codigo"];

$url = "http://www.bovespa.com.br/dxw/FrDXW.asp?site=B&mercado=16&razao=$Razao&pregao=$Pregao&ccvm=$CCVM&data=30/09/2008&tipo=4";

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_REFERER, $url);

curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);

curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");

curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 60);

$result = curl_exec($ch);

curl_close($ch);

unset($ch);

//Agora vams pro segundo url

$ch = curl_init();

$url2 = "http://www.bovespa.com.br/dxw/FormDetalheDXWBalanco.asp?TipoInfo=C&Tipo=01%20-%20Ativo";

curl_setopt($ch, CURLOPT_URL, $url2);

curl_setopt($ch, CURLOPT_REFERER, $url2);

curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);

curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");

curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 60);

$resultado = curl_exec($ch);

curl_close($ch);

}

?>

o problema está em usar o laço para acessar uma url e manuzear dados do bd, acredito que que não será compativel devido a velocidade de execução do escrito, são coisas diferentes o manuseio de dados é rapido já a captura de dados de outro site depende da conexão e será sempre mais lenta que o manuseio.

conclusão

tente executar um laço e depois outro

ficaria mais ou menos assim

<?php

//despresei o resto

$NumeroLinhas=0;

while ($linha=mysql_fetch_array($resultado)) {

$Pregao[$NumeroLinhas]= $linha["empresa"];

$Razao[$NumeroLinhas]= $linha["Pregao"];

$CCVM[$NumeroLinhas]= $linha["Codigo"];

$NumeroLinhas++;

}

//aqui aplicaremos outro laço independente

For($Ipr=0; $Ipr<count($Pregao); $Ipr++){

$Pregaodes=$Pregao[$Ipr];

$Razaodes= $Razao[$Ipr];

$CCVMdes=$CCVM[$Ipr];

$url = "http://www.bovespa.com.br/dxw/FrDXW.asp?site=B&mercado=16&razao=$Razaodes&pregao=$Pregaodes&ccvm=$CCVMdes&data=30/09/2008&tipo=4";

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_REFERER, $url);

curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);

curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");

curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 60);

$result = curl_exec($ch);

curl_close($ch);

unset($ch);

//Agora vams pro segundo url

$ch = curl_init();

$url2 = "http://www.bovespa.com.br/dxw/FormDetalheDXWBalanco.asp?TipoInfo=C&Tipo=01%20-%20Ativo";

curl_setopt($ch, CURLOPT_URL, $url2);

curl_setopt($ch, CURLOPT_REFERER, $url2);

curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);

curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");

curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 60);

$resultado = curl_exec($ch);

curl_close($ch);

}

?>

Fiz algumas alterações não testei, mas acredito que o problema estava no uso de um mesmo laço para duas funções distintas que tinham tempo de execução diferentes.

se ouver erros post ai

até mais

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
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...