Deinha 0 Denunciar post Postado Setembro 30, 2009 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
Matias Rezende 50 Denunciar post Postado Setembro 30, 2009 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
Deinha 0 Denunciar post Postado Setembro 30, 2009 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
Deinha 0 Denunciar post Postado Setembro 30, 2009 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
visitante_php 0 Denunciar post Postado Setembro 30, 2009 nao exibe nada apenas, ou mostra algum erro? se mostrar, poste aki....agora....pelo q vi, faltou fechar algumas chaves ali.... Compartilhar este post Link para o post Compartilhar em outros sites
Deinha 0 Denunciar post Postado Setembro 30, 2009 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
Matias Rezende 50 Denunciar post Postado Setembro 30, 2009 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
Deinha 0 Denunciar post Postado Outubro 1, 2009 Bah, perfeito! Deu certo! Muito obrigada :D Compartilhar este post Link para o post Compartilhar em outros sites