Ir para conteúdo

POWERED BY:

Arquivado

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

Luiz Otávio Foreba

[Resolvido] Posts com mais cliques aparecem primeiro

Recommended Posts

Olá pessoal, estou terminando de montar um site e vocês estão sempre me ajudando, quando tive esta dificuldade logo lembrei do fórum. É o seguinte, o site mostra links de vários blogs e outros sites, está funcionando perfeitamente, mas eu precisava de incrementar com um esquema que acho que vai ser simples para quem já está acostumado com o PHP, eu preciso que os links mais clicados apareçam no topo, tipo, se tem 10 links, o mais clicado é o 9º, este passa a ser o primeiro que apareçe, o segundo mais clicado é o 8º, ele toma a segunda posição e assim por diante, será que poderiam me ajudar?

 

Segue o código:

 

<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
$con = include "conexao.php";
$_pagi_sql = "SELECT * FROM links WHERE publicar='sim' ORDER by id DESC";
$_pagi_cuantos = 50; 
$_pagi_nav_num_enlaces = "5"; 
$_pagi_mostrar_errores = false; 
$_pagi_conteo_alternativo = false;
$_pagi_propagar = array("idnoticia");
$_pagi_nav_estilo = ""; 
$_pagi_nav_anterior = "<";
$_pagi_nav_siguiente = ">";
include("blog_paginacao.php");

while ($linha = mysql_fetch_assoc($_pagi_result)) {
$id = $linha['id'];
$data = $linha['data'];
$nome = $linha['nome'];
$site = $linha['site'];
$email = $linha['email'];
$urlimagem = $linha['urlimagem'];
$url = $linha['url'];
$titulo = $linha['titulo'];
$publicar = $linha['publicar'];
$categoria = $linha['categoria'];
echo "<div id='linksdata'>";
echo "<a href='busca.php?data=$data'><span class='datalink'>$data</span></a>";
echo "<a href='buscasite.php?site=$site'><span class='nomesite'>$site</span></a>";
echo "<div id='links'>";
echo "<a href='$url'><img src='$urlimagem' alt='$titulo' title='$titulo' description='$titulo' width='140px' height='140px'></a>";
echo "<a href='$url'><h2>$titulo</h2></a>";
echo "<div class='catlinks'><a href='busca.php?categoria=$categoria'>$categoria</a></div>";
echo "</div>";
echo "</div>";
}
echo "</div>";
echo "</div>";
echo "</div>";
echo "<div id='paginacao'><div id='paginas_n'>$_pagi_navegacion</div></div>";
?>

Desde já agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara naum eh taum simples quanto parece...mais vo ti passa a lógica.

na tabela ki taum os links deve ter um campo chamado 'clicks', aih cada veiz ki um usuario clicar num link eli vai redirecionar para uma página antes de ir pro blog ou pro site...aih nessa página ki vai estar a função de contar os clicks. ex:

o link devi tah assim:

<a href='conta_clicks.php?url=$url'>Blog</a>
onde '$url' é a variavel com o nome do blog.

 

agora na página conta_clicks.php, você faiz um select com o nome do blog e pega o valor do campo 'clicks'...depois você faiz um update acrescentando mais 1 ao valor retornado, e redireciona o usuario para a página do blog.

 

depois na hora de exibir os resultados você faiz u select assim:

$_pagi_sql = "SELECT * FROM links WHERE publicar='sim' ORDER by clicks DESC";

flw

 

Diego Machado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diego, é isso mesmo que eu preciso, estava conversando com um amigo por msn ele me disse o mesmo que você, mas não soube me dizer como eu devo fazer para incrementar cada clique, você poderia me dizer o comando que eu devo colocar no arquvo cota_clicks.php?

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

claro...oh eu vo fazer di um jeito aki mais você edita pra ficar do seu....

 

conta_clicks.php:

 

<?php
$url = $_GET["url"];

$sql = mysql_query("SELECT * FROM tabela WHERE url='$url'"); // select para pegar a quantidade de clicks
$l = mysql_fetch_array($sql);
$clicks = $l["clicks"]; // quantidade dos clicks atual

$clicks = $clicks+1; // adiciona mais 1 nos clicks

//////// AGORA VEM O UPDATE

$sql = mysql_query("UPDATE tabela SET clicks='$clicks' WHERE url='$url'");
if ($sql) {
/// se existir $sql, redireciona a pagina
?>
<script>
window.location.replace('<?php echo $url; ?>');
</script>
<?php
} else {
echo "erro" . mysql_error();
}
?>

cara eh issu aih...agora coloca di acordo com a sua tabela

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caraaaaa... animei, incrementou a linha clicks, só não está redirecionando a página, da o erro abaixo:

 

Warning: mysql_query() [function.mysql-query]: [2002] Uma tentativa de conexão falhou porque o componente conectado nã (trying to connect via tcp://localhost:3306) in C:\Program Files (x86)\EasyPHP-5.3.2\www\Web\links\cota_clicks.php on line 3

Warning: mysql_query() [function.mysql-query]: Uma tentativa de conexão falhou porque o componente conectado não respondeu corretamente após um período de tempo ou a conexão estabelecida falhou porque o host conectado não respondeu. in C:\Program Files (x86)\EasyPHP-5.3.2\www\Web\links\cota_clicks.php on line 3

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\Program Files (x86)\EasyPHP-5.3.2\www\Web\links\cota_clicks.php on line 3

Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files (x86)\EasyPHP-5.3.2\www\Web\links\cota_clicks.php on line 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
$con = include "conexao.php";
$url = $_GET["url"];
$sql = mysql_query("SELECT * FROM links WHERE url='$url'"); // select para pegar a quantidade de clicks

$l = mysql_fetch_array($sql);
$clicks = $l["clicks"]; // quantidade dos clicks atual
$clicks = $clicks+1; // adiciona mais 1 nos clicks

//////// AGORA VEM O UPDATE

$sql = mysql_query("UPDATE links SET clicks='$clicks' WHERE url='$url'");
if ($sql) {
	
	/// se existir $sql, redireciona a pagina
	
?>
<script>
window.location.replace('<?php echo $url; ?>');
</script>
<?php
} else {echo "erro" . mysql_error();
}
// Ajuda de Diego Machado
?>

Cara, perdão, eu tinha deixado a conexão de fora.... nossa... deu certo aqui... vlw mesmo.. Deus te abençoe!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ehhh... olha eu aqui denovo... resolvi um problema e arrumei outro, acontece que o ID dos posts esta me gerando uma dor de cabeça infernal, agora os posts mais antigos estão aparecendo primeiro que os posts mais recentes, isso está acontecendo por que o ID do post tem um número alto e os clicks iniciam do 0, daí eu num tenho como fazer uma contagem de clicks do 0. Eu tinha pensado em mostrar apenas os posts do dia na home do site, por data ou coisa parecida.

 

Alguém tem alguma sugestão?

 

Diego?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simplifica essa bagaça:

UPDATE links SET clicks=clicks+1 WHERE url='$url'

Esquece esse select...

SELECT * FROM links WHERE url='$url'

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.