Ir para conteúdo

POWERED BY:

Arquivado

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

webdesign

contar quantidade de comentarios por post

Recommended Posts

ola pessoal podiam me ajudar aplicar a contagem de comentarios por post.

 

quero aplicar o post mais comentado?

 

tou com dificuldade nissu

 

ele neste codigo apresenta o comentario e o post eu agora só queria fazer a contagem que naquel topico existem 3 comentarios assim sucessivamente

	$readComment = read('comments',"WHERE resp_id IS NULL AND isadmin IS NULL ORDER BY status ASC, data DESC ");
	if(!$readComment):
		echo '<li>nao exite comentario!</li>';
	else:
		foreach($readComment as $com):
		
		$readArt = read('posts',"WHERE id = '$com[post_id]'");
		
		if($readArt) foreach($readArt as $art);
		echo count($art['categoria']);
		$matts = array('alt' => 'Avatar de '.$com['nome'],'title' => 'Avatar de '.$com['nome']);
		$mavatar = gravatar($com['email'],60,'mm','g',true,$matts);
		
			echo '
				<li>
					'.$mavatar.'
					<div class="commentitem">
						<span>De <strong>'.$com['nome'].'</strong> sobre <strong>'.lmWord($art['titulo'],36).'...</strong></span>	
						<p>'.lmWord($com['comentario'],120).'...</p>
					</div><!--/commentitem-->
				</li>
			';
		endforeach;
	endif;		

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse fórum é apenas para ASP, poste no fórum de php. E vc pode fazer a contagem direto na SQL usando o operador COUNT

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o XAN disse esse forum é de ASP CLASSIC.

 

Mas usa o operador COUNT do SQL

 

 

select count(*) as totalcomentario from comentarios where id='varialvel'

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

ou também contar os recordsets, numa variável contador simples

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para efeitos didáticos a teoria diz que não indicado usar o asteristico no SQL onde seria melhor escrever os campos onde nesse caso poderia ser só o campo índice da tabela ou os campos se for chave composta...

Compartilhar este post


Link para o post
Compartilhar em outros sites

vc pode usar um contador normal ou a cláusula count do SQL, pois se o seu bd for muito grande o recordcount do objeto recordset para apresentar queda de desempenho

exemplo:

 

<%
DIM SQL, objRS, VAR_ID
VAR_ID= reuqest.form("id")
SQL = "SELECT comentario FROM comentarios WHERE id='VAR_ID'"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open SQL, objConn

' Conta quantos registros existem
DIM iRecordCount
iRecordCount = 0
DO WHILE NOT objRS.EOF
iRecordCount = iRecordCount + 1
objRS.MoveNext
Loop

' Display result
Response.Write "(" & iRecordCount & ")"

objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>

 




SQL COUNT

 

<!--#INCLUDE VIRTUAL="/includes/connection.asp" -->

<%
DIM SQL, objRS, VAR_ID
VAR_ID= reuqest.form("id")
SQL = "SELECT SELECT COUNT CAMPO AS TOTALREGISTROS FROM comentarios WHERE id='VAR_ID'"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open SQL, objConn,1,3

' Display result
Response.Write objRS("intTotal")

objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
 

 



Compartilhar este post


Link para o post
Compartilhar em outros sites

pode ser assim também !!!

 

 

...

if rs.eof = false and rs.bof = false then
total = rs.GetRows()
total = cint(ubound(total,2))+1
rs.AbsolutePage = 1
response.write total

Compartilhar este post


Link para o post
Compartilhar em outros sites

vc terá um maior desempenho no server usando o SQL Count

 

 

 

SQL = "SELECT SELECT COUNT CAMPO AS TOTALREGISTROS FROM comentarios WHERE id='VAR_ID'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu não acho muito inteligente fazer uma sql para contar depois fazer outra sql para fazer um loop para mostrar os comentários coitado do banco... da maneira que propus é tudo utilizado num recordset só. Galeria não pense que só porque funcionou que bom... vamos otimizar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando o SQL count, é mais rápido que o método do objeto recordset, se for muito dados o melhor é usar comandos nativos da SQL, embora tenha algumas opções de tratar os dados pelo objeto recordset, como (sort, seek, filter, CacheSize etc etc e tal), que se não for usados corretamente é um tiro no pé.

Compartilhar este post


Link para o post
Compartilhar em outros sites

begin of file = inicio do arquivo

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso mesmo... tratar somente com o EOF não está errado, mas amarro sempre nas 2 pontas por que o EOF vem depois do último registro do recordset e o BOF vem antes do primeiro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então uma listagem de produtos vindo do banco de dados ficaria assim?

 

<%
set rs = conn.execute("select * from produtos")
while rs.eof = false and rs.bof =false
response.write(rs("nome"))
rs.movenext
wend
%>

 

Ficaria assim?

Compartilhar este post


Link para o post
Compartilhar em outros sites

seria se o recordset for final de arquivo rs.eof e bof, ou seja não existe nada no começo e final dos registros. Como vc colocou false ele terá registros.

 

Eu coloco

 

while not rs.eof

....

....

wend

 

unica coisa que seto ele com o Not

 

A propriedade BOF retorna True (-1) se a posição do registro atual é antes do primeiro registro do conjunto, caso contrário, retorna False (0).

A propriedade EOF retorna True (-1) se a posição do registro atual é depois do último registro no conjunto de registros, caso contrário, retorna False (0).

As propriedades BOF e EOF são definidas como True se você abrir um conjunto de registros vazio. Propriedade RecordCount é zero.

Se um conjunto de registros contém pelo menos um registro, o primeiro registro é a atual e as propriedades BOF e EOF são falsas.

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.