Jump to content


Photo

Controle De Acesso Com Checkbox


  • Faça o login para participar
Nenhuma resposta neste tópico

#1 Cassapava

Cassapava

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Não informado

Posted 06/06/2008, 11:15

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




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq