alvarogtc 1 Denunciar post Postado Setembro 14, 2010 Pessoal, to tentando realizar uma busca e não ta retornando os resultados corretos tipo tenho no database tabela:anuncios coluna categorias, onde sao registradas todas as categorias de um determinando anuncio. fica registrado assim 1|3|6|10|12 etc depois tenho uma busca por categorias tipo categoria = 3 nesse caso eu precisaria de varrer toda tabela:anuncios , verificando o campo categoria de cada registro e onde tivesse 3, me retorna-se o resultado o maximo q consegui foi quando o primeiro item era 3, tipo 3|6|10 retornava ok, agora se tive tipo 1|3|6 ja nao retornava... alguem tem alguma solucao pra mim??? php + mysql. Agradeço Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Setembro 14, 2010 Respondi hoje 3 perguntas praticamente iguais a essa. Comecem a utilizar a busca, pessoal. Mas respondendo: SELECT * FROM `tabela` GROUP BY `categoria` GROUP BY agrupa os dados selecionados. Se quiser podes ainda utilizar WHERE para condições, ORDER e outras ferramentas. Até. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Setembro 14, 2010 Exporte a estrutura das tabelas, e poste aqui. meio dificil dizer algo, sem saber se você modelou corretamente. Compartilhar este post Link para o post Compartilhar em outros sites
alvarogtc 1 Denunciar post Postado Setembro 14, 2010 Exporte a estrutura das tabelas, e poste aqui. meio dificil dizer algo, sem saber se você modelou corretamente. CREATE TABLE IF NOT EXISTS `tb_guia_anuncios` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `id_cliente` int(10) NOT NULL, `categorias` varchar(255) NOT NULL, `destaque` enum('S','N') NOT NULL, `id_estado` int(5) NOT NULL, `id_cidade` int(5) NOT NULL, `bairro` varchar(255) NOT NULL DEFAULT '', `end` varchar(255) NOT NULL DEFAULT '', `numero` varchar(255) NOT NULL DEFAULT '', `cep` varchar(255) NOT NULL DEFAULT '', `nome` varchar(255) NOT NULL DEFAULT '', `email` varchar(255) NOT NULL DEFAULT '', `tel1` varchar(255) NOT NULL DEFAULT '', `site` varchar(255) NOT NULL DEFAULT '', `data` datetime NOT NULL, `resumo` text NOT NULL, `servicos` text NOT NULL, `foto0` varchar(255) NOT NULL DEFAULT '', `visitas` varchar(255) NOT NULL DEFAULT '0', `status` enum('S','N') NOT NULL DEFAULT 'S', UNIQUE KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=15 ; INSERT INTO `tb_guia_anuncios` (`id`, `id_cliente`, `categorias`, `destaque`, `id_estado`, `id_cidade`, `bairro`, `end`, `numero`, `cep`, `nome`, `email`, `tel1`, `site`, `data`, `resumo`, `servicos`, `foto0`, `visitas`, `status`) VALUES (1, 26, '16|11|17|18|41|13|21|32|10', 'S', 1, 130, 'centro', 'rua santo antonio', '125', '21212-121', 'Panificadora Abraao', 'aaa@aaa.com', '(21) 2121-2121', 'www.seusite.com', '2010-09-11 00:00:00', 'teste teste teste teste', 'teste teste teste teste', '1_110920101252480.jpg', '0', 'S'), (5, 38, '16|11|17|18|41|13', 'S', 11, 1411, 'Centro', 'Av Afonso Pena', '1124', '22222-222', 'Loja do Povo', 'aaa@hotmail.com', '(32) 3232-3232', 'www.seusite.com', '2010-09-11 00:00:00', 'teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste', 'teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste teste', '_110920101539050.jpg', '40', 'S'); CREATE TABLE IF NOT EXISTS `tb_guia_categorias` ( `id` int(9) NOT NULL AUTO_INCREMENT, `id_guia` int(9) NOT NULL, `nome` varchar(255) COLLATE latin1_general_ci NOT NULL DEFAULT '', `status` enum('S','N') COLLATE latin1_general_ci NOT NULL DEFAULT 'S', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=43 ; -- -- Dumping data for table `tb_guia_categorias` -- INSERT INTO `tb_guia_categorias` (`id`, `id_guia`, `nome`, `status`) VALUES (3, 21, 'Boate ', 'S'), (4, 21, 'Casas Noturnas', 'S'), (5, 7, 'Petiscaria', 'S'), (6, 7, 'Pratos Quentes e Frios', 'S'), (7, 7, 'Pizzaria', 'S'), (8, 7, 'Cozinha Japonesa', 'S'), (9, 7, 'Pastelaria', 'S'), (10, 7, 'Fast Food', 'S'), (11, 3, 'Acabamento p/ móveis', 'S'), (12, 3, 'Vidraçarias', 'S'), (13, 3, 'Ar Condicionado', 'S'), (14, 3, 'Móveis Reforma', 'S'), (15, 3, 'Gesso', 'S'), (16, 3, 'Acabamento', 'S'), (17, 4, 'Agência de Diaristas', 'S'), (18, 4, 'Agências de Emprego', 'S'), (19, 4, 'Agências de Modelo', 'S'), (20, 4, 'Prestação de Serviços', 'S'), (21, 15, 'Bijuterias', 'S'), (22, 15, 'Cabeleireiros e Inst. de Beleza', 'S'), (23, 15, 'Massagens', 'S'), (24, 9, 'Web Designer', 'S'), (25, 9, 'Internet Via Rádio', 'S'), (26, 9, 'Informática - Cursos e Treinamentos', 'S'), (27, 9, 'Lan Houses', 'S'), (28, 9, 'Informática - Serviços', 'S'), (29, 18, 'Açougues', 'S'), (30, 18, 'Varejão (Frutas, Verduras e Legumes)', 'S'), (31, 18, 'Aves e Ovos', 'S'), (32, 18, 'Chopperias e Cervejarias', 'S'), (33, 18, 'Alimentos Congelados', 'S'), (34, 13, 'Academias', 'S'), (35, 13, 'Centros Esportivos', 'S'), (36, 13, 'Ginástica', 'S'), (37, 22, 'Aulas Particulares, Reforço Escolar', 'S'), (38, 22, 'Livrarias', 'S'), (39, 22, 'Cursos de Inglês', 'S'), (40, 22, 'Escolas de Música', 'S'), (41, 11, 'Aluguel de Carros para Eventos', 'S'), (42, 15, 'Moda Noivas', 'S'); CREATE TABLE IF NOT EXISTS `tb_guia_gerais` ( `id` int(9) NOT NULL AUTO_INCREMENT, `nome` varchar(255) COLLATE latin1_general_ci NOT NULL DEFAULT '', `status` enum('S','N') COLLATE latin1_general_ci NOT NULL DEFAULT 'S', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=25 ; INSERT INTO `tb_guia_gerais` (`id`, `nome`, `status`) VALUES (3, 'Casa e Decoração', 'S'), (4, 'Empregos', 'S'), (5, 'Treinamentos', 'S'), (6, 'Pets', 'S'), (7, 'Restaurantes', 'S'), (8, 'Festas e Eventos', 'S'), (9, 'Informática e Serviços', 'S'), (10, 'Concessionárias Revendas', 'S'), (11, 'Noivas e Noivos', 'S'), (12, 'Profissionais e Serviços', 'S'), (13, 'Fitness', 'S'), (14, 'Bancos', 'S'), (15, 'Moda e Beleza', 'S'), (16, 'Segurança', 'S'), (17, 'Construção e Reforma', 'S'), (18, 'Alimentos e Bebidas', 'S'), (19, 'Supermercados', 'S'), (20, 'Infantil', 'S'), (21, 'Bares e Clubes', 'S'), (22, 'Educação e Cultura', 'S'), (23, 'Esporte Turismo e Lazer', 'S'), (24, 'Saúde e Higiene', 'S'); A tabela guia_gerais lista as categorias como se fossem principais entao digamos q eu va em restaurante, me tras todas as subcategorias (tb_guia_categorias, relacionado ao id - restaurante) ai quando eu clicar na subcategoria, q era suposto listar os registro da tb_guia_anuncios, os resultados vem equivocados na primeira tabela categorias lista o id das categorias assim 1|4|7|10 etc so q seu eu busco digamos $busca = 4; // estou apenas definindo um id qualquer para testar a busca sql = Select * from tb_guia_anuncios where $busca in tb_guia_anuncios.categorias nao funcionou tentei fazer diferente $categorias2 = str_replace("|", "','", $categorias); e depois fazer a busca, tbm nao foi. ai tentei assim $busca = 4; $sql = "SELECT * FROM tb_guia_anuncios WHERE categorias LIKE '%|$busca|%' "; tbm nao foi eu acho q talvez se eu pegasse esses dados dentro de $categorias e fizesse um array depois mandasse verificar se o ID q eu quero buscar esta no array talvez de certo... se tiver um ideia melhor.... agradeço Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Setembro 14, 2010 Amigo, você fez tudo isso e não tentou com GROUP BY que te passei? Apenas use o LIKE, unido com WHERE e GROUP BY `categoria`. Até mais Compartilhar este post Link para o post Compartilhar em outros sites
alvarogtc 1 Denunciar post Postado Setembro 15, 2010 Amigo, você fez tudo isso e não tentou com GROUP BY que te passei? Apenas use o LIKE, unido com WHERE e GROUP BY `categoria`. Até mais Eu consegui assim //Na hora de gravar no banco de dados eu coloquei assim $categorias2 = "|".@implode("|", $categorias)."|"; //Pra ficar |1|3|5|7|9| //depois na busca checa por |1| or |4| etc $categoriaID = $_GET[categoria]; $SqlCount = "SELECT tb_guia_anuncios.id FROM tb_guia_anuncios WHERE tb_guia_anuncios.status ='S' "; $SqlCount .= " AND tb_guia_anuncios.categorias LIKE '%|$categoriaID|%' "; $SqlCount .= " GROUP BY tb_guia_anuncios.id "; $QueryCount = mysql_query($SqlCount,$conexao) or die(mysql_error($conexao)); $RsCount = mysql_fetch_array($QueryCount); deu certo... obrigada pelas dicas. Compartilhar este post Link para o post Compartilhar em outros sites