Bom dia galera.
Estou criando regras de acesso para um sistema e fiquei em dúvida na hr de fazer uma tela...
eu quero q na tela liste todos os usuarios do banco e todos os projetos que existem no sistema.
um usuário pode ter acesso a vários sistemas, então através de alguns checkbox eu seleciono quais projetos o mesmo vai ter acesso..
o problema é que nao estou conseguindo relacionar o id do usuário com suas checkbox.. eles se mistura e dai nao consigo separar os checkbox selecionados para fazer o update na tabela.
abaixo os scripts..
index.php
[codebox]<?php
include ("ConectaBanco.class.php");
$conectar = new ConectaBanco();
$sql = "SELECT * FROM PRCONTROLE";
$query = mysql_query($sql);
?>
<html>
<head>
<title>Testes</title>
</head>
<body>
<h3>Controle de acesso</h3>
<form name="formulario" method="post" action="salvar.php">
<table border="1px" width="600px">
<tr>
<td>Usuário</td>
<td>Projeto 1</td>
<td>Projeto 2</td>
<td>Projeto 3</td>
<td>Projeto 4</td>
<td>Projeto 5</td>
</tr>
<?php
while($row = mysql_fetch_array($query))
{
$id = $row["CD_CONTROLE"];
$nome = $row["NM_CONTATO"];
$acesso = $row["DS_ACESSO"];
echo
"
<tr>
<td>$nome<input type='hidden' name='id[]' value='$id'></td>
";
for($i=1; $i <= 5; $i++)
{
if(stristr($acesso, "$i"))
{
echo
"
<td><input type='checkbox' name='check[]' value='$i' checked> </td>
";
}
else
{
echo
"
<td><input type='checkbox' name='check[]' value='$i'> </td>
";
}
}
echo
"
</tr>
";
}
?>
</table>
<br>
<input type="submit" value="Salvar">
</form>
</body>
</html>[/codebox]
ConectaBanco.class.php
[codebox]<?php
/**
* @author Junior
* @copyright 2008
* classe para conectar banco
*/
class ConectaBanco
{
var $host = "localhost";
var $user = "root";
var $pass = "senha";
var $base = "controle";
var $link = "";
function ConectaBanco()
{
$this -> Conectar();
}
function Conectar()
{
$this -> link = mysql_connect($this -> host, $this ->user, $this ->pass);
if (!$this ->link)
{
die ("Erro ao conectar.");
}
elseif (!mysql_select_db($this ->base, $this ->link))
{
die ("Erro ao selecionar banco.");
}
}
function Desconectar()
{
return mysql_close($this -> link);
}
}
?>
[/codebox]
salvar.php
[codebox]<?php
if(isset($_POST["check"]))
{
foreach($_POST["check"] as $check)
{
$resultado .= $check;
if($check == end($_POST["check"]))
{
}
else
{
$resultado .= ";";
}
}
echo $resultado;
}
?>
[/codebox]
criação da tabela
[codebox]-- MySQL Administrator dump 1.4
--
-- ------------------------------------------------------
-- Server version 5.0.51a-community-nt
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
--
-- Create schema controle
--
CREATE DATABASE IF NOT EXISTS controle;
USE controle;
--
-- Definition of table `prcontrole`
--
DROP TABLE IF EXISTS `prcontrole`;
CREATE TABLE `prcontrole` (
`CD_CONTROLE` int(10) unsigned NOT NULL auto_increment,
`NM_CONTATO` varchar(45) NOT NULL,
`DS_ACESSO` varchar(45) NOT NULL,
PRIMARY KEY (`CD_CONTROLE`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
--
-- Dumping data for table `prcontrole`
--
/*!40000 ALTER TABLE `prcontrole` DISABLE KEYS */;
INSERT INTO `prcontrole` (`CD_CONTROLE`,`NM_CONTATO`,`DS_ACESSO`) VALUES
(1,'junior','1;2;3'),
(2,'contato','2;5'),
(3,'cocota','1;3');
/*!40000 ALTER TABLE `prcontrole` ENABLE KEYS */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
[/codebox]
na tabela está a descrição do acsso.. onde cada numero significa um projeto..
gravarei esses dados na sessão do usuário e então na página de cada projeto uma verificação com stristr para procurar a string numero do projeto.
notem que com o ltrim consigo distinguir o 1º id do 2º... mas este fica junto com o 3º..
se alguém tiver algum idéia de como resolver isso ou entao algum material bom para leitura ficarei grato.
Att
Junior

Controle De Acesso Com Checkbox
Started By Cassapava, 06/06/2008, 11:15
Nenhuma resposta neste tópico
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)