• 0
Sign in to follow this  
Alan Maia

Mysql Com Relacionamentos

Question

To com o seguinte problema estou desenvolvendo uma pequena aplicação Web em PHP para assistência técnica - Trabalho de Faculdade - e tenho as seguintes tabelas:

CREATE TABLE Clientes 
(
  ID INT (6) NOT NULL AUTO_INCREMENT,
  NOME VARCHAR (150) NOT NULL,
  ENDERECO VARCHAR (50) NOT NULL,
  BAIRRO VARCHAR (30) NOT NULL,
  CEP INT (8) NOT NULL,
  CIDADE VARCHAR (25) NOT NULL,
  FONE INT (15) NOT NULL,
  CELULAR INT (15) NOT NULL,
  ESTADO CHAR (2) NOT NULL,
  EMAIL VARCHAR (30) NOT NULL,
  OBS VARCHAR (150) NOT NULL,
  INDEX I1(ID),
  INDEX I2 (NOME),
  CONSTRAINT PK_ID PRIMARY KEY (ID) 
)
TYPE=INNODB

CREATE TABLE OS_ABRE
(
  OS INT (6) NOT NULL AUTO_INCREMENT,
  STATUS VARCHAR (15) NOT NULL,
  DATA_ENT VARCHAR (10) NOT NULL,
  HORA_ENT VARCHAR (5) NOT NULL,
  ATENDENTE VARCHAR (25) NOT NULL,
  TIPO_EQUIP VARCHAR (25) NOT NULL,
  MARCA_EQUIP VARCHAR (25) NOT NULL,
  MODELO_EQUIP VARCHAR (25) NOT NULL,
  NSERIE_EQUIP VARCHAR (15) NOT NULL,
  PRIORIDADE_EQUIP CHAR (10) NOT NULL,
  ACESSORIOS_EQUIP VARCHAR (150) NOT NULL,
  DEFEITO VARCHAR (150) NOT NULL,
  NOME VARCHAR (150) NOT NULL,
  INDEX I3 (OS),
  INDEX I4 (NOME),
  PRIMARY KEY (OS, NOME),
  FOREIGN KEY (NOME) REFERENCES Clientes(NOME)
)
TYPE=INNODB

CREATE TABLE OS_BAIXA
(
  ID_BAIXA INT (6) NOT NULL AUTO_INCREMENT,
  OS INT (6) NOT NULL,
  STATUS VARCHAR (10) NOT NULL,
  DATA_ENT VARCHAR (10) NOT NULL,
  HORA_ENT VARCHAR (5) NOT NULL,
  DATA_SAI VARCHAR (10) NOT NULL,
  HORA_SAI VARCHAR (5) NOT NULL,
  ATENDENTE VARCHAR (20) NOT NULL,
  TIPO_EQUIP VARCHAR (30) NOT NULL,
  MARCA_EQUIP VARCHAR (20) NOT NULL,
  MODELO_EQUIP VARCHAR (50) NOT NULL,
  NSERIE_EQUIP VARCHAR (15) NOT NULL,
  PRIORIDADE_EQUIP VARCHAR (10) NOT NULL,
  ACESSORIOS_EQUIP VARCHAR (150) NOT NULL,
  DEFEITO VARCHAR (150) NOT NULL,
  ID INT (6) NOT NULL,
  NOME VARCHAR (150) NOT NULL,
  SOLUCAO VARCHAR (150) NOT NULL,
  TECNICO VARCHAR (25) NOT NULL,
  REPOSICAO VARCHAR (150) NOT NULL,
  VALOR DECIMAL (10,2) NOT NULL,
  GARANTIA VARCHAR (3) NOT NULL,
  INDEX I5 (ID_BAIXA), 
  INDEX I6 (OS),
  INDEX I7(ID),
  INDEX I8(NOME),
  PRIMARY KEY (ID_BAIXA, OS, ID),
  FOREIGN KEY (OS) REFERENCES OS(OS),
  FOREIGN KEY (ID) REFERENCES Clientes(ID)
)
TYPE=INNODB

