Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

srcunha

Chamar Função em PHP

Recommended Posts

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

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

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

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

é 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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.