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

Pegar/inserir Dados No Bd


ESerra

Pergunta

Antes que alguém pense, eu sei pegar/inserir dados no BD, mas o problema está quando eu quero pegar os dados de um BD e inseri-lo em outro... explico, tenho um tabela que basicamente tem:

ID - CATEGORIA - CONTA

id é a chave primária e não interessa nesse caso

categoria tem 22 palavras que são as chaves para o que existe no banco de dados

conta serve para eu saber quantas vezes as palavras contidas na 'categoria' foram pesquisadas

Eu pretendo adicionar um script ao Cron para que em uma determinada hora pegue TODOS os dados contidos em categoria e conta e insira em outra tabela, para que eu tenho estatísticas mensais sobre isso...

Eu uso o seguinte script para ver os dados:

<?
mysql_pconnect("localhost", "*********", "******");
mysql_select_db("*********");

$sql = mysql_query("SELECT * FROM `contador` ORDER BY 'conta' DESC");

$zebra = 1;

while($l = mysql_fetch_array($sql)) {
$conta = $l["conta"];
$categoria = $l["categoria"];
$id = $l["id"];

if ( $zebra % 2 == 0 )
 {
  $cor = "#FFB8DD";
 }
 else
 {
  $cor = "#FF9BCF";  
 }


echo "<table width='250' border='0' cellspacing='0' cellpadding='0'><tr>";
echo "<td bgcolor='$cor'><div align='center'>$categoria - $conta</div></td></tr>";

$zebra++;
}


$query = mysql_query("SELECT sum(conta) as soma FROM contador");
$tupla = mysql_fetch_array($query);
$soma = $tupla["soma"];

if ( $cor == "#FFB8DD" )
 {
  $cor = "#FF9BCF";
 }
 else
 {
  $cor = "#FFB8DD";  
 }

echo "<tr><td bgcolor='$cor'><div align='center'>TOTAL » $soma</div></td>";
echo "</tr></table>";
?>
Como isso vai ser rodado pelo Cron não precisa de zebra, simplifiquei o script e ficou assim:
<?

mysql_pconnect("localhost", "*********", "******");
mysql_select_db("*********");

$sql = mysql_query("SELECT * FROM `contador` ORDER BY 'id'");



while($l = mysql_fetch_array($sql)) {
$conta = $l["conta"];
$categoria = $l["categoria"];
$id = $l["id"];

echo "$categoria - $conta <br>";
}


$query = mysql_query("SELECT sum(conta) as soma FROM contador");
$tupla = mysql_fetch_array($query);
$soma = $tupla["soma"];

echo "TOTAL » $soma";
?>

Ai eu pensei, como vou pegar os dados e inseri-los numa outra tabela, realmente não me lembro de ter visto isso ainda... eu sei que vou ter que arrumar um jeito de pegar os dados e depois jogar num INSERT INTO ... mas não sei como. :huh:

Grato.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Rapz, tenta explicar d novo, porque é igual você falou basta usar INSERT INTO ou

1) Manda criar uma tabela e povoar com os dados do SELECT anterior

2) Faz uma cópia da tabela e manda renomear complementando o nome com o mês, tipo stats_ago06

ou vê esse lance que peguei na net...

Ex:

- create database link TESTEDB connect to hr identified by hr using 'TESTEDB';

- create table e as select * from employees@TESTEDB;

OBS:

- TESTEDB é o banco que contém a tabela a ser copiada.

- 'TESTEDB' é o seu metodo de nomeação local.

Explica direito aí....

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu pelo retorno, a questão para mim é, pegar TODOS os dados de uma vez, mas de modo que eles sejam variáveis que eu possa enviar para o INSERT INTO... porque eu consigo pegar categoria por categoria e enviar para a nova tabela, mas como são 22 categorias o código vai ficar extenso de mais, na verdade eu empaco depois de pegar todos os dados com o while, já que eu não sei uma maneira inteligente de fazer esses dados do while irem para o INSERT INTO... de qualquer maneira na pior da hipóteses vou fazer 22 consultas ao BD (uma para cada categoria) e depois mando as 22 variáveis (com a contagem) para o INSERT INTO...

Valeu ;)

Link para o comentário
Compartilhar em outros sites

  • 0

Tem outra maneira bem fácil...

Quando for inserir o valor do campo CONTA, mandar inserir em outro campo a data, quando você for fazer a consulta da estatística, na cláusula SELECT, pede pra vir só de um determinado mês. Assim usaria somente uma tabela.

Link para o comentário
Compartilhar em outros sites

  • 0

É, eu também já havia pensado nisso... o meu problema principal nessa aplicação foi a falta de planejamento, a minha idéia era apenas saber quantas consultas cada categoria ia ter... mas ai o tempo passa e o cara pensa "porque não fiz isso, porque não fiz aquilo"... ficar emendando código é soda... vou dar uma pensanda para ver o que eu resolvo.

Valeu ;) .

Link para o comentário
Compartilhar em outros sites

  • 0

Rapaz, tentei fazer um lance pra resolver o que você quer, só que ele não tá inserindo todos os dados da primeira tabela para a tabela de estatística (stats). Sempre insere só o último registro da tabela origem.

Se alguém puder ver o que é e dar uma mão....

<?

// Faz a conexao ao banco e seleciona a base de dados

require ('config.php');

// Executa e trata a consulta Categorias

$sql = "SELECT categoria, conta FROM origem ORDER BY 'id'";

$result = mysql_query($sql) or die ("Não foi possível realizar a consulta do bloco CATEGORIAS");

// Exibe a data atual

$data = date("d/m/y");

// Gera o nome da tabela

$nomeTable = "stats_" . (substr($data, 3, 2));

// Cria a tabela com o nome do mês, exemplo: stats_09

$gerar = "CREATE TABLE `" . $nomeTable . "` (

`id` int(5) NOT NULL auto_increment,

`data` varchar(20) NOT NULL default '',

`categoria` varchar(30) NOT NULL default '',

`conta` int(9) NOT NULL default '',

PRIMARY KEY (`id`)

)";

echo "Até aqui ok";

echo "<br />";

// Inicia o laço (while) para popular a tabela criada

while($l = mysql_fetch_array($result)) {

$conta = $l["conta"];

$categoria = $l["categoria"];

$popular = "INSERT INTO `" . $nomeTable . "`

VALUES ('', '" . $data . "', '" . $categoria . "', '" . $conta . "')";

}

// Como vai usar o CRON, não é necessário o script abaixo. Serve para exibir o erro, caso ocorra.

mysql_query($gerar) or die(mysql_error());

mysql_query($popular) or die(mysql_error());

echo "<br><font size=2 face=arial>Tabela criada com sucesso!<br>";

echo "<a href=\"index.php\">Clique aqui</a> para retornar<br>";

echo "</font>";

?>

Resumindo. A idéia é passar os dados de uma tabela para outra usando php. :P

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...