
Sistema Para Várias Empresas
#1
Posted 17/11/2011, 07:19
Estou em um dilema cruel e espero que alguém possa me ajudar a sair dessa... rsrsrs.
Criei um sistema que ficará no meu servidor e quero cadastrar nesse sistema algumas empresas, porém, cada empresa terá suas informações preservadas, como por exemplo:
clientes, fornecedores, funcionários, relatórios e tudo mais... ou seja, nenhuma empresa conseguirá ver nada relativo a outra empresa.
Não sei como fazer isso. Se crio um banco de dados para cada uma;
Como fazer uma unica index.php para login no caso de vários bancos;
Como atualizar o sistema e todos receberem essa atualização;
Alguém pode me ajudar?
Abraço a todos!
#2
Posted 17/11/2011, 10:21
Se você tem não tem muita experiência é melhor não começar a trabalhar assim, no futuro este projeto vai dar dor de cabeça...
Você precisaria criar uma base de dados para suportar múltiplos usuários:
empresas
--------
id
nome
usuarios
-------
id
empresa_id
nome
dados
-------
empresa_id
dados1
dados2
arquivos
-------
id
empresa_id
arquivo
Na hora de fazer login você pega o ID de usuário e sempre que houver consulta, você limita os registros com este empresa_id. Basicamente é isto mas existem outras questões a considerar...
Falopa!
#3
Posted 18/11/2011, 07:51
Mas nesse caso, no início do código da página onde vai listar os dados de uma determinada empresa, colocaria assim? Ou acrescenta mais alguma coisa para buscar somente os dados inerentes àquela determinada empresa?
<?php session_start(); if (!isset($_SESSION["login"]) || !isset($_SESSION["senha"]) || ($_SESSION["nivel"] <> 2)) { header("location: ../../../formulario.php"); exit;} $con = mysql_pconnect('localhost','user','senha'); mysql_select_db('nome_bd'); $num_por_pagina = 20; if (!$pagina) { $pagina = 1; } $primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina; $consulta = "SELECT id, datafinal, cliente, descricao, posicao, tecnico FROM ordem ORDER BY id DESC LIMIT $primeiro_registro, $num_por_pagina"; $res = mysql_query($consulta,$con); ?>
#4
Posted 18/11/2011, 09:51
Neste caso ai você está listando todos os registros, não filtrou nada. Você nem mesmo filtrou uma empresa.
Falopa!
#5
Posted 18/11/2011, 10:33

<?php session_start(); if (!isset($_SESSION["login"]) || !isset($_SESSION["senha"]) || ($_SESSION["nivel"] <> 2)) { header("location: ../../../formulario.php"); exit;} $con = mysql_pconnect('localhost','user','senha'); mysql_select_db('nome_bd'); $num_por_pagina = 20; if (!$pagina) { $pagina = 1; } $primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina; $varid = $_SESSION["id"]; $consulta = "SELECT * FROM ordem where empresa_id = ('$varid') ORDER BY id DESC LIMIT $primeiro_registro, $num_por_pagina"; $res = mysql_query($consulta,$con); ?>
#6
Posted 18/11/2011, 11:46
Desta forma você está consultando todos os registros onde o campo empresa_id seja igual a $varid, sendo assim, "quero apenas os registros da empresa X". É importante lembrar que nesta consulta você está resgatando apenas dados da tabela ordem...
Você poderia por exemplo buscar todos os dados da empresa numa única consulta (não é o caso deste tópico) como neste exemplo (que não leva seu problema em consideração).
SELECT
Venda.id,
Venda.hora_venda,
Empresa.nome,
Funcionario.nome,
Funcionario.email,
Funcionario.id,
Produto.id,
Produto.nome,
Produto.preco,
Produto.estoque
FROM vendas AS Venda
LEFT JOIN empresas AS Empresa ON ( Venda.empresa_id = Empresa.id )
LEFT JOIN funcionarios AS Funcionario ON ( Venda.empresa_id = Funcionario.empresa_id )
LEFT JOIN produtos AS Produto ON ( Venda.empresa_id = Produto.empresa_id )
WHERE
Empresa.id = 354
ORDER
Venda.hora_venda ASC
Funcionario.nome ASC
LIMIT 300
Falopa!
Edição feita por: hostdesigner, 18/11/2011, 11:46.
#7
Posted 18/11/2011, 12:52

