Várias categorias para o mesmo artigo - PHP - Fórum iMasters
By JoaoGusmao, January 14, 2012 in PHP
Galera, tenho um blog que fiz em php e mysql, portanto não sei como fazer o cadastro de um artigo em várias categorias. como posso fazer isso? as categorias são cadastradas no bd, e na hora de listar os artigos, eu faço um where com o id da categoria. ajuda ae galera! vlw
olha.. não sei se entendi bem, mas eu acho bem mais facil assim:
1. no formulario de cadastro do artigo tenho um campo p/ a categoria principal,
outros para as outras subcategorias etc...
cada campo do form, obvio, tem uma coluna correspondente na tabela do banco;
ai no select você usa and; ex:
where categoria="esporte" AND subcategoria1="futebol" AND subcategoria2="campeonato brasileiro"
acho q não é isso não.. creio q ele quer a mesma coisa q vou ter q tentar fazer daqui algumas semanas,
tipo meu caso fazendo um guia online, pegar exemplo de um salão de festa com bufft, o dono desse salão quer que quando alguém entrar em uma das seguintes categorias, buffets, salão E buffets com salão, logo eu tenho um único cadastro onde o anuncio apresenta em 3 categorias. creio q seja isso... tb tenho duvidas.. vou acompanhar esse tópico.. xD
É assim como no wordpress... você cadastra as categorias, e depois no post você seleciona as categorias em que aquele post vai. isso que eu quero.
ell_cpu 0
Interesses:Visite: http://gembr.org
você pode criara uma tabela com dois campos artigo(int)|categoria(int) depois é só atribuir as categorias ao arquivo, pode ser por checkbox na hora do cadastro!
AFF... isso eu eu sei fazef ¬¬'. Lê o tópico direito, cara!
bom o cara deve ter entendido errado.
mas como falei eu tb vou ter q fazer isso aqui, então se eu consegui eu dou um toque , pq tb não faço a minima ideia como fazer xD
Edited January 15, 2012 by Michel Kuguio
pensei em fazer um campo bd do artigo com o nome categoria, dai registra a categoria assim como ela é lida (ex: videos). dai na hora de consultar, coloca um "LIKE". Esta ideia é valida.
Eitaa... ai nao sei. talves separa a variável com as categorias depois da vírgula..: algo do tipo. tenta estudar os códigos do wordpress para ver se tem resultado (eu já dei uma olhada, mas nao me dou bem com POO)
Renan. 0
Interesses:PHP, MySQL, jQuery, HTML, CSS...
JoaoGusmao, salve um array junto com os produtos contendo as IDs das categorias
TABLE categoria
TABLE artigo
id, titulo, texto
TABLE artigo_categoria
id_categoria, id_artigo
Acho que este seu método so complicaria, pq está adicionando uma nova tabela, e isto nao é necessário, já que pode-se criar uma coluna com o id da categoria na tabela do artigo.
já que pode-se criar uma coluna com o id da categoria na tabela do artigo.
dessa forma você não conseguiria ter várias categorias para um mesmo artigo
Acho que este seu método so complicaria, pq está adicionando uma nova tabela, e isto nao é necessário
estude Normalização de Dados (Formas Normais).
cara até tem pq o site q tenho aqui, tenho um em asp não foi eu q desenvolvi o em asp.. mas nele o WM colocou os ids em um unica coluna porem os id parecem assim (1),(2),(3)... não sei o q muda com os parenteses ma snao sei como depois irar a especifica parte tipo só o 2 e deixar o 1 e o 3...
mas convenhamos temos q pensar um pouco caso criar uma 3 tabela facilitará nossa programão eu crio a 3 tabela.. xD
tem que pensar qual vai dar menos trabalho para alteração...
colocou os ids em um unica coluna
caso criar uma 3 tabela facilitará nossa programão eu crio a 3 tabela.. xD
sim, facilita e melhora a performance.
Concordo com William Bruno você deve estudar para fazer as coisas no padrão!
É assim como no wordpress... você cadastra as categorias,
e depois no post você seleciona as categorias em que aquele post vai. isso que eu quero.
ah, ta.. vamos ver se agora eu entendi..
1. nao sei se é exatamente assim q e feito no wordpress,
mas suponho q você pode criar 1 "array" no formulario de cadastro
(ou tela de cadastro, se preferir...) utilizando checkboxes, como dito acima;
abaixo segue 1 exemplo:
<input type="checkbox" name="passatemp[]" value="TV" />
TV</label>
<input type="checkbox" name="passatemp[]" value="Futebol" />
Futebol</label>
<input type="checkbox" name="passatemp[]" value="Video Game" />
Video Game</label>
<input type="checkbox" name="passatemp[]" value="Cinema" />
Cinema</label>
retirado dessa apostila:
http://www.apostilando.com/download.php?cod=2842&categoria=PHP
(repare q todos os checkboxes terão o mesmo nome c/ colchetes vazios)
2. p/ salvar no banco num mesmo campo, as formas q eu conheço seriam
implode ou serialize.
obs: p/ editar esse campo: comando update normal (o campo é varchar) ok?
Edited January 16, 2012 by Fernando C
isso é gambiarra @Fernando C.
Note que você está enviando "mais de uma informação" para um campo. Em termos de entidade e modelagem normalizada, isso está incorreto.
Veja a estrutura que propus.
Modelar errado, te acarretará mais problemas no futuro.
Por exemplo, com essa sugestão, imagina se eu quiser que você me responda todos os artigos que pertencem a categoria "Doces", como você faria esse SELECT ?