Pois bem o meu problema é o seguinte quando efetuo o cadastro do cliente sem problemas, vou abrir uma OS sem problemas, agora quando vou imprimir uma OS ou dar baixa numa OS não consigo relacionar o equipamento que deu entrada com o cliente, só aparece os dados do equipamento.

Se tiver uma alma caridosa que possa me ajudar nessa luta incansável dos programadores, ficarei muito satisfeito e agradecido.

Acredito que deu pra entender o problema.

Se possível me ajudem a montar o código em PHP também pois o que fiz não tá dando muito certo.

Grato pela atenção de todos.

Alan Maia

AmazonInfo

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Olá,

Eu num entendo de PHP mas esse tipo de relacionamento você pode implementar na própria instrução SQL.

você poderia postar parte de seu código que executa essa tarefa?

Ficaria mais fácil pro pessoal te ajudar.

-------------------

só uma deixa:

você está fazendo referência da tabela OS_ABRE com a tabela Clientes usando o campo NOME

nesse caso seria mais aconselhavel que você usasse o campo ID da tabela Clientes para fazer essa referência, até por ser PRIMARY KEY, (igual você fez com a tabela OS_BAIXA). Por NOME pode ser que apareça nomes iguais, o que seria um grande problema pra você.

Abs. Progr'amador. ;)

Share this post


Link to post
Share on other sites
  • 0

valeu pela dica, vou colocar o codigo

Segue código que deveria aparecer os dados da OS e do Cliente duas tabelas relacionadas.

Se alguém tiver alguma dúvida ou ideia de como puder me ajudar

<?
session_start();

$conexao = mysql_connect("localhost", "75376", "senha")
or die ("Configuração de Banco de Dados Errada!<br><a ref=site.php>Voltar</a>");

$db = mysql_select_db("75376")
or die ("Banco de Dados Inexistente!<br><a ref=site.php>Voltar</a>");

$sql2 = "SELECT * FROM OS_ABRE WHERE OS=$OS";

$rs2 = mysql_query($sql2, $conexao) or die ("Não foi possível Efetuar a Consulta.");

$linha2 = mysql_fetch_array($rs2);
$OS = $linha2["OS"];
$STATUS = $linha2["STATUS"];
$DATA_ENT = $linha2["DATA_ENT"];
$HORA_ENT = $linha2["HORA_ENT"];
$ATENDENTE = $linha2["ATENDENTE"];
$TIPO_EQUIP = $linha2["TIPO_EQUIP"];
$MARCA_EQUIP = $linha2["MARCA_EQUIP"];
$MODELO_EQUIP = $linha2["MODELO_EQUIP"];
$NSERIE_EQUIP = $linha2["NSERIE_EQUIP"];
$PRIORIDADE_EQUIP = $linha2["PRIORIDADE_EQUIP"];
$ACESSORIOS_EQUIP = $linha2["ACESSORIOS_EQUIP"];
$DEFEITO = $linha2["DEFEITO"];
$NOME = $linha2["NOME"];

?>

<html>

<head>
<meta http-equiv="Content-Language" content="pt-br">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Ordem de Serviço Nº</title>
</head>

<body>
<?

if(!session_is_registered("login") AND !session_is_registered("senha")){
echo"Você não está logado.. Clique <a href=\"../index.php\">aqui</a> para se logar...";
}else{
?>
<hr>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
  <tr>
    <td width="271" rowspan="2">
    <img border="0" src="oscommerce.gif" width="270" height="121"></td>
    <td width="712">
    <p align="center"><b><font size="5">Ordem de Serviço Nº <? echo "$OS" ?>&nbsp; <br>Data <? echo "$DATA_ENT" ?></font></b></p>
    <p align="center"><b><font size="4">Tipo de Ordem de Serviço: ORÇAMENTO</font></b><hr></td>
  </tr>
  <tr>
    <td width="712">
    <p align="center"><b><font size="4">AMAZONINFO INFORMÁTICA &amp; ELETRÔNICOS</font></b><br>
    Travessa de Breves 272 - Cidade Velha - 66023-150 - Belém-pra<br>
    Fones: 91- 32242392/2246875/81499864<br>
    <a target="_blank" href="http://www.amazoninfo.com.br">www.amazoninfo.com.br</a> - 
    <a href="mailto:[email protected]">[email protected]</a> </td>
  </tr>
  <tr>
    <td width="750" colspan="2">
    <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="983" id="AutoNumber2" height="337">
      <tr>
        <td width="983" colspan="6" height="16"><hr></td>
      </tr>
      <tr>
        <td width="983" colspan="6" height="19">
        <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3">
          <tr>
            <td width="244"><b>Identificação do Cliente</b></td>
            <td width="66">&nbsp;</td>
            <td width="373">&nbsp;</td>
            <td width="59">&nbsp;</td>
            <td width="236">&nbsp;</td>
          </tr>
          <tr>
            <td width="244">Código: <? echo "$ID" ?></td>
            <td width="66" align="left">Nome</td>
            <td width="668" colspan="3"><? echo "$NOME" ?></td>
          </tr>
          <tr>
            <td width="244">&nbsp;</td>
            <td width="66" align="left">Endereço</td>
            <td width="668" colspan="3"><? echo "$ENDERECO" ?></td>
          </tr>
          <tr>
            <td width="244">&nbsp;</td>
            <td width="66" align="left">Bairro</td>
            <td width="373"><? echo "$BAIRRO" ?></td>
            <td width="59">CEP</td>
            <td width="236"><? echo "$CEP" ?></td>
          </tr>
          <tr>
            <td width="244">&nbsp;</td>
            <td width="66" align="left">Cidade</td>
            <td width="373"><? echo "$CIDADE" ?></td>
            <td width="59">Estado</td>
            <td width="236"><? echo "$ESTADO" ?></td>
          </tr>
          <tr>
            <td width="244">&nbsp;</td>
            <td width="66" align="left">Telefone</td>
            <td width="373"><? echo "$FONE" ?></td>
            <td width="59">Celular</td>
            <td width="236"><? echo "$CELULAR" ?></td>
          </tr>
          <tr>
            <td width="244">&nbsp;</td>
            <td width="66" align="left">OBS</td>
            <td width="373"><? echo "$OBS" ?></td>
            <td width="59">Email</td>
            <td width="236"><? echo "$EMAIL" ?></td>
          </tr>
        </table>
        </td>
      </tr>
      <tr>
        <td width="983" colspan="6" height="16"><hr></td>
      </tr>
      <tr>
        <td width="983" colspan="6" height="19"><b>Identificação do Equipamento</b></td>
      </tr>
      <tr>
        <td width="258" height="19">Tipo de Equipamento</td>
        <td width="176" height="19">Marca do Equipamento</td>
        <td width="184" height="19" colspan="2">Modelo do Equipamento</td>
        <td width="180" height="19">Número de Série</td>
        <td width="185" height="19">Acessórios Recebidos</td>
      </tr>
      <tr>
        <td width="258" height="38"><? echo "$TIPO_EQUIP" ?></td>
        <td width="176" height="38"><? echo "$MARCA_EQUIP" ?></td>
        <td width="184" height="38" colspan="2"><? echo "$MODELO_EQUIP" ?></td>
        <td width="180" height="38"><? echo "$NSERIE_EQUIP" ?></td>
        <td width="185" height="38"><? echo "$ACESSORIOS_EQUIP" ?></td>
      </tr>
      <tr>
        <td width="983" height="19" colspan="6"><hr></td>
      </tr>
      <tr>
        <td width="983" height="19" colspan="6">Dados do Contrato e da Garantia</td>
      </tr>
      <tr>
        <td width="983" height="19" colspan="6">
        <p align="justify">O <? echo "$TIPO_EQUIP" ?> do Cliente <? echo "$NOME"
        ?> será entregue ao Departamento Técnico para avaliação e orçamento
        relativo ao defeito relatado pelo 
        cliente.<br>O <b>Orçamento</b> será concluído no prazo de até 72 
        (Setenta e duas) horas.<br>A validade do Orçamento é de 30 (Trinta) dias 
        corridos a partir da data da emissão do mesmo.<br>A garantia do(s) 
        Equipamento(s) em caso de Autorização de Serviço será de 60 (Sessenta) 
        dias.</td>
      </tr>
      <tr>
        <td width="983" height="19" colspan="6"><hr></td>
      </tr>
      <tr>
        <td width="258" height="19"><b>Defeito Reclamado</b></td>
        <td width="725" colspan="5" height="19">&nbsp;</td>
      </tr>
      <tr>
        <td width="983" height="39" colspan="6" valign="top" align="justify"><? echo "$DEFEITO" ?></td>
      </tr>
      <tr>
        <td width="983" height="19" colspan="6"><hr></td>
      </tr>
      <tr>
        <td width="983" height="19" colspan="6"><b>Declaração de Aceitação dos 
        Termos Acima Citados</b></td>
      </tr>
      <tr>
        <td width="983" height="19" colspan="6">
        <p align="justify">Eu, <? echo "$NOME" ?> declaro para os devidos fins
        de direito estar de pleno acordo com os temos acima citados pela Empresa 
        AMAZONINFO INFORMÁTICA &amp; ELETRÔNICOS para a realização de orçamento 
        serviços do(s) meu(s) equipamento(s) que será neste momento entregue à 
        eles para verificação do devido problema relatado por mim. Estando assim 
        de pleno acordo assino em 02 (duas) vias de igual teor e conteúdo.</td>
      </tr>
      <tr>
        <td width="983" height="19" colspan="6">&nbsp;</td>
      </tr>
      <tr>
        <td width="983" height="19" colspan="6">&nbsp;</td>
      </tr>
      <tr>
        <td width="983" height="19" colspan="6">Belém(pra), <? require "data.php"
        ?> </td>
      </tr>
      <tr>
        <td width="492" height="19" colspan="3">
        <p align="center">____________________________________________</td>
        <td width="491" height="19" colspan="3">
        <p align="center">____________________________________________</td>
      </tr>
      <tr>
        <td width="492" height="19" colspan="3">
        <p align="center">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        <? echo "$NOME" ?></td>
        <td width="491" height="19" colspan="3">
        <p align="center">AMAZONINFO</td>
      </tr>
      <tr>
        <td width="258" height="19">&nbsp;</td>
        <td width="725" colspan="5" height="19">&nbsp;</td>
      </tr>
      <tr>
        <td width="983" height="19" colspan="6"><hr></td>
      </tr>
      <tr>
        <td width="983" height="19" colspan="6">
        &nbsp;</td>
      </tr>
      </table>
    </td>
  </tr>
</table>
<?
};
?>
<center>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
  <td><a href="java script:window.print()">Imprimir</a></td>
  <td><a href="java script:window.close()">Fechar Janela</a></td>
</tr>
</table>
</center>
</body>
</html>

Share this post


Link to post
Share on other sites
  • 0

Consegui utilizando esta instrução dentro do proprio PHP

$sql2 = "SELECT * FROM OS_ABRE, Clientes WHERE OS_ABRE.OS=Clientes.ID AND OS=$OS";

Valeu pela dica de todos

Share this post


Link to post
Share on other sites
  • 0

Agora to com um problema quando faço um cadastro de Abertura de OS ele só faz uma OS por Cliente ou seja um cliente só pode ter uma OS o que não pode acontecer, um cliente pode ter varias os, agora uma os só pode ter um cliente me ajudem nesse dilema para saber onde esta o erro, acredito que esteja na estrutura do banco.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this