Colocar Resposta 
 
Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
PHP valores separados por virgulas
15-12-2010, 16:52 (Esta mensagem foi modificada pela última vez a: 15-12-2010 16:54 por mpmont.)
Mensagem: #1
PHP valores separados por virgulas
Boa tarde,

cá estou eu mais uma vez a pedir ajuda =) então é assim eu tou a construir um pequeno cms, e nele queria incluir um sistema de tags, assim quando o utilizador cria um novo artigo adiciona as tags separando palavras por virgulas ex:

atitude, controlo, destreza, estudo

depois eu quando guardo o artigo tenho um campo na base de dados chamado tags onde guardo os valores.

o meu problema é depois ir buscar la os valores separados por virgulas, ou seja, como é que eu transformo a string devolvida pela base de dados num objecto com todas as tags?

já agora se tiverem alguma sugestão em como criar um bom sistema de tags, caso a minha linha de pensamento não ser a mais correcta estou aberto a sugestões como é óbvio =)

cumprimentos =)

Twitter:@marcogmonteiro
Website/blog:marcomonteiro.net
Inspiration: dailypancake.com
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
15-12-2010, 17:15
Mensagem: #2
RE: PHP valores separados por virgulas
O ideal é teres uma tabela com as tags existentes (onde crias quando não existe) do tipo:

Código:
tags: id (int, primary, auto-increment), tag (varchar(80), total (int, default 1)

Depois outra:

Código:
tags_objects: id (int, primary, auto-increment), tag (int), object (int) (criar um unique index com tag e object)

Depois terás uma função do tipo addTag('nomedatag') que irá adicionar ou actualizar valores na primeira tabela, algo como:

Código:
function addTag($tag) {
  //-- Aqui verificas se é um valor válido e se existe na BD, se existir, actualizas o valor "total", caso contrário, adicionas uma linha na tabela, convém retornar o ID numérico da tag.
}

De seguida, outra função, a que vais aplicar para "taggar" uma tag a um objecto, ex. addTag2Object('tag',1), do tipo:

Código:
function addTag2Object($tag,$object) {
  //-- Aqui vais buscar o id utilizando $tag_id = addTag($tag);
  //-- Depois adicionas a tag ao objecto, se não existir. Se existir, ou retornas um erro ou não fazes nada.
}

Agora, finalmente o que pediste especificamente, uma função que pegue na string separada por vírgulas e que chame as funções acima, ex. tagObject('tag, tag2,tag3 ,tag4',1), do tipo:

Código:
function tagObject($tags,$object) {
  $tags_a = explode(',',$tags);//-- Converte a string num array
  foreach ($tags_a as $tag) {
    $tag = trim($tag);//-- Limpa espaços no início e fim
    addTag2Object($tag,$object);
  }
}

Faltam imensas verificações e tal, mas fiz isso agora de cabeça, deve ser mais que suficiente.

Se precisares de taggar vários objectos diferentes (posts, comentários, páginas, etc.) convém adicionares na segunda tabela um type (int) e respectivamente nas funções.

BrunoBernardino.com
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
15-12-2010, 18:05
Mensagem: #3
RE: PHP valores separados por virgulas
boa =)

chega perfeitamente para continuar =)

Twitter:@marcogmonteiro
Website/blog:marcomonteiro.net
Inspiration: dailypancake.com
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
Colocar Resposta 


Saltar Fórum:


Utilizadores a ver este tópico: 2 Visitante(s)