Jump to content


Photo

Sistema Para Várias Empresas


  • Faça o login para participar
11 replies to this topic

#1 rogeriodias

rogeriodias

    Turista

  • Usuários
  • 37 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte-MG
  • Interesses:Programação, Música, Carros

Posted 17/11/2011, 07:19

Amigos, bom dia!

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 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 17/11/2011, 10:21

@ ROGERIODIAS
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 rogeriodias

rogeriodias

    Turista

  • Usuários
  • 37 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte-MG
  • Interesses:Programação, Música, Carros

Posted 18/11/2011, 07:51

Hostdesigner, muito obrigado pela dica.
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 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 18/11/2011, 09:51

@ ROGERIODIAS
Neste caso ai você está listando todos os registros, não filtrou nada. Você nem mesmo filtrou uma empresa.

Falopa!

#5 rogeriodias

rogeriodias

    Turista

  • Usuários
  • 37 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte-MG
  • Interesses:Programação, Música, Carros

Posted 18/11/2011, 10:33

Assim? :huh:

<?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 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 18/11/2011, 11:46

@ ROGERDIAS
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 rogeriodias

rogeriodias

    Turista

  • Usuários
  • 37 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte-MG
  • Interesses:Programação, Música, Carros

Posted 18/11/2011, 12:52

Pois é, mas da forma que coloquei o codigo pra você ver, não funfou. Deve ter algo de errado. :(

Edição feita por: rogeriodias, 18/11/2011, 12:53.


#8 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 18/11/2011, 12:57

@ ROGERIODIAS
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 rogeriodias

rogeriodias

    Turista

  • Usuários
  • 37 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte-MG
  • Interesses:Programação, Música, Carros

Posted 18/11/2011, 14:02

Pelo que entendi, aqui está o que pediu.

+------------------------------------------------------+
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 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 18/11/2011, 15:20

@ ROGERIODIAS
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 rogeriodias

rogeriodias

    Turista

  • Usuários
  • 37 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte-MG
  • Interesses:Programação, Música, Carros

Posted 19/11/2011, 14:40

As tabelas do meu banco estão da seguinte forma:
  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>&nbsp;</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&ccedil;o</span></th>
    </tr>
    <tr>
      <td>&nbsp;</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>&nbsp;N&uacute;mero</strong></div></td>
    <td width="73" height="25" bgcolor="#4B87C2"><div align="left" class="tabelas"><strong>&nbsp;Abertura</strong></div></td>
    <td width="191" bgcolor="#4B87C2"><div align="left" class="tabelas"><strong>&nbsp;Cliente</strong></div></td>
    <td width="192" bgcolor="#4B87C2"><div align="left" class="tabelas"><strong>&nbsp;Servi&ccedil;o</strong></div></td>
    <td width="96" bgcolor="#4B87C2"><div align="left" class="tabelas"><strong>&nbsp;Posi&ccedil;&atilde;o</strong></div></td>
    <td width="93" bgcolor="#4B87C2"><div align="left" class="tabelas"><strong>&nbsp;Agente</strong></div></td>
    <td width="73" colspan="2" align="center" valign="middle" bgcolor="#4B87C2"><div align="center" class="tabelas"><strong>A&ccedil;&otilde;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>&nbsp; $id </td>
                        <td height='23px' valign='top' style='font-family:Lucida Sans Unicode, Lucida Grande, sans-serif; font-size:11px;'><font class=grid>&nbsp; $datafinal </td>
                        <td height='23px' valign='top' style='font-family:Lucida Sans Unicode, Lucida Grande, sans-serif; font-size:11px;'><font class=grid>&nbsp; $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>&nbsp; $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&oacute;xima</a>";
} else {
$next_link = "<a class='gridconsulta'>Pr&oacute;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">&nbsp;</th>
    <th width="62" scope="col"></th>
    <th width="608" scope="col">&nbsp;</th>
    <th width="82" scope="col">&nbsp;</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">&nbsp;</td>
  </tr>
</table>
<link rel="stylesheet" type="text/css" href="../../../css-geral.css"/>
<p>&nbsp;</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>&nbsp;</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 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

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)

IPB Skin By Virteq