Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, estou com um problema e preciso de uma luz!
Bom, vou tentar explicar o que se passa:
É o seguinte, tenho uma página cuja função é gerenciar as permissões de classes de usuário.
Nesta tabela são listadas as telas e subtelas do sistema e através de checkbox eu permito(marco o checkbox) e bloqueio(deixo o checkbox desmarcado) as permissões das telas e subtelas.
Para as telas tudo está funcionando, o problema é as subtelas.
É que eu listo através de um while as subtelas logo abaixo das telas, assim fica mais organizado. Exemplo:
-----------------------------------------
Tela 1 . . . . . Tela2 . . . . . Tela3
Subtela 1.1 . . Subtela 2.1 . . Subtela3.1
Subtela 1.2 . . Subtela 2.2 . . Subtela3.2
-----------------------------------------
Vou tentar explicar o que eu faço:
SELECT nas telas do sistema
while(tiver telas){
[checkbox]Nome da tela
SELECT das subtelas da tela --> este select eu preciso usar depois
while(tiver subtelas da tela){
[checbox]Nome da subtela
}
}
O problema está justamente com este select que eu destaquei acima, ele está dentro de um while, mas eu preciso chamálo fora depois.
Como posso fazer, visto que ele depende dos dados que serão passados via POST??
Segue abaixo o código desta minha página:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="../css/layout.css"/>
</head>
<body>
<?php
header("Content-Type: text/html; charset=ISO-8859-1", true);
// conexão DB
include ("../conexaobd.php");
// Verifica se o formulário foi enviado opções: 1 - inserir, 2 - alterar, 3 - eliminar
$opc = (isset($_POST['opc'])) ? $_POST['opc'] : 0;
$arr_status = (isset($_POST['statusTela'])) ? $_POST['statusTela'] : array();
$codigo_classe=$_POST["codclasse"];
$sql = "SELECT telas.descricao, telas.codtela, permissoes_telas.status ";
$sql.= "FROM telas ";
$sql.= "INNER JOIN permissoes_telas ON telas.codtela = permissoes_telas.codtela ";
$sql.= "WHERE (telas.tipo='Loja' OR telas.tipo='Ambos') AND (telas.status=1 AND permissoes_telas.codclasse=$codigo_classe) ";
$sql.= "GROUP BY telas.descricao ORDER BY telas.descricao";
// Verifica se usuário escolheu alguma checkbox.
if ($opc == 2)
{
$q_permissoes_telas = mysql_query($sql);
while ($v_permissoes_telas = mysql_fetch_assoc($q_permissoes_telas)){
// verifica se a checkbox está marcado
//array_key_exists() retorna TRUE se a chave 'key' existe no array, array_key_exists(o que vai pesquisar, aonde vai pesquisar)
$status = (array_key_exists($v_permissoes_telas['codtela'], $arr_status) === false) ? 0 : 1;
$s_permissoes_telas = "UPDATE permissoes_telas ";
$s_permissoes_telas.= "SET status=$status ";
$s_permissoes_telas.= "WHERE codclasse=$codigo_classe AND codtela=".$v_permissoes_telas['codtela']."";
mysql_query($s_permissoes_telas);
}
//aqui eu chamo o select
$q_permissoes_subtelas = mysql_query($sql_sub) or die (mysql_error());
while ($v_permissoes_subtelas = mysql_fetch_assoc($q_permissoes_subtelas)){
$status = (array_key_exists($v_permissoes_subtelas['codsubtela'], $arr_status) === false) ? 0 : 1;
$s_permissoes_subtelas = "UPDATE permissoes_subtelas ";
$s_permissoes_subtelas.= "SET status=$status ";
$s_permissoes_subtelas.= "WHERE (codclasse=$codigo_classe AND codsubtela=".$v_permissoes_subtelas['codsubela'].")";
mysql_query($s_permissoes_subtelas);
}
}
// query telas
$q_telas = mysql_query($sql);
// números de linhas telas
$linhas_telas = mysql_num_rows($q_telas);
if ($linhas_telas < 1)print "Não há telas ativas.";
}echo "<form name='frm_telas' method='POST' action='".$_SERVER['PHP_SELF']."'>";
echo "<input type='hidden' name='opc' value='2'>";
echo "<input type='hidden' name='codclasse' value='".$codigo_classe."'>";
echo"<table class='tabela'>
<tr>";$checked = ($v_telas['status'] == 1) ? ' checked' : '';
echo "<td class='codtela' valign='top'><input type='checkbox' name='statusTela[".$v_telas['codtela']."] value='ok' ".$checked.">".$v_telas['descricao']."";
//aqui esta o select que preciso chamar
$sql_sub = "SELECT subtelas.descricao, subtelas.codsubtela, permissoes_subtelas.status ";
$sql_sub.= "FROM subtelas ";
$sql_sub.= "INNER JOIN permissoes_subtelas ON subtelas.codsubtela = permissoes_subtelas.codsubtela ";
$sql_sub.= "WHERE (subtelas.status=1 AND permissoes_subtelas.codclasse=".$codigo_classe." AND subtelas.cod_telapai=".$v_telas['codtela'].") ";
$sql_sub.= "ORDER BY subtelas.descricao";
$q_subtelas = mysql_query($sql_sub);
while ($v_subtelas = mysql_fetch_array($q_subtelas)){
$checkedsub = ($v_subtelas['status'] == 1) ? ' checked' : '';
echo "<table class='tabela'>
<tr>
<td valign='top'>
<input type='checkbox' name='statusSubTela[".$v_subtelas['codsubtela']."] value='ok' ".$checkedsub.">".$v_subtelas['descricao']."
</td>
</tr>
</table>";
}
}
echo"</td></tr></table>";
echo "<input type='submit' value='Gravar'>";
echo "</form>";
}
?>
</body>
</html>Carregando comentários...