Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Deinha

[Resolvido] Associar tabela mysql ao id de outra tabela

Recommended Posts

Oi pessoal, tudo bem?

 

Seguinte, estou desenvolvendo um sisteminha de controle e cadastro de hóspedes para um hotel.

Ele funciona da seguinte forma: cadastra o cliente com informações básicas e então na página com os detalhes do cliente existe um include que puxa o histórico de hospedagens, com data de entrada e de saída, formas de pagamento, placa do veículos, etc... O problema é que não estou conseguindo associar este histórico para cada usuário.

 

No banco de dados tenho duas tabelas: clientes e hospedagem. A tabela clientes armazena as informações de cada cliente e a hospedagem armazena os históricos.

 

cadastrando_entrada.php (arquivo que cadastra o histórico no banco)

<?php
require("../loga.php");
require("../funcao.php");

$conn = mysql_connect("localhost","use","pass");
$banco = mysql_select_db("banco");

$id = $_POST["id"];
$entrada = $_POST['entrada'];
$hora_entrada = $_POST['hora_entrada'];
$saida = $_POST['saida'];
$hora_saida = $_POST['hora_saida'];
$procedencia = $_POST['procedencia'];
$destino = $_POST['destino'];
$acompanhantes = $_POST['acompanhantes'];
$placa = $_POST['placa'];
$pagamento = $_POST['pagamento'];
$cartao = $_POST['cartao'];
$tipo_ap = $_POST['tipo_ap'];
$num_ap = $_POST['num_ap'];

if(isset($entrada) and ($entrada != "") and isset($saida) and ($saida != "")){
$entrada = implode('-',array_reverse(explode('/',$entrada)));
$saida = implode('-',array_reverse(explode('/',$saida)));
$sql = "INSERT INTO hospedagem (entrada, hora_entrada, saida, hora_saida, procedencia, destino, acompanhantes, placa, pagamento, cartao, tipo_ap, num_ap) VALUES ('$entrada', '$hora_entrada', '$saida', '$hora_saida', '$procedencia', '$destino', '$acompanhantes', '$placa', '$pagamento', '$cartao', '$tipo_ap', '$num_ap')";

if(@mysql_query($sql)){
$id = mysql_insert_id();
header("Location: entrada.php?id=$id");
} else {
print("<font color=\"#333333\" size=\"2\">Erro ao cadastrar cliente: " . mysql_error() . '</font>');
} 
}
?>

cliente.php (exibe dados do cliente e respectivo histórico)

