janick 1 Denunciar post Postado Julho 28, 2008 Olá bom dia! estou com dúvida sobre como agrupar elementos! tenho duas tabelas, "tb_sites" e "tb_acoes". em "tb_sites" tenho uma "linha_acoes", onde o conteúdo dela é assim, exemplo (2, 3, 5, 9) estes numeros se referem a id´s da "tb_acoes". em ações tenho a "linha_item" que se refere ao que está relacionado a ação. a idéia é criar um menu deste tipo Estrutura <li class="topo do menu">Nome do Item</li> <li>Montar menu com as ações correspondentes a este item que foram encontradas em "linha_acoes"</li> Exemplo OBS - como se em "linha_acoes" eu tivesse, (2,3), e em "tb_acoes", o id 2, fosse referente a ação de adicionar, com valor da "linha_item" igual a Noticia, e o 3, fosse referente a ação de editar, também com item igual a Noticia. <li class="topo do menu">NOTICIAS</li> <li>Adicionar</li> <li>Editar</li> Não sei como faço isso funcionar, se pelo próprio SELECT dá pra fazer isso ou algo mais. Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
David Ramires 1 Denunciar post Postado Julho 28, 2008 posta a estrutura inteira da sua tabela e depois me manda uma mp Compartilhar este post Link para o post Compartilhar em outros sites
janick 1 Denunciar post Postado Julho 28, 2008 A estrutura é essa: Tabela Sites ----------------------------------- id acoes (array com id referente as ações) link status Tabela Acoes ----------------------------------- id acao (adicionar, editar, etc...) item (noticias, imagens, galerias, etc...) Compartilhar este post Link para o post Compartilhar em outros sites
David Ramires 1 Denunciar post Postado Julho 28, 2008 Janick, eu acho que entendi o você precisa, me corrija qualquer coisa... (Exemplo) na tabela site você teria cadastrado: id: 1 acoes:(1,2) // isso aqui acho que deveria mudar link: http://dimmuborgir.com.br status:1 agora na tabela acoes você teria: id:1 acao:adicionar item:noticias id:2 acao:editar item:noticias bom se for isso que pensei, quando você utilizar o :ID da tabela de sites no meu caso o 1 como resultado ele irá trazer o link http://dimmuborgir.com.br e sobre esse ID você poderia utilizar as ações do ID 1 e 2 da tabela acoes... é alguma coisa assim que você precisa ? Compartilhar este post Link para o post Compartilhar em outros sites
janick 1 Denunciar post Postado Julho 28, 2008 Publico abaixo um pedaço da interface do que to fazendo. O site A, apresentará no menu do lado esquerdo determinadas ações (as que estiverem disponíveis na linha_acoes em tabela_sites, como array). Site B, suas determinadas ações, e por ai vai. O que faço é ler na linha_acoes (array) em tabela_sites, depois verifico na tabela_acoes os id´s que estão nessa array. a dúvida é como montar este menu abaixo, isto é, identificar que os id´s contidos na array estão se referindo ao mesmo "item" (linha_item). o que consigo fazer até o momento é: ele le esta array, e identifica tudo ok. só que ele me mostra assim: ah, e o código está assim: $sql = mysql_query("SELECT * FROM sites, acoes WHERE sites.link = '".$url[1]."' AND sites.status = '1' AND FIND_IN_SET(acoes.id, sites.acoes)"); while($b = mysql_fetch_array($sql)) { $acoes .= "<li class=titulo do menu>aqui entra o titulo isto é, o item a que se refere, exemplo: noticia, galeria, arquivos, o que for...</li>"; $acoes .= "<li>".$b['acao_correspondente']."</li>"; // aqui entra a ação, editar, adicionar, etc.. o que for... } // Fecha While valeu! Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Julho 29, 2008 p/ juntar arrays usa o metodo join(); pesquisa + a respeito [link]br.php.net[/link] Compartilhar este post Link para o post Compartilhar em outros sites
janick 1 Denunciar post Postado Agosto 1, 2008 Amigo, não obtive sucesso! Não estou conseguindo fazer isso, que parece tão simples! Compartilhar este post Link para o post Compartilhar em outros sites
David Ramires 1 Denunciar post Postado Agosto 6, 2008 estou terminando um exemplo para ajuda - lo, gostaria de saber se na sua tabela tem muitas coisas cadastradas ? Compartilhar este post Link para o post Compartilhar em outros sites
David Ramires 1 Denunciar post Postado Agosto 6, 2008 provavelmente você terá que fazer algumas adaptações para você, bom como eu não tenho o Mysql, fiz as tabelas no SQL SERVER 2000, mas nada impede que você olhe os campos e crie suas próprias tabelas bom vamos lá... essa tabela de parceiros é como se fosse os SITES ok CREATE TABLE [tb_parceiros] ( [id_parceiro] [int] IDENTITY (1, 1) NOT NULL , [nome] [varchar] (25) COLLATE SQL_Latin1_General_CP1_CI_AI NULL , CONSTRAINT [PK_tb_parceiros] PRIMARY KEY CLUSTERED ( [id_parceiro] ) ON [PRIMARY] ) ON [PRIMARY] GO onde ficarão os meus parceiros no seu caso os SITES tabela menus CREATE TABLE [menus] ( [id_menu] [int] NOT NULL , [nome_menu] [char] (30) COLLATE Latin1_General_CI_AS NULL , CONSTRAINT [PK_menus] PRIMARY KEY CLUSTERED ( [id_menu] ) ON [PRIMARY] ) ON [PRIMARY] GO Cadastro dos Menus, exemplo NOTICIAS. tabela submenus CREATE TABLE [submenus] ( [id_submenu] [int] IDENTITY (1, 1) NOT NULL , [id_menufk] [int] NULL , [nome_submenu] [varchar] (30) COLLATE Latin1_General_CI_AS NULL , [link] [varchar] (40) COLLATE Latin1_General_CI_AS NULL , CONSTRAINT [PK_submenus] PRIMARY KEY CLUSTERED ( [id_submenu] ) ON [PRIMARY] , CONSTRAINT [FK_submenus_menus] FOREIGN KEY ( [id_menufk] ) REFERENCES [menus] ( [id_menu] ) ) ON [PRIMARY] GO Cadastro dos submenus, exemplo, Adicionar Noticias Tabela ctrl_irAcessMenu CREATE TABLE [ctrl_DirAcessMenu] ( [id_acessmenu] [int] IDENTITY (1, 1) NOT NULL , [id_parceiro_fk] [int] NULL , [id_menufk] [int] NULL , CONSTRAINT [PK_ctrl_DirAcessModulos] PRIMARY KEY CLUSTERED ( [id_acessmenu] ) ON [PRIMARY] , CONSTRAINT [FK_ctrl_DirAcessMenu_menus] FOREIGN KEY ( [id_menufk] ) REFERENCES [menus] ( [id_menu] ), CONSTRAINT [FK_ctrl_DirAcessMenu_tb_parceiros] FOREIGN KEY ( [id_parceiro_fk] ) REFERENCES [tb_parceiros] ( [id_parceiro] ) ) ON [PRIMARY] GO dar permissão aos Menus tabela ctrl_DirAcessSubmenu CREATE TABLE [ctrl_DirAcessSubmenu] ( [id_AcessSubmenu] [int] IDENTITY (1, 1) NOT NULL , [id_parceiro_fk] [int] NOT NULL , [id_submenu_fk] [int] NULL , CONSTRAINT [PK_ctrl_DirAcessSubmenu] PRIMARY KEY CLUSTERED ( [id_AcessSubmenu] ) ON [PRIMARY] , CONSTRAINT [FK_ctrl_DirAcessSubmenu_submenus] FOREIGN KEY ( [id_submenu_fk] ) REFERENCES [submenus] ( [id_submenu] ), CONSTRAINT [FK_ctrl_DirAcessSubmenu_tb_parceiros] FOREIGN KEY ( [id_parceiro_fk] ) REFERENCES [tb_parceiros] ( [id_parceiro] ) ) ON [PRIMARY] GO dar permissão aos Submenus bom após isso, faça alguns cadastros, acho que os nomes dos campos está fácil.. bom no php você vai fazer algo assim: <?php $conexao = mssql_connect('localhost', 'sa', ''); mssql_select_db('menus', $conexao); $idparceiro = 2; //setando o id do parceiro $query1 = " SELECT NOME_MENU, ID_MENU FROM CTRL_DIRACESSMENU INNER JOIN MENUS ON (ID_MENU = ID_MENUFK) WHERE ID_PARCEIRO_FK = '".$idparceiro."'"; $resutsquery1 = mssql_query($query1); while($linhaQuery1 = mssql_fetch_array($resutsquery1)){ echo '<li>'.$linhaQuery1['NOME_MENU'].'</li>'; $query2 = " SELECT NOME_SUBMENU, LINK FROM CTRL_DIRACESSSUBMENU INNER JOIN SUBMENUS ON (ID_SUBMENU_FK = ID_SUBMENU AND ID_MENUFK = '".$linhaQuery1['ID_MENU']."') WHERE ID_PARCEIRO_FK = '".$idparceiro."'"; $resutsquery2 = mssql_query($query2); while($linhaQuery2 = mssql_fetch_array($resutsquery2)){ echo "<ul><a href='".$linhaQuery2['LINK']."'>".$linhaQuery2['NOME_SUBMENU']."</a></ul>"; } } ?> OBS: lógico que você deve fazer suas validações, consistencias entre outras coisas isso fiz como base para você saber como começar okay.. tomara que ajude, e não esqueça de postar o que aconteceu, qualquer coisa posta novamente que eu ou o pessoal do fórum vai lhe ajudando.. desculpe a demora, estou sem tempo mesmo.. t+ Compartilhar este post Link para o post Compartilhar em outros sites
janick 1 Denunciar post Postado Agosto 7, 2008 Cara, muito obrigado mesmo pela atenção e pela ajuda! E o mais importante, consegui fazer! Dei uma olhada no seu exemplo e adaptei aqui com algumas coisas que pensei. Não sei se é a maneira correta, se não for e alguém tiver uma forma reduzida de fazer isso, é só falar. ESTRUTURA MYSQL Tabela Site id, acoes, link, status Tabela Acoes id, acao, item EXEMPLO Tabela Site 1, (1,2,4,10), meu-site, on Tabela Acoes 1, adicionar, noticia 2, editar, noticia 4, editar, galeria 10, excluir, noticia PHP // Se existir algo na array acoes $sqlA = mysql_query("SELECT * FROM sites, acoes WHERE (...) AND FIND_IN_SET(acoes.id, sites.acoes) GROUP by acoes.item"); while($a = mysql_fetch_array($sqlA)) { $acoes .= "<li class=\"titulo\">".$a['item']."</li>"; $sqlB = mysql_query("SELECT * FROM sites, acoes WHERE (...) AND acoes.item = '".$a['item']."' AND FIND_IN_SET(acoes.id, sites.acoes)"); while($b = mysql_fetch_array($sqlB)) { $acoes .= "<li>".$b['acao']."</li>"; } } Valeu, abraço :) Compartilhar este post Link para o post Compartilhar em outros sites
David Ramires 1 Denunciar post Postado Agosto 7, 2008 Legal que tenha funcionado, vou olhar que voçê postou, mas não agora, inicio e final de mês fica 127% ocupado abs Compartilhar este post Link para o post Compartilhar em outros sites