Ir para conteúdo

POWERED BY:

Arquivado

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

allex_carvalho

Receber array checkbox

Recommended Posts

Boa noite pessoal,

 

Preciso receber valores de alguns checkbox. Essas combos virão de registros do banco, assim, poderei ter N's valores. Bom... Vejam a estrutura do html:

 

<form action="" method="post">
    <input type="checkbox" name="permissoes[][a]" value="1" />
    <input type="checkbox" name="permissoes[][b]" value="2" />
    <input type="checkbox" name="permissoes[][c]" value="3" />
    <input type="checkbox" name="permissoes[][d]" value="4" />
    <input type="submit" />
</form>

Preciso receber os valores "a, b, c, d..." em uma variável e "1, 2, 3, 4..." em outra. Como proceder?

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Buenas,

 

Não poderia utilizar o mesmo código porém com vetor simples, ex.:

 

<form action="" method="post">
    <input type="checkbox" name="permissoes[a]" value="1" />
    <input type="checkbox" name="permissoes[b]" value="2" />
    <input type="checkbox" name="permissoes[c]" value="3" />
    <input type="checkbox" name="permissoes[d]" value="4" />
    <input type="submit" />
</form>

 

Depois utiliza um foreach pra resgatar os valores, ex.:

foreach ($_POST['permissoes'] as $key => $value) {
    echo '<br />' . $key . ' => ' . $value;
}

Key = Letra

Value = Valor do checkbox

 

Veja aí você faz o que quiser com esses valores, se quer passar pra uma variável é só por dentro do laço!

 

Espero ter ajudado. valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... Em partes funcionou, só que a minha necessidade é agrupar os values no que estiver com array igual, por exemplo:

 

<input type="checkbox" name="permissoes[1]" value="v" />
<input type="checkbox" name="permissoes[1]" value="i" />
<input type="checkbox" name="permissoes[2]" value="u" />
<input type="checkbox" name="permissoes[2]" value="d" />

$ids = '';
$teste = '';

foreach ($_POST['permissoes'] as $key => $value) {
    $ids .= $key . '<br />';
    $teste .= $value . '<br />';
}

echo '<pre>';
print_r($ids);
echo '</pre>';

echo '<br />';

echo '<pre>';
print_r($teste);
echo '</pre>';

 

A saída está assim:

 

12
id

 

Está pegando só o último valor.

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite pessoal,

 

Vou mostrar abaixo uma linha aqui como se fosse um módulo Agenda, por exemplo:

 

<input type="checkbox" name="permissoes[1][v]" value="1" /> // Visualizar
<input type="checkbox" name="permissoes[1][i]" value="1" /> // Inserir
<input type="checkbox" name="permissoes[1][u]" value="1" /> // Atualizar
<input type="checkbox" name="permissoes[1][d]" value="1" /> // Deletar

 

Tenho a seguinte tabela:

 

permissoes
-- id
-- id_usuario
-- id_modulo

-- visualizar
-- inserir
-- editar
--deletar

 

Preciso pegar o id do módulo (primeiro array) e verificar se o combo foi selecionado. Se sim, grava 1 no banco, senão, 2. Só que não estou conseguindo gravar estes valores. Pelo código abaixo (marcando todos combos):

 

$id_modulo = '';
$permissao = '';
foreach ($_POST['permissoes'] as $key => $value) {
    foreach ($value as $novo_valor) {
        $id_modulo .= $novo_valor;
    }
    $permissao .= $key;
}
echo $id_modulo . ' - ' . $permissao . PHP_EOL;

 

Tenho este retorno:

 

1111 - 1

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, não vou te mostrar como salvar no banco, porque isso é mais simples.

Segue um exemplo para saber o que está marcado/não marcado.

 

Estude o exemplo e aplique às suas necessidades.

 

 

 

<?php

// padrao de permissionamento
// -1 => nao selecionado
// 1 => selecionado
$padrao = array(
	'v' => -1,
	'i' => -1,
	'u' => -1,
	'd' => -1,
);

// imagine que estes valores vieram do banco
$modulos = array(
	array('codmodulo' => 1, 'nome' => 'Modulo 1'),
	array('codmodulo' => 2, 'nome' => 'Modulo 2'),
	array('codmodulo' => 3, 'nome' => 'Modulo 3'),
	array('codmodulo' => 4, 'nome' => 'Modulo 4'),
	array('codmodulo' => 5, 'nome' => 'Modulo 5'),
);

// se esta enviando o formulario
if($_SERVER['REQUEST_METHOD'] == 'POST') {

	// para cada modulo
	foreach($modulos as $index => $modulo) {

		// o padrao eh tudo nao selecionado
		$permissoes = $padrao;

		// mas se encontramos no post
		if(isset($_POST['permissoes'][$modulo['codmodulo']])) {

			// colocamos as permissões selecionadas
			$permissoes = array_merge(
				$permissoes,
				$_POST['permissoes'][$modulo['codmodulo']]
			);
		}

		// aqui, podemos salvar no banco
		// mas vou colocar no modulo para dar um print_r depois
		$modulos[$index]['permissoes'] = $permissoes;
	}
}

?>
<html>
	<head>
		<title>Teste</title>
		<meta charset="utf-8"/>
	</head>
	<body>
		<form method="post" action="teste.php">
			<?php

			// se esta enviando o formulario
			if($_SERVER['REQUEST_METHOD'] == 'POST') {

				// exibimos o resultado
				// veja como esta tudo em forma hierarquica
				// so percorrer o array e salvar
				echo '<pre style="display: block; max-height: 150; overflow: auto; border: 1px solid black; width: 500px">', print_r($modulos,true),'</pre>';
			}

			foreach($modulos as $item) {
				echo <<<HTML
				<fieldset>
					<legend>{$item['nome']}</legend>
					<label><input type="checkbox" name="permissoes[{$item['codmodulo']}][v]" value="1" />  Visualizar</label>
					<label><input type="checkbox" name="permissoes[{$item['codmodulo']}][i]" value="1" />  Inserir</label>
					<label><input type="checkbox" name="permissoes[{$item['codmodulo']}][u]" value="1" />  Atualizar</label>
					<label><input type="checkbox" name="permissoes[{$item['codmodulo']}][d]" value="1" />  Deletar</label>
				</fieldset>
HTML;
			}

			?>
			<button type="submit">Salvar Alterações</button>
		</form>
	</body>
</html>

 

 

@braços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia hufersil,

 

Consegui resolver assim:

 

foreach ($_POST['permissoes'] as $id_perm => $perm_arr) {
            $itens_permissoes = array(
                "`id_usuario`" => $id,
                "`id_modulo`" => $id_perm,
                "`visualizar`" => isset( $perm_arr['v'] ) ? 1 : 0,
                "`inserir`" => isset( $perm_arr['i'] ) ? 1 : 0,
                "`editar`" => isset( $perm_arr['u'] ) ? 1 : 0,
                "`deletar`" => isset( $perm_arr['d'] ) ? 1 : 0
            );

 

Essa $itens_permissoes é porque tenho uma função para gravar no banco.

 

Mais valeu :)

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.