Ir para conteúdo

POWERED BY:

Arquivado

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

Mauricio_Duarte

[Resolvido] em Hits

Recommended Posts

E ai galera..beleza?

então, estou fazendo um sisteminha bem básico de hits assim:

 

"Há uma tabrla de usuario, onde há um campo dessa tabela que marca o número de hits(visitas) que ele possui."

"Só é marcado esse hit se o visitante estiver logado, e se a página que ele estiver visitando não for a sua própria página de informações. (seu perfil; profile)"

Já que marco o usuário que visitou e o visitado, criei outra tabela so marcando o id deles.

 

Tabela de usuários: (com os hits):

Imagem Postada

 

Tabela de Hits (id apenas dos usuarios):

Imagem Postada

 

Daí no profile da pessoa (perfil) eu gostaria de mostrar os hits e quem fez, daí então fiz relação de tablas. Até aí tudo bem. Só que eu mostro na pessoa e sempre que tem a mesma pessoa cria uma nova linha com este mesmo nome. Vou demonstrar:

 

Aqui gravo os hits de quem viu e de quem foi visitado

<?php
	if(isset($_SESSION['uid'])){
			if($_SESSION['uid'] != $_GET['uid']){
			$sqlNovoHit = mysql_query("INSERT INTO usu_hits (
			usu_hits.h_visitanteid, 
			usu_hits.h_visitadoid, 
			usu_hits.h_hora, 
			usu_hits.h_data
			) VALUES (
			'".$_SESSION['uid']."', 
			'".$_GET['uid']."', 
			CURTIME(), 
			CURDATE()
			)")or die(mysql_error());
			
			$sqlAtualizaHits = mysql_query("UPDATE usuarios SET 
			usuarios.u_hits=usuarios.u_hits + 1 WHERE usuarios.uid='".$_GET['uid']."'")or die(mysql_error());
			}
	}
?>
Aqui mostro na página os hits

...
 <table width="100%" border="0" cellpadding="0" cellspacing="0">
									<tr>
										<td width="50%" bgcolor="#000000" style="color:#FFFFFF;">
											Visitante:
										</td>
										<td width="25%" bgcolor="#000000" style="color:#FFFFFF;">
											<center>Data</center>
										</td>
										<td width="25%" bgcolor="#000000" style="color:#FFFFFF;">
											<center>Horas</center>
										</td>
									</tr>
									<?php
									$UltimosHits = mysql_query("SELECT * FROM usu_hits, usuarios WHERE usu_hits.h_visitadoid='".$_GET['uid']."' AND usuarios.uid=usu_hits.h_visitanteid LIMIT 10")or die(mysql_error());
									while($rowH = mysql_fetch_array($UltimosHits)){
									
		$HitData = substr($rowH['h_data'],8,2) . "/" .
		substr($rowH['h_data'],5,2) . "/" . 
		substr($rowH['h_data'],0,4);
		$HitHora = substr($rowH['h_hora'],0,2) . ":" .
		substr($rowH['h_hora'],3,2) . " h ";
									
										echo "<tr>";
										echo "<td width=\"50%\">";
										echo "".$rowH['u_nick']."";
										echo "</td>";
										echo "<td width=\"25%\">";
										echo "<center>".$HitData."</center>";
										echo "</td>";
										echo "<td width=\"25%\">";
										echo "<center>".$HitHora."</center>";
										echo "</td>";
										echo "</tr>";
									}
									?>
								</table>
...
Mas reparem que se há um mesmo usuário que viu aparece 2 vezes a linha com o nick dele....

reparem.... aqui no link c quiserem:

http://www.cnb-gaming.com.br/web/members.p...erfil&uid=1 (site sobre clãn de cs source que ainda não acabou)

 

Bom é isso, eu quero fazer com que se o usuário visite denovo marque esse hit mas na página do usuário ond e mostra os hits que ele tem.. mostrar o nome apenas uma vez e qtos hits ele deu...entenderam ?

 

aguardo resposta ( e desculpas pelo gigantesco tópico)

Abraçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta alguma coisa parecida com isto:

 

 

SELECT COUNT(hits.visitante) AS tv, * FROM usu_hits, usuarios WHERE usu_hits.h_visitadoid='".$_GET['uid']."' AND usuarios.uid=usu_hits.h_visitanteid GROUP BY usuarios.Id, hits.visitante LIMIT 10"

 

Os nomes dos campos não estão certos, arrume antes de testar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$UltimosHits = mysql_query("SELECT COUNT(usu_hits.visitanteid) AS tv, * FROM usu_hits, usuarios WHERE usu_hits.h_visitadoid='".$_GET['uid']."' AND usuarios.uid=usu_hits.h_visitanteid GROUP BY usuarios.uid, usu_hits.visitanteid LIMIT 10")or die(mysql_error());

e apareceu:

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE usu_hits.h_visitadoid='2' AND usuarios.uid=usu_hits.h_visitanteid GROUP BY' at line 1

 

alguem me ajudda por favorrrrrrrrrrrrrrrrrrrrrrrrrr

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta sem o asterisco. Só com dois campos a soma e o usuario.id

 

Ai depois se precisar de outros campos faz uma nova consulta.

 

 

$UltimosHits = mysql_query("SELECT COUNT(usu_hits.visitanteid) AS tv, usuarios.uid FROM usu_hits, usuarios WHERE usu_hits.h_visitadoid='".$_GET['uid']."' AND usuarios.uid=usu_hits.h_visitanteid GROUP BY usuarios.uid, usu_hits.visitanteid LIMIT 10") or die(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja como ficou a tabela

colokei:

 

$UltimosHits = mysql_query("SELECT COUNT(usu_hits.h_visitanteid) AS tv, usuarios.uid FROM usu_hits, usuarios WHERE usu_hits.h_visitadoid='".$_GET['uid']."' AND usuarios.uid=usu_hits.h_visitanteid GROUP BY usuarios.uid, usu_hits.h_visitanteid LIMIT 10") or die(mysql_error());
									while($rowH = mysql_fetch_array($UltimosHits)){

...(continua)
veja: http://www.cnb-gaming.com.br/web/members.p...erfil&uid=1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer mostrar quem fez mais visitas ou os últimos visitantes?

 

Se for mais visitas você quer mostrar também a data e a hora da última visita?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então deve ser assim:

 

$sql = "SELECT usuarios.u_nome,usu_hits.h_data,usu_hits.h_hora FROM usu_hits

INNER JOIN usuarios ON usu_hits.h_visitanteid = usuarios.uid

WHERE usu_hits.h_visitadoid = '".$_GET['uid']."'

GROUP BY usu_hits.h_visitanteid ORDER BY usu_hits.h_data,usu_hits.h_hora LIMIT 0,10 ";

 

$UltimosHits = mysql_query( $sql ) or die( mysql_error() );

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.