Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Antonio Jorge

Registrar os termos enviados por um formulário e Mysql!

Recommended Posts

Olá pessoal, eu tenho um pesquisa interna no meu site com o seguinte seguinte código:

<form action="index.php" id="search_box"> 
<input type="text"  id="search" name="search"/>
<button type="submit">Procurar</button>
</form>

 

Ao pesquisa um termo é feito via GET e fica dessa forma /index.php?search=termo

 

Mas eu queria criar todos os termos pesquisado em banco de dado para poder usar depois como estatísticas, tipo, top10, os mais pesquisado na semana etc...

 

Será que alguém pode me orientar como criar isso tudo que eu quero, como criar o banco, fazer a conexão, como capturar esses termos e registrar no banco, como registrar a quantidade de vezes que cada termo foi pesquisado, etc...

 

Agradeço qualquer ajuda, antes de abrir o tópico eu pesquisei sobre o assunto para evitar esse pedido, tentei até adptadr alguns sistemas parecido mais não consegui.

 

http://forum.tectonny.com/index.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal eu tentei fazer sozinho e consegui alguns avanços, veja o código que estou usando:

 <?include"db.php";//$vezes = $_POST['vezes']; //Aqui ainda não sei como contar os termos$palavra = $_REQUEST['search'];$x = mysql_query("INSERT INTO cadastro (palavra,vezes) VALUES ('$palavra','$vezes')");if($x){echo"Cadastro foi feito com sucesso";}else{echo"o cadastro nao pode ser efetuado";}?>

Os termos já estão sendo registrado pela string $palavra, tá pegando tudo que digitam nas pesquisa, tudo mesmo, erro, HTML, etc.. Preciso criar um filtro, mas não sei como ainda, kkkkkkkk.

 

Agora como tratar os termos mais pesquisado, tipo um top 10? Criei uma tabela $vezes mas acho que não o caso.

 

 

Pessoal será que errei em alguma coisa no meu pedido?

 

 

Ou é muito difícil o que estou querendo fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muto bem, mas vamos lá.

pelo que eu entendi você está tentando fazer tipo um top 10 mais pesquisados, tente assim

 

Mysql:

Crie um tabela com o nome 'keys' ('palavra', 'data')

palavra = VARCHAR();

data = DATE;

Php:

 

Search.php

 





$palavra = $_GET['search']; 
$data = date("Y-m-d");
$mysql_query("INSERT INTO keys (palavra, data) VALUES ('$palavra', '$data')");

 

 

 

Exibir.php

 





$hoje = date("Y-m-d");
$mes = date("Y-m").'-01';
$pesquisa = mysql_query("SELECT * FROM keys WHERE data > $mes");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado por responder, não entendi, criei a tabela fiz a conexão, crie os arquivos php mas não entendi como extrair esses dados:

 

 <?
 
$hoje = date("Y-m-d");
$mes = date("Y-m").'-01';
$pesquisa = mysql_query("SELECT * FROM keys WHERE data > $mes");

echo $pesquisa;
?>

 

O código acima não deu certo:

 


<?
include"db.php";

$palavra = $_GET['search']; 
$data = date("Y-m-d");
$mysql_query("INSERT INTO keys (palavra, data) VALUES ('$palavra', '$data')");

?>

 

 

O código acima não deu erro.

 

Mas não exibi o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado por responder, não entendi, criei a tabela fiz a conexão, crie os arquivos php mas não entendi como extrair esses dados:

 

 <?
 
$hoje = date("Y-m-d");
$mes = date("Y-m").'-01';
$pesquisa = mysql_query("SELECT * FROM keys WHERE data > $mes");

echo $pesquisa;
?>

 

O código acima não deu certo:

 

 

<?
include"db.php";

$palavra = $_GET['search']; 
$data = date("Y-m-d");
$mysql_query("INSERT INTO keys (palavra, data) VALUES ('$palavra', '$data')");

?>

 

 

O código acima não deu erro.

 

Mas não exibi o resultado.

 

Olá Antonio,

 

Para mostrar os dados inseridos na tabela, use qualquer umas das funções:

 

mysql_fetch_assoc() http://php.net/manual/pt_BR/function.mysql-fetch-assoc.php

mysql_fetch_array() http://php.net/manual/pt_BR/function.mysql-fetch-array.php

mysql_fetch_object() http://php.net/manual/pt_BR/function.mysql-fetch-object.php

 

E percorra o retorno ^^

 

Espero ter ajudado!

 

Boa sorte o/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei isso e deu erro:

<?
include"db.php";
$hoje = date("Y-m-d");
$mes = date("Y-m").'-01';
$pesquisa = mysql_query("SELECT * FROM keys WHERE data > $mes");

while ($x = mysql_fetch_array($pesquisa)) {
echo $x['data'];
}

?>

 

Deu erro:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/user12/public_html/mostrartop.php on line 8

Compartilhar este post


Link para o post
Compartilhar em outros sites

O amigo Vitor G. me ajudou e resolveu a parada assim, para quem quiser e precisar:

 

<?
include"db.php";

$pesquisa = mysql_query("SELECT * FROM cadastro ORDER BY vezes DESC LIMIT 0,10");

while ($x = mysql_fetch_array($pesquisa)) {
echo $x['palavra']."<br>";
}

?>

 

Agradeço ai galera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia pessoal, não sei se o correto é continuar nesse tópico já que foi colocado como resolvido, se tiver errado favor informar.

 

Está tudo funcionando perfeitamente, tenho os registro diário, tenho o top 10 e tenho como manipular os registro mostrar de outras formas, como "últimas pesquisas", etc...

 

O problema é que meu site está fazendo cerca de 400.000 registro por dia, e apesar de meu servidor ser um dedicado com 8GB de memória, acredito que vai sobre muito com tantos registro por dia. E a tabela que eu criei não permiti palavrar repetidas.

 

Eu já até percebi um aumento no load average depois que coloquei o sistema para funcionar, tirei o sistema para teste, o load voltou ao normal.

 

Ai eu pergunto tem como otimizar isso de forma que o servidor não sofra tanto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.