Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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");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.
>
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/
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
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.
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?
Pessoal eu tentei fazer sozinho e consegui alguns avanços, veja o código que estou usando:
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?