Ir para conteúdo

POWERED BY:

Arquivado

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

Patrique

Contagem de tags no bd

Recommended Posts

Fala ai pessoal, frequentemente eu eu vejo sites que usam sistema de tags, ou seja sempre quando é cadastrada uma notícia é inserida tags que tem ligação com aquela notícia.

 

Em alguns sites tem um sistema que conta as tags listando elas e dando o numero de notícias que tem essa mesma tag.

 

Vamos supor, eu vou lá e cadastro uma notícia e coloco as seguintes tags

 

carro, moto, mulher, smile, debora

 

Outro um outro usuário vai la e cadastra uma outra notícia e colocar

 

carro, avião, barco

 

Um terceiro usuário vai lá e cadastra um outra notícia e coloca

 

carro, mulher, barco

 

até ai beleza...

 

agora eu gostaria de saber como o sistema faz a contagem das tags e depois mostra da seguinte maneira

 

Carro (3)

Moto(1)

Mulher(2)

Smile(1)

Debora(1)

Avião(1)

Barco(2)

 

Neste caso acima estou fazendo um exemplo me baseando no modelo que os meus exemplos de usuário postaram as tags deles.

 

Ou seja, o sistema verifica que existe tal tag... e depois faz uma contagem para saber nas outras notícias se tem a mesma tag, se tiver ele faz a soma e depois soma tudo organizando e mostrando ao usuário.

 

Gostaria de saber uma lógica, se existe alguma função nativa do mysql ou asp.

 

Eu pensei em fazer da seguinte maneira...

 

Quando o usuário cadastra o sistema pega separa e verifica se já existe em uma outra tabela que fara as contagens... se existir ele da um up somatório no valor da tag, se não existir ele coloca nessa tabela essa tag com o valor 1...

 

Porém não sei se esta é a forma correta uma vez suponhamos que o sistema aceite 10 tags... nesse momento ele faria 10 consultas... será que isso é válido?

 

Se alguém ai tiver alguma idéia.

 

Desde já eu agradeço.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

noticia - o sol é amarelo -> você cadastra a tag, e outros usuarios adicionam também???

 

 

 

 

ha algumas forma para sistema de tags

 

ex tbl minhas_tags

 

palavra | qtd | id_noticia

 

asp       |2     |45

 

php       |1     |45

 

suporte |3     |65

 

brasil    |5     |56

 

 

 

 

quando você listar a noticia ID 45, vai retornar as tags e os totais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala cara.

 

Na verdade só os adminis cadastram e existe uma coluna na tabela noticias esta coluna se chama tags e nela as tags são listadas assim, exp: "carro, avião, navio, marinha"

 

É assim

 

| tbl Notícias |

| ID | TITLE | DESCRIPTION | IMAGE | TAGS |

| 0  | Olá.. | Mais uma... | a.png | carro, avião, navio, marinha |

Na verdade acho que você não entendeu, eu não quero contar o total de tags para cada notícia, eu quero é somar todas e fazer categorias com os números de notícias que tem aquela tag lista.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao nao entendi mesmo :)

 

Carro (3)

Moto(1)

Mulher(2)

Smile(1)

Debora(1)

Avião(1)

Barco(2)

 

 

 

 

 

isso vai ser baseado em qual consulta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

rsrsrrs

 

Seguinte, tem varias noticias, e cada noticia tem tags... essa tags estarão cadastradas no bd tudo junto, desta forma

 

oi, tim, vivo, claro

 

até ai beleza, se eu quiser fazer a contagem e saber que tem 4 tags cadastradas para aquela notícia é fácil eu pego o valor da coluna na tabela referente aquela noticia, neste caso vai ser "oi, tim, vivo, claro" do um split e for loop e faço a contagem ou separação.

 

Mais existe mil outras notícias e cada uma com tags iguais ou diferentes.

 

Vamos supor que no BD tenha as seguintes noticias

 

NOTICIA 1 - Com as seguintes tags cadastradas

TAGS NOTICIA 1 - "um, dois, tres, quatro, cinco, seis"

 

NOTICIA 2 - Com as seguintes tags cadastradas

TAGS NOTICIA 2 - "quatro, sete, oito, nove"

 

NOTICIA 3 - Com as seguintes tags cadastradas

TAGS NOTICIA 3 - "quatro, doze, treze, quatorze"

 

Repare que na noticia 1, 2 e 3 tem a tag "quatro"

 

Dai chega a parte que estou tentando fazer.

 

O sistema pega todas as tags existentes... seja em quais noticias elas estiverem e faz a contagem comparando.. no caso da noticia 1, 2 e 3 tem a tag "quatro" e as outras tags são únicas não tendo outra noticia uma tag igual.

 

Ai o sistema faz a listagem de tags e contagem

 

Quatro(3)

um(1)

dois(1)

tres(1)

cinco(1)

seis(1)

sete(1)

oito(1)

nove(1)

dez(1)

onze(1)

doze(1)

treze(1)

quatorze(1)

 

Repare que ele identificou que em 3 tabelas de noticias na coluna tags tinha neste caso 3 tags "quatro" e no restante elas eram únicas e dai listou como 1.

 

Sacou?

Compartilhar este post


Link para o post
Compartilhar em outros sites

então... foi o que eu disse acima, so que de outra forma

 

como você citou, você vai percorrer a tbl noticias na coluna tags; vai retornar tag1, tag2, tag3, vai ter que jogar em array, separar e comparar

 

o exemplo que citei é mais pratico, mas vou remover a coluna qyd

 

 

 

 

tbl minhas_tags

palavra | id_noticia

asp |45

php |45

suporte |65

brasil |56

 

 

 

você cadastra a noticia e cada tag entra em linha

 

bd = "select SQL_CACHE * from tags where tag="&MINHA_TAG

do while not rs.EOF

   response.write ...

  rs.MoveNext

loop

 

 

pode ser um select com innerjoin pra você resgatar o titulo da noticia, ai você monta

 

 

ou retorna o cont ou monta tudo relacionado, pois se usar innerjoin vai ter o titulo correspondente

 

essa é a forma que uso, mais facil de administrar e flexivel

 

 

 

 

da sua forma 

 

vai ter que ser um split com retorno em cada split(x) no loop

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow entendi, me clareou a mente, vou tenstar o que me passou, qualquer coisa volto aqui pra te pedir um help professor.

 

valew.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na sua SQL você irá usar a função COUNT em conjunto com um SELECT usando LIKE nos campos de TAG's, passando cada tag inserida para fazer a comparação. Terá que usar também a clausula GROUP-BY.

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.