<?php
require("../loga.php");
require("../funcao.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Hotel Itália</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../painel.css" rel="stylesheet" type="text/css">
</head>

<body topmargin="0">
<table width="740" border="0" align="center" cellpadding="0" cellspacing="0" id="conteudo">
  <tr>
    <td><? include("../inc_topo.php"); ?></td>
  </tr>
  
  <tr>
    <td height="15" align="right" class="data">
    <?php include("../dataport.php"); ?></td>
  </tr>
  <tr>
    <td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td height="300" colspan="2" valign="top" bgcolor="#f6f3e8"><br>
<?php
$conn = mysql_connect("localhost","user","pass");
$banco = mysql_select_db("banco");

$id = addslashes($_GET["id"]);
$sql = mysql_query("SELECT nome, endereco, cidade, uf, fone, nascimento, nacionalidade, civil, rg, orgao, cpf, sexo FROM clientes WHERE id='$id'") or die(mysql_error());

while($row = mysql_fetch_array($sql)) {
$nome = $row['nome'];
$endereco = $row['endereco'];
$cidade = $row['cidade'];
$uf = $row['uf'];
$fone = $row['fone'];
$nascimento = $row['nascimento'];
$nacionalidade = $row['nacionalidade'];
$civil = $row['civil'];
$rg = $row['rg'];
$orgao = $row['orgao'];
$cpf = $row['cpf'];
$sexo = $row['sexo'];
?>
            <table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
              <tr>
                <td valign="bottom" class="titulos">Cliente: <? echo $nome; ?></td>
              </tr>
              <tr>
                <td valign="bottom"> </td>
              </tr>
              <tr>
                <td valign="bottom" class="tituloTB">Informações Gerais</td>
              </tr>
              <tr>
                <td> </td>
              </tr>
              <tr>
              <td height="20" class="cliente">
      <strong>      Endereço:</strong> <? echo $endereco; ?><br>
      <strong>Cidade:</strong> <? echo $cidade; ?>  <strong>UF:</strong> <? echo $uf; ?><br>
      <strong>Telefone:</strong> <? echo $fone; ?><br>
      <strong>Data de Nascimento:</strong> <? echo $nascimento; ?>  <strong>Nacionalidade:</strong> <? echo $nacionalidade; ?><br>
      <strong>Estado Civil:</strong> <? echo $civil; ?><br>
      <strong>RG:</strong> <? echo $rg; ?>  <strong>Orgão Expeditor:</strong> <? echo $orgao; ?><br>
      <strong>CPF:</strong> <? echo $cpf; ?> <br>
      <strong>Sexo:</strong> <? echo $sexo; ?>              </td>
              </tr>
              <tr>
                <td valign="bottom"> </td>
              </tr>
              <tr>
                <td valign="bottom"><a href="<?php print ('editar.php?id=' . $id . '');?>"><img src="../img/bt_edit.gif" alt="" width="45" height="21" border="0"></a></td>
              </tr>
              <tr>
                <td valign="bottom"> </td>
              </tr>
              <tr>
                <td valign="bottom" class="tituloTB">Histórico de Hospedagens</td>
              </tr>
              <tr>
                <td valign="bottom"> </td>
              </tr>
              <tr>
                <td valign="bottom"><?php include("hospedagem.php"); ?></td>
              </tr>
              <tr>
                <td valign="bottom"> </td>
              </tr>
              <tr>
                <td><a href="adicionar_entrada.php"><img src="../img/bt_add_entrada.gif" width="108" height="21" border="0"></a></td>
              </tr>
            </table>            
          <p> </p></td>
          </tr>
    </table></td>
        </tr>
        <tr>
          <td colspan="2"><? include("../inc_rodape.php"); ?></td>
        </tr>
    </table></td>
  </tr>
</table>
</body>
</html>
<?php
}
?>

hospedagem.php (include que lista o histórico)

<?php
$resultado = mysql_query('SELECT * FROM hospedagem');
if(!$resultado){
die("Erro ao fazer a consulta no banco de dados: " . mysql_error() . '<br>');
} 

if(mysql_num_rows($resultado) == 0){
print('<div style="color:#333333; font-size:12px; width:400px;">Não há registro de entradas</div>');

} else {
while($row = mysql_fetch_array($resultado)){
$entrada = $row['entrada'];
$hora_entrada = $row['hora_entrada'];
$saida = $row['saida'];
$hora_saida = $row['hora_saida'];
$placa = $row['placa'];
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="18%" class="titulos">Entrada</td>
    <td width="18%" class="titulos"><p>Horário</p>    </td>
    <td width="13%" class="titulos">Saída</td>
    <td width="18%" class="titulos">Horário</td>
    <td width="16%" class="titulos">Veículo Placa</td>
    <td width="17%"> </td>
  </tr>
  <tr>
    <td><? echo formatData($entrada); ?></td>
    <td><? echo $hora_entrada; ?></td>
    <td><? echo formatData($saida); ?></td>
    <td><? echo $hora_saida; ?></td>
    <td><? echo $placa; ?></td>
    <td><a class="editar" href="<?php print ('editar.php?id=' . $id . '');?>"><img src="../img/edit_entrada.gif" border="0"></a></td>
  </tr>
  <tr>
    <td colspan="6"><?php } } ?></td>
  </tr>
</table>

Alguém sabe me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você grava no histórico o id do cliente? Se não grava, como você vai saber de qual cliente é aquela hospedagem?

 

Se grava, é só fazer um JOIN entre as duas tabelas.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você grava no histórico o id do cliente? Se não grava, como você vai saber de qual cliente é aquela hospedagem?

 

Se grava, é só fazer um JOIN entre as duas tabelas.

 

Carlos Eduardo

 

É verdade! Mexi aqui, adicionei o campo na tabela e está gravando o id do cliente. Mas não estou conseguindo exibir somente no id do cliente. Exibe em todos os usuários. Certo que o problema está no join, mas é a primeira vez que uso este recurso, estou tateando ainda. Alguma luz?

Meu código está assim:

 

hospedagem.php

<?php
$resultado = mysql_query('SELECT * FROM hospedagem');
if(!$resultado){
die("Erro ao fazer a consulta no banco de dados: " . mysql_error() . '<br>');
}
$sql = "SELECT clientes.nome, hospedagem.id_cliente";
$sql .= " FROM clientes";
$sql .= " INNER JOIN hospedagem";
$sql .= " ON clientes.id_entrada = hospedagem.id";

if(mysql_num_rows($resultado) == 0){
print('<div style="color:#333333; font-size:12px; width:400px;">Não há registro de entradas</div>');

} else {
while($row = mysql_fetch_array($resultado)){
$id_entrada = $row['id_entrada'];
$entrada = $row['entrada'];
$hora_entrada = $row['hora_entrada'];
$saida = $row['saida'];
$hora_saida = $row['hora_saida'];
$placa = $row['placa'];
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="18%" class="titulos">Entrada</td>
    <td width="18%" class="titulos"><p>Horário</p>    </td>
    <td width="13%" class="titulos">Saída</td>
    <td width="18%" class="titulos">Horário</td>
    <td width="16%" class="titulos">Veículo Placa</td>
    <td width="17%"> </td>
  </tr>
  <tr>
    <td class="cliente"><? echo formatData($entrada); ?></td>
    <td class="cliente"><? echo $hora_entrada; ?></td>
    <td class="cliente"><? echo formatData($saida); ?></td>
    <td class="cliente"><? echo $hora_saida; ?></td>
    <td class="cliente"><? echo $placa; ?></td>
    <td class="cliente"><a class="editar" href="<?php print ('editar_entrada.php?id=' . $id_entrada . '');?>"><img src="../img/edit_entrada.gif" border="0"></a></td>
  </tr>
  <tr>
    <td colspan="6" bgcolor="#e0d7b9"><?php } } ?></td>
  </tr>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, acho que to pegando o espírito. Mudei para isso

 

<?php
$resultado = mysql_query('SELECT hospedagem.*, clientes.* FROM (hospedagem INNER JOIN clientes ON hospedagem.id_cliente = clientes.id) WHERE hospedagem.id_cliente ="$id"');

if(!$resultado){
die("Erro ao fazer a consulta no banco de dados: " . mysql_error() . '<br>');
}

if(mysql_num_rows($resultado) == 0){
print('<div style="color:#333333; font-size:12px; width:400px;">Não há registro de entradas</div>');

} else {
while($row = mysql_fetch_array($resultado)){
$id_entrada = $row['id_entrada'];
$entrada = $row['entrada'];
$hora_entrada = $row['hora_entrada'];
$saida = $row['saida'];
$hora_saida = $row['hora_saida'];
$placa = $row['placa'];
?>

Mas agora não exibe nada! :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao exibe nada apenas, ou mostra algum erro? se mostrar, poste aki....agora....pelo q vi, faltou fechar algumas chaves ali....

 

Não exibe as chaves de fechamento do while pq eu só colei o trecho do código php. As chaves são fechadas posteriormente.

 

Não dá erro nenhum, só não exibia. Agora eu troquei a linha do query por

 

$resultado = mysql_query('SELECT hospedagem.*, clientes.id FROM (hospedagem INNER JOIN clientes ON hospedagem.id_cliente = clientes.id)');

Ele voltou a exibir em todos os clientes. Não entendo pq, o id_cliente que é o id da tabela cliente, está salvada no banco, tudo certinho. A sintaxe parece correta tb, não? Não consigo achar o que tá dando errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O PHP não interpreta variáveis dentro de aspas simples. Faça o seguinte.

 

'SELECT * FROM hospedagem INNER JOIN clientes ON hospedagem.id_cliente = clientes.id WHERE hospedagem.id_cliente = '.$id

 

Se mesmo assim não resolver, imprima a query antes de executar e veja se está pegando a $id corretamente.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.