Remazela 6 Denunciar post Postado Novembro 21, 2016 Caros amigos. Por favor, me perdoa por recorrer ajuda dos amigos. Estou com problema de Relacionamento de Tabelas, já li alguns artigos e assisti o vídeo abaixo: Como criar INNER JOIN com PHP e MySQLi => Infelizmente continuo com problema de relacionamento e não consigo solucionar. Onde devo efetuar o Relacionamento para mostrar o Código + Nome_Cliente ? Meu Banco de Dados está assim: CREATE TABLE IF NOT EXISTS `clientes` ( `clienteId` int(11) NOT NULL AUTO_INCREMENT, `criadoEM` timestamp NULL DEFAULT NULL, `nome` varchar(255) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `senha` varchar(150) DEFAULT NULL, `telefone` varchar(20) DEFAULT NULL, PRIMARY KEY (`clienteId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `imoveis` ( `imovelId` int(11) NOT NULL AUTO_INCREMENT, `clienteId` varchar(255) DEFAULT NULL, `imovelVisitas` varchar(255) DEFAULT NULL, `imovelTitulo` varchar(255) DEFAULT NULL, `imovelStatus` varchar(255) DEFAULT NULL, `imovelConfirma` varchar(255) DEFAULT NULL, PRIMARY KEY (`imovelId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; Anexei a imagem das telas: Abaixo posto meus Fontes: pendentes.php <form name="busca" action="painel.php?exe=admin-imoveis/pendentes_busca" enctype="multipart/form-data" method="post"> <!-- form que após digitar o código do cliente passa para próxima etapa --> <label> <span style="font: 16px Arial; font-weight:bold; color:#006666;" >Código do Cliente:</span> <input type="text" name="clienteId" maxlength="10" size="10" onkeypress="return numberOnly(event)" required /> <input type="submit" name="executar" id="executar" value="Pesquisar" /> </label> </form> <table width="100%" border="0" cellspacing="3" cellpadding="0"> <tr style="background:#666; color:#FFF"> <td align="center">Código Cliente:</td> <td align="center">Código Anúncio:</td> <td align="center">Título do Anúncio:</td> <td align="center">Cadastro em:</td> </tr> <?php $data = date('Y-m-d H:m:s'); $imovelStatus = 'pendente'; //Paginação da página $pag = "$_GET[pag]"; if($pag >= '1'){ $pag = $pag; } else { $pag = '1'; } $maximo = '15'; //RESULTADOS POR PÁGINA $inicio = ($pag * $maximo) - $maximo; $sql_pegaAtivos = 'SELECT * FROM imoveis WHERE imovelStatus = :imovelStatus AND imovelTermino >= :data ORDER BY imovelTermino ASC LIMIT '.$inicio.','.$maximo; try{ $query_pegaAtivos = $conecta->prepare($sql_pegaAtivos); $query_pegaAtivos->bindValue(':imovelStatus',$imovelStatus,PDO::PARAM_STR); $query_pegaAtivos->bindValue(':data',$data,PDO::PARAM_STR); $query_pegaAtivos->execute(); $resultado_pegaAtivos = $query_pegaAtivos->fetchAll(PDO::FETCH_ASSOC); $count_pegaAtivos = $query_pegaAtivos->rowCount(PDO::FETCH_ASSOC); } catch(PDOexception $error_pegaAtivos) { echo 'Erro ao pegar ativos'.$error_pegaAtivos->getMessage(); } foreach($resultado_pegaAtivos as $resAtivos){ $anuncioCliente = $resAtivos['clienteId']; $anuncioId = $resAtivos['imovelId']; $anuncioTitulo = $resAtivos['imovelTitulo']; $anuncioInicio = $resAtivos['imovelCadastro']; $anuncioFinal = $resAtivos['imovelTermino']; $anuncioVisitas = $resAtivos['imovelVisitas']; //Código para mudar as linhas da Tabela autoincremento. $i++; if($i % 2 == 0){ //Cor para toda vez que a linha for par $cor = 'style="background: #F5FFFA"'; }else{ //Cor para toda vez que a linha for impar $cor = 'style="background: #B4EEB4;"'; } ?> <!-- Mostrar os campos na Tabela --> <tr <?php echo $cor;?>> <td align="center"><?php echo $anuncioCliente ;?></td> <td align="center"><?php echo $anuncioId ;?></td> <td align="left"> <?php echo $anuncioTitulo ;?></td> <td align="center"><?php echo date('d/m/Y',strtotime($anuncioInicio));?></td> </tr> <?php } //Fechar o 1.Foreach ?> </table> pendentes_busca.php <form class="f_form"> <!-- Nessa label - mostro o Código do cliente --> <label><span style="font:18px Arial; font-weight:bold; color:#333333;" >Código: <?php echo $_POST['clienteId']; ?></span></label> </form> <table width="100%" border="0" cellspacing="3" cellpadding="0"> <tr style="background:#666; color:#FFF"> <td align="center">Cód. Cliente:</td> <td align="center">Cód. Anúncio:</td> <td align="center">Título do Anúncio:</td> <td align="center">Cadastro em:</td> <td align="center">Executar:</td> </tr> <?php $clienteId = $_POST['clienteId']; $data = date('Y-m-d H:m:s'); $imovelStatus = 'pendente'; //Paginação da página $pag = "$_GET[pag]"; if($pag >= '1'){ $pag = $pag; } else { $pag = '1'; } $maximo = '10'; //RESULTADOS POR PÁGINA $inicio = ($pag * $maximo) - $maximo; $sql_pegaAtivos = 'SELECT * FROM imoveis WHERE clienteId = :clienteId AND imovelStatus = :imovelStatus AND imovelTermino >= :data ORDER BY imovelTermino ASC LIMIT '.$inicio.','.$maximo; try{ $query_pegaAtivos = $conecta->prepare($sql_pegaAtivos); $query_pegaAtivos->bindValue(':clienteId',$clienteId,PDO::PARAM_STR); $query_pegaAtivos->bindValue(':imovelStatus',$imovelStatus,PDO::PARAM_STR); $query_pegaAtivos->bindValue(':data',$data,PDO::PARAM_STR); $query_pegaAtivos->execute(); $resultado_pegaAtivos = $query_pegaAtivos->fetchAll(PDO::FETCH_ASSOC); }catch(PDOexception $error_pegaAtivos){ echo 'Erro ao pegar ativos'.$error_pegaAtivos->getMessage(); } foreach($resultado_pegaAtivos as $resAtivos){ $anuncioId = $resAtivos['imovelId']; $anuncioTitulo = $resAtivos['imovelTitulo']; $anuncioInicio = $resAtivos['imovelCadastro']; $anuncioFinal = $resAtivos['imovelTermino']; $anuncioVisitas = $resAtivos['imovelVisitas']; $anuncioStatus = $resAtivos['imovelStatus']; //Código para mudar as linhas da Tabela autoincremento. $i++; if($i % 2 == 0){ //Cor para toda vez que a linha for par $cor = 'style="background: #F5FFFA"'; }else{ //Cor para toda vez que a linha for impar $cor = 'style="background: #B4EEB4;"'; } ?> <tr <?php echo $cor;?>> <td align="center"><?php echo $clienteId ;?></td> <td align="center"><?php echo $anuncioId ;?></td> <td align="left"> <?php echo $anuncioTitulo ;?></td> <td align="center"><?php echo date('d/m/Y',strtotime($anuncioInicio));?></td> <td align="center"> <form name="analisar" action="painel.php?exe=admin-imoveis/pendentes_change&anuncio=<?php echo $anuncioId;?>" enctype="multipart/form-data" method="post" > <input type="hidden" name="imovelId" value="<?php echo $anuncioId;?>" /> <input type="submit" name="executar" id="executar" value="Analisar Anúncio" /> </form> </td> </tr> <?php } //Fechar o 1.Foreach ?> </table> Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Novembro 21, 2016 O relacionamento é criado usando chaves estrangeiras (FK). No seu caso é interessante adicionar a FK, pois pelo visto o imóvel pertence à um cliente, já que possui a coluna clienteId. Independente de ter chave estrangeira ou não nas tabelas, para trazer dados de várias tabelas que possuem dados relacionados, você utiliza JOIN informando qual a coluna da tabela X (clientes) que referencia a coluna da tabela Y (imoveis). No seu caso a consulta seria esta: SELECT i.imovelTitulo, c.clienteId, c.nome FROM imoveis as i INNER JOIN clientes as c ON c.clienteId = i.clienteId Depois da linha onde está o JOIN você pode adicionar o restante da sua consulta (where, order by, limit, etc), mas referenciando a tabela onde está a coluna (ex: ORDER BY c.nome). Caso o nome da coluna não se repita nas tabelas, não é necessário adicionar o prefixo da tabela (mas é uma boa prática adicionar, pois só de olhar você já sabe de qual tabela é; e também evita conflitos se caso você ou outra pessoa futuramente adicionar coluna com mesmo nome nas tabelas). Compartilhar este post Link para o post Compartilhar em outros sites
Remazela 6 Denunciar post Postado Novembro 22, 2016 Caro amigo Anderson Mamede Desculpa não entendi, pode me ajudar com um exemplo. Tenho as variáveis principais para buscar no banco de dados: $clienteId = $_POST['clienteId']; //variável que vem do pendentes.php $data = date('Y-m-d H:m:s'); //data atual que compraro com imovelTermino $imovelStatus = 'pendente'; //status do anúncio <?php //Variáveis para fazer a busca $clienteId = $_POST['clienteId']; $data = date('Y-m-d H:m:s'); $imovelStatus = 'pendente'; //Paginação da página $pag = "$_GET[pag]"; if($pag >= '1'){ $pag = $pag; } else { $pag = '1'; } $maximo = '10'; //RESULTADOS POR PÁGINA $inicio = ($pag * $maximo) - $maximo; //SQL para buscar no Banco de Dados $sql_pegaAtivos = 'SELECT * FROM imoveis WHERE clienteId = :clienteId AND imovelStatus = :imovelStatus AND imovelTermino >= :data ORDER BY imovelTermino ASC LIMIT '.$inicio.','.$maximo; //Pego os dados para que preciso try{ $query_pegaAtivos = $conecta->prepare($sql_pegaAtivos); $query_pegaAtivos->bindValue(':clienteId',$clienteId,PDO::PARAM_STR); $query_pegaAtivos->bindValue(':imovelStatus',$imovelStatus,PDO::PARAM_STR); $query_pegaAtivos->bindValue(':data',$data,PDO::PARAM_STR); $query_pegaAtivos->execute(); $resultado_pegaAtivos = $query_pegaAtivos->fetchAll(PDO::FETCH_ASSOC); }catch(PDOexception $error_pegaAtivos){ echo 'Erro ao pegar ativos'.$error_pegaAtivos->getMessage(); } //Monto a Tabela com os dados foreach($resultado_pegaAtivos as $resAtivos){ $anuncioId = $resAtivos['imovelId']; $anuncioTitulo = $resAtivos['imovelTitulo']; $anuncioInicio = $resAtivos['imovelCadastro']; $anuncioFinal = $resAtivos['imovelTermino']; $anuncioVisitas = $resAtivos['imovelVisitas']; $anuncioStatus = $resAtivos['imovelStatus']; //Código para mudar as linhas da Tabela autoincremento. $i++; if($i % 2 == 0){ //Cor para toda vez que a linha for par $cor = 'style="background: #F5FFFA"'; }else{ //Cor para toda vez que a linha for impar $cor = 'style="background: #B4EEB4;"'; } ?> <tr <?php echo $cor;?>> <td align="center"><?php echo $clienteId ;?></td> <td align="center"><?php echo $anuncioId ;?></td> <td align="left"> <?php echo $anuncioTitulo ;?></td> <td align="center"><?php echo date('d/m/Y',strtotime($anuncioInicio));?></td> <td align="center"> <form name="analisar" action="painel.php?exe=admin-imoveis/pendentes_change&anuncio=<?php echo $anuncioId;?>" enctype="multipart/form-data" method="post" > <input type="hidden" name="imovelId" value="<?php echo $anuncioId;?>" /> <input type="submit" name="executar" id="executar" value="Analisar Anúncio" /> </form> </td> </tr> <?php } //Fechar o 1.Foreach ?> Grato, Renato Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Novembro 22, 2016 Você só precisa incluir o INNER JOIN na sua consulta e referenciar de quais tabelas vem as colunas Na sua consulta ficaria assim: $sql_pegaAtivos = ' SELECT i.*, c.nome FROM imoveis as i INNER JOIN clientes as c ON c.clienteId = i.clienteId WHERE i.clienteId = :clienteId AND i.imovelStatus = :imovelStatus AND i.imovelTermino >= :data ORDER BY i.imovelTermino ASC LIMIT '.$inicio.','.$maximo; Compartilhar este post Link para o post Compartilhar em outros sites
Raffael Dornelles Jardim 3 Denunciar post Postado Novembro 22, 2016 Remazela, Pegando o que o Anderson falou, acho que ficaria mais ou menos assim: <?php //Variáveis para fazer a busca $clienteId = $_POST['clienteId']; $data = date('Y-m-d H:m:s'); $imovelStatus = 'pendente'; //Paginação da página $pag = "$_GET[pag]"; if($pag >= '1'){ $pag = $pag; } else { $pag = '1'; } $maximo = '10'; //RESULTADOS POR PÁGINA $inicio = ($pag * $maximo) - $maximo; //SQL para buscar no Banco de Dados $sql_pegaAtivos = 'SELECT i.imovelTitulo, c.clienteId, c.nome,imov.imovelCadastro,imov.imovelTermino,imov.imovelStatus,imov.imovelVisitas FROM imoveis imov INNER JOIN clientes cli ON imov.clienteId = cli.clienteId WHERE imov.clienteId = :clienteId AND imov.imovelStatus = :imovelStatus AND imov.imovelTermino >= :data ORDER BY imov.imovelTermino ASC LIMIT '.$inicio.','.$maximo; //Pego os dados para que preciso try{ $query_pegaAtivos = $conecta->prepare($sql_pegaAtivos); $query_pegaAtivos->bindValue(':clienteId',$clienteId,PDO::PARAM_STR); $query_pegaAtivos->bindValue(':imovelStatus',$imovelStatus,PDO::PARAM_STR); $query_pegaAtivos->bindValue(':data',$data,PDO::PARAM_STR); $query_pegaAtivos->execute(); $resultado_pegaAtivos = $query_pegaAtivos->fetchAll(PDO::FETCH_ASSOC); }catch(PDOexception $error_pegaAtivos){ echo 'Erro ao pegar ativos'.$error_pegaAtivos->getMessage(); } //Monto a Tabela com os dados foreach($resultado_pegaAtivos as $resAtivos){ $anuncioId = $resAtivos['imovelId']; $nomeCliente = $resAtivos['nome']; $anuncioTitulo = $resAtivos['imovelTitulo']; $anuncioInicio = $resAtivos['imovelCadastro']; $anuncioFinal = $resAtivos['imovelTermino']; $anuncioVisitas = $resAtivos['imovelVisitas']; $anuncioStatus = $resAtivos['imovelStatus']; //Código para mudar as linhas da Tabela autoincremento. $i++; if($i % 2 == 0){ //Cor para toda vez que a linha for par $cor = 'style="background: #F5FFFA"'; }else{ //Cor para toda vez que a linha for impar $cor = 'style="background: #B4EEB4;"'; } ?> <tr <?php echo $cor;?>> <td align="center"><?php echo $clienteId ;?></td> <td align="center"><?php echo $anuncioId ;?></td> <td align="left"> <?php echo $anuncioTitulo ;?></td> <td align="center"><?php echo date('d/m/Y',strtotime($anuncioInicio));?></td> <td align="center"> <form name="analisar" action="painel.php?exe=admin-imoveis/pendentes_change&anuncio=<?php echo $anuncioId;?>" enctype="multipart/form-data" method="post" > <input type="hidden" name="imovelId" value="<?php echo $anuncioId;?>" /> <input type="submit" name="executar" id="executar" value="Analisar Anúncio" /> </form> </td> </tr> <?php } //Fechar o 1.Foreach ?> Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Novembro 22, 2016 Remazela, Pegando o que o Anderson falou, acho que ficaria mais ou menos assim: Creio que seja isso mesmo... Remazela, Pegando o que o Anderson falou, acho que ficaria mais ou menos assim: Compartilhar este post Link para o post Compartilhar em outros sites
Remazela 6 Denunciar post Postado Novembro 22, 2016 Amigos Deus os abençoa por sua paciência, atenção e ajuda. Grato, Renato Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Novembro 22, 2016 Beleza!! Abraço Compartilhar este post Link para o post Compartilhar em outros sites
Raffael Dornelles Jardim 3 Denunciar post Postado Novembro 22, 2016 Abraço Remazela! Compartilhar este post Link para o post Compartilhar em outros sites