srcunha 0 Denunciar post Postado Agosto 5, 2013 Amigos, e um erro simples que estou passando, tenho essas funções e quero chama-las em um formulário de cadastro php;essa função gera um arvore de permissões para usuários estou usando <?=arvoreMenuPermissoes()?> dentro de uma pagina de cadastro, porem ele apenas exibe a arvore e não consegue salvar os dados no banco, se vcs observarem essa função esta bem detalhada quando a exibição, cadastro e edição e bloqueio. podem nao sei como exibi-las, alguém pode me ajudar? functions.php #Listando o menu em forma de árvore para as permissões de usuários: function arvoreMenuPermissoes($iduser = ''){ #Buscando os menus: $menu = ''; #primeiro os menus principais: $M1 = db_consulta('SELECT * FROM sis_menu WHERE menu_pai = 0'); #lista os menus pai: while($L1 = db_lista($M1)){ $menu .= "\n\n".'<div class="menu_principal">'."\n\n"; $checked = ''; if($iduser > 0){ #Verificando se está checado ou não, : $SQL = 'SELECT fk_menu FROM sis_rel_menu_usuarios WHERE fk_menu = '.$L1['menu_id'].' AND fk_usuario = '.$iduser; if(db_linhas(db_consulta($SQL)) > 0){ $checked = ' checked="checked" '; }else $checked = ''; }//fim if iduser > 0 $menu .= '<input type="checkbox" name="menu_ver[]" value="'.$L1['menu_id'].'" '.$checked.' ><strong style="font-size:12px; color:#'.$_SESSION['Tema']['tema_cor_links'].'; letter-spacing:1px;">'.strtoupper($L1['menu_nome']).'</strong><br>'."\n"; #pega os submenus: $busca = submenusArvore($L1['menu_id'], $iduser); $menu .= $busca; $menu .= "\n\n".'</div>'."\n\n"; }//fim while $menu .= '<div class="limpar"></div>'; return $menu; }//fim funcao function submenusArvore($id, $iduser){ $sub = ''; #Pega o menu de acordo com o id: $M2 = db_consulta('SELECT A.* FROM sis_menu as A WHERE A.menu_pai = '.$id.'');//AND EXISTS(SELECT b.menu_id FROM sis_menu as b WHERE b.menu_pai = A.menu_id Limit 1) if(db_linhas($M2) > 0){ while($L2 = db_lista($M2)) { $checked = ''; if($iduser > 0){ #Verificando se está checado ou não, : $SQL = 'SELECT fk_menu FROM sis_rel_menu_usuarios WHERE fk_menu = '.$L2['menu_id'].' AND fk_usuario = '.$iduser; if(db_linhas(db_consulta($SQL)) > 0){ $checked = ' checked="checked" '; }else $checked = ''; }//fim if iduser > 0 $sub .= ' ---------------------------------------- <br>'; $sub .= ' ....<input type="checkbox" name="menu_ver[]" value="'.$L2['menu_id'].'" '.$checked.' ><strong>'.$L2['menu_nome'].'</strong><br>'."\n"; #Nesse menu, bloquear as seguintes opções: $sub .= bloquearOpcoes($L2); $M3 = db_consulta('SELECT * FROM sis_menu WHERE menu_pai = '.$L2['menu_id']); if(db_linhas($M3) > 0){ while($L3 = db_lista($M3)){ $checked = ''; if($iduser > 0){ #Verificando se está checado ou não, : $SQL = 'SELECT fk_menu FROM sis_rel_menu_usuarios WHERE fk_menu = '.$L3['menu_id'].' AND fk_usuario = '.$iduser; if(db_linhas(db_consulta($SQL)) > 0){ $checked = ' checked="checked" '; }else $checked = ''; }//fim if iduser > 0 $sub .= ' :....<input type="checkbox" name="menu_ver[]" value="'.$L3['menu_id'].'" '.$checked .' ><strong>'.$L3['menu_nome'].'</strong><br>'."\n"; #Nesse menu, bloquear as seguintes opções: $sub .= bloquearOpcoes($L3); $sub .= submenusArvore($L3['menu_id'], $iduser); }//fim while }//fim if }//fim while return $sub; }else return ''; }//fim funcao function bloquearOpcoes($menu){ $sub = ''; #Botoes a bloquear if($menu['menu_destino'] != ''){ #Verificando se é arquivo de consulta ou de adicionar: $tipo = explode('/',$menu['menu_destino']); switch($tipo[1]){ case 'adicionar'; $sub .= ' '."\n"; $sub .= 'Nesse menu, <span style=" color:#FF0000;">bloquear</span> as seguintes ações: <br>'."\n"; #Verificando se vai ficar checado: if($_GET['ID'] > 0) if(estaBloqueado('consultar',$_GET['ID'],$menu['menu_destino'])) $sel=' checked="checked" '; else $sel = ''; $sub .= ' '."\n"; $sub .= '<input type="checkbox" name="bloq_menu'.$menu['menu_id'].'[]" value="consultar" '.$sel.' >Consultar registros<br>'."\n"; break; case 'consultar': $sub .= ' '."\n"; $sub .= 'Nesse menu, <span style=" color:#FF0000;">bloquear</span> as seguintes ações: <br>'."\n"; #Verificando se vai ficar checado: if($_GET['ID'] > 0) if(estaBloqueado('adicionar',$_GET['ID'],$menu['menu_destino'])) $sel=' checked="checked" '; else $sel = ''; $sub .= ' '."\n"; $sub .= '<input type="checkbox" name="bloq_menu'.$menu['menu_id'].'[]" value="adicionar" '.$sel.' >Adicionar registro<br>'."\n"; #Verificando se vai ficar checado: if(estaBloqueado('visualizar',$_GET['ID'],$menu['menu_destino'])) $sel=' checked="checked" '; else $sel = ''; $sub .= ' '."\n"; $sub .= '<input type="checkbox" name="bloq_menu'.$menu['menu_id'].'[]" value="visualizar" '.$sel.' >Visualizar registro<br>'."\n"; #Verificando se vai ficar checado: if($_GET['ID'] > 0) if(estaBloqueado('editar',$_GET['ID'],$menu['menu_destino'])) $sel=' checked="checked" '; else $sel = ''; $sub .= ' '."\n"; $sub .= '<input type="checkbox" name="bloq_menu'.$menu['menu_id'].'[]" value="editar" '.$sel.' >Alterar Registro<br>'."\n"; #Verificando se vai ficar checado: if($_GET['ID'] > 0) if(estaBloqueado('status',$_GET['ID'],$menu['menu_destino'])) $sel=' checked="checked" '; else $sel = ''; $sub .= ' '."\n"; $sub .= '<input type="checkbox" name="bloq_menu'.$menu['menu_id'].'[]" value="status" '.$sel.' >Alterar Status(flags)<br>'."\n"; #Verificando se vai ficar checado: if($_GET['ID'] > 0) if(estaBloqueado('excluir',$_GET['ID'],$menu['menu_destino'])) $sel=' checked="checked" '; else $sel = ''; $sub .= ' '."\n"; $sub .= '<input type="checkbox" name="bloq_menu'.$menu['menu_id'].'[]" value="excluir" '.$sel.'>Excluir Registro<br>'."\n"; break; case 'historico': $sub .= ' '."\n"; $sub .= 'Nesse menu, <span style=" color:#FF0000;">bloquear</span> as seguintes ações: <br>'."\n"; #Verificando se vai ficar checado: if($_GET['ID'] > 0) if(estaBloqueado('restaurar',$_GET['ID'],$menu['menu_destino'])) $sel=' checked="checked" '; else $sel = ''; $sub .= ' '."\n"; $sub .= '<input type="checkbox" name="bloq_menu'.$menu['menu_id'].'[]" value="restaurar" '.$sel.'>Restaurar registros<br>'."\n"; #Verificando se vai ficar checado: if($_GET['ID'] > 0) if(estaBloqueado('excluir',$_GET['ID'],$menu['menu_destino'])) $sel=' checked="checked" '; else $sel = ''; $sub .= ' '."\n"; $sub .= '<input type="checkbox" name="bloq_menu'.$menu['menu_id'].'[]" value="excluir" '.$sel.' >Excluir registro<br>'."\n"; //Se não for um menu padrão: default: $sub .=''; } $sub .= '<br>'; } return $sub; } Quem puder me ajudar agradeceria muito! Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Fiuza 3 Denunciar post Postado Agosto 5, 2013 que isso manolo, é muito código. Compartilhar este post Link para o post Compartilhar em outros sites
srcunha 0 Denunciar post Postado Agosto 5, 2013 A função esta pronta, so quero chama-lá em uma pagina. estou usando <?=arvoreMenuPermissoes()?> mais apenas exibe e nao salva. Compartilhar este post Link para o post Compartilhar em outros sites
Raul Silva 41 Denunciar post Postado Agosto 5, 2013 Onde está a parte que salva? Só está mostrando as opções editar/excluir...mas não encontrei onde realmente está executando essas ações. Compartilhar este post Link para o post Compartilhar em outros sites
srcunha 0 Denunciar post Postado Agosto 5, 2013 na parte bloquearOpcoes não seria salvar e sim editar, gostaria de chamar essa função para editar com <?=arvoreMenuPermissoes()?> apenas exibe e nao edita Compartilhar este post Link para o post Compartilhar em outros sites
Raul Silva 41 Denunciar post Postado Agosto 5, 2013 na parte bloquearOpcoes não seria salvar e sim editar, gostaria de chamar essa função para editar com <?=arvoreMenuPermissoes()?> apenas exibe e nao edita Com esse código ele realmente só mostra, mas não edita. Você teria que criar a lógica para editar. Compartilhar este post Link para o post Compartilhar em outros sites
srcunha 0 Denunciar post Postado Agosto 5, 2013 esse codigo da função esta correto, por um descuido perdi a parte de codigo que salvava, editava, mais quando a função esta ok, so nao sei como exibo e edito isso... teria alguma ideia amigo? essa parte função "submenusArvore" e a que salva Compartilhar este post Link para o post Compartilhar em outros sites
Raul Silva 41 Denunciar post Postado Agosto 5, 2013 é só chamar a função, mas se na configuração do php a diretiva short_open_tags estiver desabilitada você não vai conseguir utilizar <?=, somente <?php echo, então no caso: <?php echo arvoreMenuPermissoes();?> Compartilhar este post Link para o post Compartilhar em outros sites
srcunha 0 Denunciar post Postado Agosto 5, 2013 Ja fiz isso Raul Silva ele continua dando erro o erro e o seguinte:Erro!# 1054 - Unknown column 'menu_ver' in 'field list'update sis_usuarios set usuario_id = '2', usuario_ativo = '1', usuario_login = 'admin', usuario_senha = 'eabadd695c4422ec667de8797d831e6e', usuario_todas_permissoes = '0', menu_ver = 'Array' where usuario_id=2 Compartilhar este post Link para o post Compartilhar em outros sites
Raul Silva 41 Denunciar post Postado Agosto 5, 2013 Hum...finalmente um erro, assim fica mais fácil O que ele está falando é que não existe a coluna "menu_ver" na query mencionada. Essa coluna existe na tabela "sis_usuarios" ? Compartilhar este post Link para o post Compartilhar em outros sites
srcunha 0 Denunciar post Postado Agosto 5, 2013 Acabei de colocar essa coluna na tabela sis_usuarios porem ele nao gera mais erro, porem nao salva nada nessa coluna. coloquei ela como campo INT(11) Ele funcionava com a tabela dessa forma, pq os dados sao salvos na tabela sis_rel_menu_usuarios que mostra se o usuario e relacionado. Compartilhar este post Link para o post Compartilhar em outros sites
Raul Silva 41 Denunciar post Postado Agosto 5, 2013 Bom, tente buscar o que está tentando gravar aqui: menu_ver = 'Array' Acho que não deveria estar escrito Array ai, mas sim um valor. dica: de um var_dump() nessa variavel que esta recebendo o valor e veja o que está nela, talvez só seja preciso colocar um $variavel['chave'] Compartilhar este post Link para o post Compartilhar em outros sites
srcunha 0 Denunciar post Postado Agosto 5, 2013 Mais esse menu_ver esta na função, veja em submenusArvore <input type="checkbox" name="menu_ver[]" value="'.$L2['menu_id'].'" '.$checked.' > Compartilhar este post Link para o post Compartilhar em outros sites
Raul Silva 41 Denunciar post Postado Agosto 5, 2013 Mas onde ela está no PHP? Poste a função inteira. Compartilhar este post Link para o post Compartilhar em outros sites
srcunha 0 Denunciar post Postado Agosto 5, 2013 ta nessa função que postei acima. No php nao tem nada tem so aquela função <?php echo arvoreMenuPermissoes();?> que exibe Compartilhar este post Link para o post Compartilhar em outros sites
Raul Silva 41 Denunciar post Postado Agosto 5, 2013 Fica dificil de ajudar sem ver o código na integra. e tem muita coisa no php sim. Compartilhar este post Link para o post Compartilhar em outros sites
srcunha 0 Denunciar post Postado Agosto 6, 2013 Como posto o codigo na integra pra você? Compartilhar este post Link para o post Compartilhar em outros sites