Edição feita por: rogeriodias, 18/11/2011, 12:53.
#8
Posted 18/11/2011, 12:57
Imaginando que 'funfou' não seja uma palavra mágica que 'faça as coisas funcionarem sozinhas'...
O que tem na tabela 'ordem'? (publique os registros ela aqui incluindo a estrutura dela)
Falopa!
#9
Posted 18/11/2011, 14:02
+------------------------------------------------------+
Estrutura da tabela 'ordem':
+------------------------------------------------------+
Coluna Tipo Nulo Padrão
id int(11) Não
empresa_id varchar(20) Sim NULL
posicao varchar(255) Não
cliente varchar(255) Não
solicitante varchar(255) Não
tecnico varchar(255) Não
alteracao varchar(255) Não
userid varchar(10) Sim NULL
descricao longtext Não
observacao longtext Não
atendimento varchar(100) Sim NULL
data1 varchar(10) Não
horaini1 int(2) Não 0
minini1 int(2) Não 0
horater1 int(2) Não 0
minter1 int(2) Não 0
quantidade1 varchar(10) Não
servico1 varchar(100) Não
data2 varchar(10) Não
horaini2 int(2) Não 0
minini2 int(2) Não 0
horater2 int(2) Não 0
minter2 int(2) Não 0
quantidade2 varchar(10) Não
servico2 varchar(100) Não
data3 varchar(10) Não
horaini3 int(2) Não 0
minini3 int(2) Não 0
horater3 int(2) Não 0
minter3 int(2) Não 0
quantidade3 varchar(10) Não
servico3 varchar(100) Não
data4 varchar(10) Não
horaini4 int(2) Não 0
minini4 int(2) Não 0
horater4 int(2) Não 0
minter4 int(2) Não 0
quantidade4 varchar(10) Não
servico4 varchar(100) Não
veiculo varchar(20) Não
placa varchar(20) Não
kminicial varchar(10) Não
kmfinal varchar(10) Não
kmtotal varchar(10) Não
datafinal varchar(10) Não
totalhora int(2) Não 0
totalmin int(2) Não 0
+------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------+
Registros:
+---------------------------------------------------------------------------------------------------------------------------------+
ID EMPRESA_ID POSIÇÃO CLIENTE SOLICITANTE TECNICO ALTERAÇÃO USERID DESCRIÇÃO
71 2 ABERTO Juliana Ramos Silva Naiara Ramos Aloísio Aloísio aloisio Viagem com para Betim/MG
+---------------------------------------------------------------------------------------------------------------------------------+
#10
Posted 18/11/2011, 15:20
Eu te recomendaria fazer um curso, principalmente de SQL/modelagem de dados...
Os campos 'dataX' int(2) 0 deveriam ser na verdade 'dataX' bool '0'
Agora me mostre como fica o link quando você vai para a página que mostra os dados, aquela que você tem este código http://forum.wmonlin...ost__p__1014921
Falopa!
#11
Posted 19/11/2011, 14:40
ATENDIMENTO CLIENTES EMPRESAS ORDEM PLACA POSICAO USUARIOS VEICULOS id id id id id id id id empresa_id empresa_id nome empresa_id empresa_id empresa_id empresa_id empresa_id nome nomecliente endereco posicao nome nome nomeusuario nome endereco bairro cliente placa cor nomecompleto placa bairro telefone solicitante cargo telefone cidade tecnico sexo cidade cpf alteracao cpf cpf rg userid identidade rg cnpj descricao login cnpj ie observacao senha ie atendimento nivel
Nesse caso, como ficaria na pagina onde vou listar apenas os registros de uma empresa "X" da tabela ORDEM ?
Código da página listar.php
<?php session_start(); if (!isset($_SESSION["login"]) || !isset($_SESSION["senha"]) || ($_SESSION["nivel"] <> 2)) { header("location: ../../../formulario.php"); exit;} ?> <? $con = mysql_pconnect('localhost','usuario','senha'); mysql_select_db('bd'); $num_por_pagina = 20; if (!$pagina) { $pagina = 1; } $primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina; $consulta = "SELECT id, datafinal, cliente, descricao, posicao, tecnico FROM ordem ORDER BY id DESC LIMIT $primeiro_registro, $num_por_pagina"; $res = mysql_query($consulta,$con); ?> <td align="center"><div align="left"><? include "../../../top.php"; ?></div> <title>Consulta de OS</title> <p> </p></td> <table width="800" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <th align="left" scope="col"><span class="gridbold1">Consulta de Ordem de Serviço</span></th> </tr> <tr> <td> </td> </tr> </table> <table width="800" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000" class="bordasimples"> <tr> <td width="66" bgcolor="#4B87C2"><div align="left" class="tabelas"><strong> Número</strong></div></td> <td width="73" height="25" bgcolor="#4B87C2"><div align="left" class="tabelas"><strong> Abertura</strong></div></td> <td width="191" bgcolor="#4B87C2"><div align="left" class="tabelas"><strong> Cliente</strong></div></td> <td width="192" bgcolor="#4B87C2"><div align="left" class="tabelas"><strong> Serviço</strong></div></td> <td width="96" bgcolor="#4B87C2"><div align="left" class="tabelas"><strong> Posição</strong></div></td> <td width="93" bgcolor="#4B87C2"><div align="left" class="tabelas"><strong> Agente</strong></div></td> <td width="73" colspan="2" align="center" valign="middle" bgcolor="#4B87C2"><div align="center" class="tabelas"><strong>Ações</strong></div></td> </tr> <?php while (list($id, $datafinal, $cliente, $descricao, $posicao, $tecnico) = mysql_fetch_array($res)) { echo " <tr> <td height='23px' valign='top' style='font-family:Lucida Sans Unicode, Lucida Grande, sans-serif; font-size:11px;'><font class=grid> $id </td> <td height='23px' valign='top' style='font-family:Lucida Sans Unicode, Lucida Grande, sans-serif; font-size:11px;'><font class=grid> $datafinal </td> <td height='23px' valign='top' style='font-family:Lucida Sans Unicode, Lucida Grande, sans-serif; font-size:11px;'><font class=grid> $cliente </td> <td height='23px' valign='top' style='font-family:Lucida Sans Unicode, Lucida Grande, sans-serif; font-size:11px;'><font class=grid> $descricao </td> <td height='23px' valign='top' align='center' style='font-family:Lucida Sans Unicode, Lucida Grande, sans-serif; font-size:11px;'><font class=grid>$posicao</td> <td height='23px' valign='top' style='font-family:Lucida Sans Unicode, Lucida Grande, sans-serif; font-size:11px;'><font class=grid> $tecnico </td> <td valign='top'><div align=center valign=top><a href=\"editar.php?id=$id\"><img src=\"../../../imagens/ico_lupa.gif\" /></a></td><td valign='top'><div align=center valign=top><a href=\"layout/imprimir.php?id=$id\" target=_blank><img src=\"../../../imagens/icone_impressora.gif\" /></a></div></td> </tr>\n"; } @mysql_close(); ?> </table> <table width="800" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <th align="left" scope="col" class="gridconsulta"><? $consulta = "SELECT COUNT(*) FROM ordem"; list($total_usuarios) = mysql_fetch_array(mysql_query($consulta,$con)); $total_paginas = $total_usuarios/$num_por_pagina; $prev = $pagina - 1; $next = $pagina + 1; if ($pagina > 1) { $prev_link = "<a class='gridconsulta' href=\"$PHP_SELF?pagina=$prev\">Anterior</a>"; } else { $prev_link = "<a class='gridconsulta'>Anterior<a>"; } if ($total_paginas > $pagina) { $next_link = "<a class='gridconsulta' href=\"$PHP_SELF?pagina=$next\">Próxima</a>"; } else { $next_link = "<a class='gridconsulta'>Próxima<a>"; } $total_paginas = ceil($total_paginas); $painel = ""; for ($x=1; $x<=$total_paginas; $x++) { if ($x==$pagina) { $painel .= "<a class='gridconsulta'>$x,<a>"; } else { $painel .= " <a class='gridconsulta' href=\"$PHP_SELF?pagina=$x\">$x,</a>"; } } echo "$prev_link $painel $next_link"; ?></th> </tr> </table> <tr> <th scope="col"> <table width="900" align="center"> </table> </th> </tr> <table width="800" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <th width="48" scope="col"> </th> <th width="62" scope="col"></th> <th width="608" scope="col"> </th> <th width="82" scope="col"> </th> </tr> <tr> <td align="left"><a href="index.php" style="border:none; text-decoration:none;"> <input name="button2" type="reset" value="Voltar" style="font-family:Verdana, Geneva, sans-serif; font-size:10px"> </a></td> <td align="left"><a href="index.php" style="border:none; text-decoration:none;"> <input name="button" type="reset" value="Principal" style="cursor:pointer; font-family:Verdana, Geneva, sans-serif; font-size:10px"> </a></td> <td align="left" valign="bottom"><a href="index.php" style="border:none; text-decoration:none;"> <input name="button3" type="reset" value="Nova OS" style="font-family:Verdana, Geneva, sans-serif; font-size:10px" /> </a></td> <td align="left" valign="bottom"> </td> </tr> </table> <link rel="stylesheet" type="text/css" href="../../../css-geral.css"/> <p> </p> <div align="center"> <table width="600" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <th height="80" scope="col"><? include "../../../footer.php"; ?></th> </tr> </table> </div> <p> </p>
Consegui, \o/ !!!!
O problema estava desde o login, ou seja, a página de login não estava pegando o "empresa_id" do usuário.

Edição feita por: rogeriodias, 19/11/2011, 10:47.
#12
Posted 19/11/2011, 22:22
SELECT id, datafinal, cliente, descricao, posicao, tecnico FROM ordem
WHERE empresa_id = X
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)