Jump to content
lealdl

[RESOLVIDO]Selecionar registro de uma tabela e enviar por e-mail

Recommended Posts

lealdl

Pessoal, boa noite! Estou retornando ao forum após um tempo me dedicando aos estudos. Estou finalizando um sistema de reservas para uma pousada de um cliente.que está em fase final, mas ao testar, me deparei com um erro ao qual não consigo resolver...

Em um formulário, criei uma rotina para selecionar o quarto com um radiobutton e enviar os dados por e-mail. Mas o que acontece é que só está sendo enviado o último quarto que foi cadastrado, qualquer que seja o selecionado.

Segue meu código:

<?php include_once("sistema/restrito_all.php");?>
<?php include_once("sistema/validar_user.php");?>
<?php include_once("header.php");?>

<div id="local">
   <div class="caminho">Onde Estou: *Reservas » Painel de Controle & Solicitar Reserva</div><!--caminho-->
   <div class="welcome">Olá <?php echo $clienteNome;?>| Hoje <?php echo date('d/m/Y H:i').'h';?> | <a href="deslogar.php">Deslogar</a></div><!--welcome-->
</div><!--local-->

   
<div id="content">

<?php include_once("menu.php");?>     

  
   
<?php include_once("sistema/carregando.php");?>

<span style="font:16px 'Trebuchet MS', Arial, Helvetica, sans-serif; color:#069;"><strong>2: Solicitando reserva...</strong>  </span>
 <div id="content_conteudo">


<div id="content">
<table width="780"  border="0" cellspacing="8" cellpadding ="10"> 

  <tr style="background:#666; color:#FFF; font=12px Arial,Helvetica,sans-serif;font-weight:bold;">
    <td width="68">QUARTO</td>
    <td width="60">STATUS</td>
    <td width="58">ANDAR</td>
    <td width="58">DIÁRIA</td>
    <td width="100 ">DESCRIÇÃO</td>
    <td width="20 ">SELECIONAR</td>
  
    
  </tr>
  
<p>
  <?php include_once("menu.php");?>     
        
  <?php include_once("sistema/carregando.php");?>
 
    
  <?php
$sql_select = 'SELECT * FROM quartos where quarto_status ="DISPONÍVEL" order by quarto_numero';

try{
    $query_select = $conecta->prepare($sql_select);
    $query_select->execute();
    $resultado_query = $query_select->fetchAll(PDO::FETCH_ASSOC);
    
    $count = $query_select->rowCount(PDO::FETCH_ASSOC);
    
}catch (PDOexception $error_select){
   echo 'Erro ao selecionar '.$error_select->getMessage();
}
    
    if($count == '0'){
      echo 'Nada encontrado';     
    }else{
    
    foreach($resultado_query as $res){
        
        $idPost = $res['quarto_numero'];
        $campo3 = $res['quarto_status'];
        $campo4 = $res['quarto_andar'];
        $campo5 = $res['quarto_valor'];
        $campo6 = $res['quarto_desc'];
        
    
    
        ?>
      
        <tr style="background:#FFF; color:#069;font=10px Arial,Helvetica,sans-serif;">
    <td><?php echo $idPost;?></td>
    <td><?php echo $campo3;?></td>
    <td><?php echo $campo4;?></td>
    <td><?php echo $campo5;?></td>
    <td><?php echo $campo6;?></td>
   <?php echo"<td align =center><input type=radio value=$idPost name=sel[ ]></td>";?>
  </tr>
  <?php
        }
        }
  ?>
        </table>

  <html>
  <head>
  <meta charset="utf-8">
  <title>Formulário </title>
  </head>
 
<body>

<?php
if (isset($_POST['BTEnvia'])){
 
    //REMETENTE --> ESTE EMAIL TEM QUE SER VALIDO DO DOMINIO
     //====================================================
    $email_remetente = "contato@tecnihard.com.br"; // deve ser um email do dominio
    //====================================================
 
 
    //Configurações do email, ajustar conforme necessidade
    //====================================================
    $email_destinatario = "meuemaill@gmail.com"; // qualquer email pode receber os dados
    $email_reply = "$email";
    $email_assunto = "Contato formmail";
    //====================================================
 
 
    //Variaveis de POST, Alterar somente se necessário
    //====================================================
    $nome = $_POST['nome'];
    $email = $_POST['email'];
    $telefone = $_POST['telefone'];
     $mensagem = $_POST['mensagem'];
    $Quarto = $_POST['$idPost'];
    $entrada = $_POST['entrada'];
    $saida = $_POST['saida'];
    //====================================================
 
    //Monta o Corpo da Mensagem
    //====================================================
    $email_conteudo = "Nome = $nome \n"; 
    $email_conteudo .= "Email = $email \n"; 
    $email_conteudo .=  "Telefone = $telefone \n";
    $email_conteudo .=  "Mensagem = $mensagem \n";
    $email_conteudo .=  "Quarto = $idPost \n";
    $email_conteudo .=  "entrada = $entrada \n";
    $email_conteudo .=  "saida = $saida \n";
    
     //====================================================
 
    //Seta os Headers (Alerar somente caso necessario)
    //====================================================
    $email_headers = implode ( "\n",array ( "From: $email_remetente", "Reply-To: $email_reply", "Subject: $email_assunto","Return-Path:  $email_remetente","MIME-Version: 1.0","X-Priority: 3","Content-Type: text/html; charset=UTF-8" ) );
    //====================================================
 
 
    //Enviando o email
    //====================================================
    if (mail ($email_destinatario, $email_assunto, nl2br($email_conteudo), $email_headers)){
        echo "</b>E-Mail enviado com sucesso!</b> Obrigado por procurar a Clinihard*. <br>Será analizada a disponibilidade do quarto selecionado e entraremos em contato o mais breve possível. " ; 
    }
      else{
        echo "</b>Falha no envio do E-Mail!</b>";
    }
    //====================================================
}    
?>
 
 
<form action="<? $PHP_SELF; ?>" method="POST">
    <p>
        Nome:<br />
        <input type="text" size="30" name="nome">
    </p>
 
    <p>
        E-mail:<br />
        <input type="text" size="30" name="email">
    </p>
 
  <p>
        Telefone:<br />
        <input type="text" size="20" name="telefone">
    </p>
 
<p>
        Mensagem: (Indique suas preferências, ex: andar, solteiro ou casal, número de pessoas, etc...)<br />
    <textarea name="mensagem" id="mensagem" cols="35" rows="5"></textarea>
</p>
<p>
   
 </p>
Previsão/Entrada:
 
 <date-util format="dd/MM/yyyy"></date-util> 
<input type="date"name="entrada"value="">
Previsão/Saída:
 
 <date-util format="dd/MM/yyyy"></date-util>
<input type="date"name="saida"value=""></p>

<input type="submit" name="BTEnvia" method="post" value="Enviar" action="">
        <input type="reset" name="BTApaga" value="Apagar">
 
</form>

</body>
</html>
 
      
   </div><!--conteudo-->

</div><!--contet-->
</html>     
<?php include_once("footer.php");?>

Já analisei o código uma porção de vezes, mas não consigo achar onde estou errando. Se alguém puder me dar uma luz, agradeço. Abraços, 

Luciano Leal

Edited by lealdl
Dúvida resolvida

Share this post


Link to post
Share on other sites
lealdl
Em 30/09/2017 às 17:05, yoda disse:

<?php echo"<td align =center><input type='radio' value='$idPost' name='quarto'></td>";?>

$Quarto = $_POST['quarto'];

$email_conteudo .=  "Quarto = $Quarto \n";

 

Obrigado por responder, colega Yoda!

Fiz a mudança no código, mas agora não envia nenhuma informação do quarto.

Envia todas as outras informações, menos o número do quarto!

 

Nome = Luciano 
Email = lucianodleal@gmail.com 
Telefone = 41999999999 
Mensagem = teste 
Quarto = 
entrada = 2017-10-02 
saida = 2017-10-03

 

Share this post


Link to post
Share on other sites
lealdl
36 minutos atrás, yoda disse:

$Quarto = $_POST['quarto'];

Antes disto tens de ir à base de dados, porque o que vem no POST é o ID do quarto, mais nada.

Amigo, ainda não entendi, mas vou olhar com calma. Não entendi como ir à base de dados como falou para mim, pois já há um sql_conect aberto com um select * from quartos.

Desculpe-me pela ignorância técnica minha, talvez seja falta de atenção! Não sei como  "buscar " no banco antes do post.

Share this post


Link to post
Share on other sites
lealdl
Em 02/10/2017 às 16:45, lealdl disse:

Amigo, ainda não entendi, mas vou olhar com calma. Não entendi como ir à base de dados como falou para mim, pois já há um sql_conect aberto com um select * from quartos.

Desculpe-me pela ignorância técnica minha, talvez seja falta de atenção! Não sei como  "buscar " no banco antes do post.

Olá! Ainda não consegui "pegar" o valor do radiobutton. Não sei onde eu faço a solicitação ao banco. Se puder me dar a dica... 

Abraços!

Share this post


Link to post
Share on other sites
marlonwg

Bom dia ! no lugar de voe colocar na consulta sql voçe poderia colocar ela mais espeifica tipo ( Select IdQuarto,Quarto From Quartos ) eu nao sei como esta seu codigo mas voçe preciza

chamar a tabela inteira do Quartos ? ou so alguns campos especificos.


Eu mesmo

Share this post


Link to post
Share on other sites
lealdl
2 horas atrás, marlonwg disse:

Bom dia ! no lugar de voe colocar na consulta sql voçe poderia colocar ela mais espeifica tipo ( Select IdQuarto,Quarto From Quartos ) eu nao sei como esta seu codigo mas voçe preciza

chamar a tabela inteira do Quartos ? ou so alguns campos especificos.

Bom dia, colega marlonwg! Na verdade não preciso de todos os campos, somente o quarto_numero e o quarto_status. Em uma outra página, já consta a tabela inteira para consulta do usuário.

Vou tentar, depois posto o resultado. Obrigado, abraços! 

Share this post


Link to post
Share on other sites
lealdl
2 horas atrás, lealdl disse:

Bom dia, colega marlonwg! Na verdade não preciso de todos os campos, somente o quarto_numero e o quarto_status. Em uma outra página, já consta a tabela inteira para consulta do usuário.

Vou tentar, depois posto o resultado. Obrigado, abraços! 

Realmente,marlonwg, fiz o teste, mas continua enviando somente o último quarto cadastrado no banco. Já estou perdendo o sono, pois não sei o que está errado com meu código. 

Share this post


Link to post
Share on other sites
lealdl
16 horas atrás, marlonwg disse:

Add o codigo ai novamente como voçe fez agora para ver oq acontece.

Troquei a sql, o resto não mudei. 

segue:

<?php
$sql_select = 'SELECT quarto_numero,quarto_status FROM quartos where quarto_status ="DISPONÍVEL" order by quarto_numero';

try{
    $query_select = $conecta->prepare($sql_select);
    $query_select->execute();
    $resultado_query = $query_select->fetchAll(PDO::FETCH_ASSOC);
    
    $count = $query_select->rowCount(PDO::FETCH_ASSOC);
    
}catch (PDOexception $error_select){
   echo 'Erro ao selecionar '.$error_select->getMessage();
}
    
    if($count == '0'){
      echo 'Nada encontrado';     
    }else{
    
    foreach($resultado_query as $res){
        
        $idPost = $res['quarto_numero'];
        $campo3 = $res['quarto_status'];
        $campo4 = $res['quarto_andar'];
        $campo5 = $res['quarto_valor'];
        $campo6 = $res['quarto_desc'];
        
    
    
        ?>
      
        <tr style="background:#FFF; color:#069;font=10px Arial,Helvetica,sans-serif;">
    <td><?php echo $idPost;?></td>
    <td><?php echo $campo3;?></td>
    <td><?php echo $campo4;?></td>
    <td><?php echo $campo5;?></td>
    <td><?php echo $campo6;?></td>
   <?php echo"<td align =center><input type=radio value=$idPost name=sel[]></td>";?>
  </tr>
  <?php
        }
        }
  ?>
        </table>

  <html>
  <head>
  <meta charset="utf-8">
  <title>Formulário </title>
  </head>
 
<body>

<?php
if (isset($_POST['BTEnvia'])){
 
    //REMETENTE --> ESTE EMAIL TEM QUE SER VALIDO DO DOMINIO
     //====================================================
    $email_remetente = "contato@tecnihard.com.br"; // deve ser um email do dominio
    //====================================================
 
 
    //Configurações do email, ajustar conforme necessidade
    //====================================================
    $email_destinatario = "lucianodleal@gmail.com"; // qualquer email pode receber os dados
    $email_reply = "$email";
    $email_assunto = "Contato formmail";
    //====================================================
 
 
    //Variaveis de POST, Alterar somente se necessário
    //====================================================
    $nome = $_POST['nome'];
    $email = $_POST['email'];
    $telefone = $_POST['telefone'];
     $mensagem = $_POST['mensagem'];
    $Quarto = $_POST['$idPost'];
    $entrada = $_POST['entrada'];
    $saida = $_POST['saida'];
    //====================================================
 
    //Monta o Corpo da Mensagem
    //====================================================
    $email_conteudo = "Nome = $nome \n"; 
    $email_conteudo .= "Email = $email \n"; 
    $email_conteudo .=  "Telefone = $telefone \n";
    $email_conteudo .=  "Mensagem = $mensagem \n";
    $email_conteudo .=  "Quarto = $idPost \n";
    $email_conteudo .=  "entrada = $entrada \n";
    $email_conteudo .=  "saida = $saida \n";
    
     //====================================================
 
    //Seta os Headers (Alerar somente caso necessario)
    //====================================================
    $email_headers = implode ( "\n",array ( "From: $email_remetente", "Reply-To: $email_reply", "Subject: $email_assunto","Return-Path:  $email_remetente","MIME-Version: 1.0","X-Priority: 3","Content-Type: text/html; charset=UTF-8" ) );
    //====================================================
 
 
    //Enviando o email
    //====================================================
    if (mail ($email_destinatario, $email_assunto, nl2br($email_conteudo), $email_headers)){
        echo "</b>E-Mail enviado com sucesso!</b> Obrigado por procurar a Clinihard*. <br>Será analizada a disponibilidade do quarto selecionado e entraremos em contato o mais breve possível. " ; 
    }
      else{
        echo "</b>Falha no envio do E-Mail!</b>";
    }
    //====================================================
}    
?>
 
 
<form action="<? $PHP_SELF; ?>" method="POST">
    <p>
        Nome:<br />
        <input type="text" size="30" name="nome">
    </p>
 
    <p>
        E-mail:<br />
        <input type="text" size="30" name="email">
    </p>
 
  <p>
        Telefone:<br />
        <input type="text" size="20" name="telefone">
    </p>
 
<p>
        Mensagem: (Indique suas preferências, ex: andar, solteiro ou casal, número de pessoas, etc...)<br />
    <textarea name="mensagem" id="mensagem" cols="35" rows="5"></textarea>
</p>
<p>
   
 </p>
Previsão/Entrada:
 
 <date-util format="dd/MM/yyyy"></date-util> 
<input type="date"name="entrada"value="">
Previsão/Saída:
 
 <date-util format="dd/MM/yyyy"></date-util>
<input type="date"name="saida"value=""></p>

<input type="submit" name="BTEnvia" method="post" value="Enviar" action="">
        <input type="reset" name="BTApaga" value="Apagar">
 
</form>

 

Share this post


Link to post
Share on other sites
marlonwg

Olha pelo que vi vai depender muito o problema voçe ja tenteu reescrever este trecho de codigo denovo

As vezes quando voçe se perde em um codigo le e rele e nao acha soluçao mesmo Debugando o Mesmo

e mais facil voçe tentar Reescreve-lo este trecho seu do 0 como se nao tivesse feito nada com pacienca mas sem colar deste codigo antigo

começar ele do ZERO MESMO! rsrs assim a hora que estiver escrevendo voçe nota-ra que haja alguma divergencia no codigo , Eu mesmo quando acho divergencias

pego campos parecidos de consultas e comparo para ver aonde esta situada a tal diferença e corrijo ja fiz muito isso. Pq voçe ficar lendo e relendo e nao achar e cansativo e chato

tenta como te falei se nao der resultado pedes denovo ajuda


Eu mesmo

Share this post


Link to post
Share on other sites
lealdl
14 minutos atrás, marlonwg disse:

Olha pelo que vi vai depender muito o problema voçe ja tenteu reescrever este trecho de codigo denovo

As vezes quando voçe se perde em um codigo le e rele e nao acha soluçao mesmo Debugando o Mesmo

e mais facil voçe tentar Reescreve-lo este trecho seu do 0 como se nao tivesse feito nada com pacienca mas sem colar deste codigo antigo

começar ele do ZERO MESMO! rsrs assim a hora que estiver escrevendo voçe nota-ra que haja alguma divergencia no codigo , Eu mesmo quando acho divergencias

pego campos parecidos de consultas e comparo para ver aonde esta situada a tal diferença e corrijo ja fiz muito isso. Pq voçe ficar lendo e relendo e nao achar e cansativo e chato

tenta como te falei se nao der resultado pedes denovo ajuda

Valeu, colega marlonwg! Estava pensando em fazer mesmo isso, mas é um trabalho e tanto (rs). Realmente, usando o mesmo código como "cola" às vezes passamos por cima do erro e nem percebemos. Irei reescrevê-lo, e obrigado pela ajuda. Volto a postar o resultado, sendo ele positivo ou negativo. Abraços,

Luciano D. Leal

Share this post


Link to post
Share on other sites
lealdl
Em 05/10/2017 às 19:55, lealdl disse:

Valeu, colega marlonwg! Estava pensando em fazer mesmo isso, mas é um trabalho e tanto (rs). Realmente, usando o mesmo código como "cola" às vezes passamos por cima do erro e nem percebemos. Irei reescrevê-lo, e obrigado pela ajuda. Volto a postar o resultado, sendo ele positivo ou negativo. Abraços,

Luciano D. Leal

Boa tarde, colega marlonwg! Repensando a rotina de solicitação de reservas, acabei optando por fazer com que a reserva seja enviada para o painel do administrador. Fiz o seguinte: criei uma tabela reservas, contendo os campos id, cliente, email, telefone, quarto, prev_entrada, prev_saida e data_cad. No painel do administrador, logo ao entrar, aparece os dados do cliente, na ordem asc, para que os mais antigos fiquem no topo. 

Agora só falta criar uma rotina para responder a esses e-mails, clicando e um botão "visualizar/responder" e abrir um campo texto para responder. 

Por hora, acho que é só isso. Deixo aqui meu agradecimento. Postarei quando tudo tiver finalizado. Abraços

Share this post


Link to post
Share on other sites
marlonwg

Opa Boa tarde , poxa que legal fico feliz em ajudar ^^ que de tudo certo agora que fez as rotinas e lembre-se que

um algoritmo por mais que voçe reescreva ele nunca ficara igual ao anterior

porque como disse cada vez que você reescreve ele sua mente evolui para uma melhora de dados e opções fazendo sempre o código e as verificações ficarem melhores.

Boa sorte ai abraços.


Eu mesmo

Share this post


Link to post
Share on other sites
lealdl
3 horas atrás, marlonwg disse:

Opa Boa tarde , poxa que legal fico feliz em ajudar ^^ que de tudo certo agora que fez as rotinas e lembre-se que

um algoritmo por mais que voçe reescreva ele nunca ficara igual ao anterior

porque como disse cada vez que você reescreve ele sua mente evolui para uma melhora de dados e opções fazendo sempre o código e as verificações ficarem melhores.

Boa sorte ai abraços.

Obrigado, abraços! 

Share this post


Link to post
Share on other sites
lealdl
Em 09/10/2017 às 17:14, lealdl disse:

Obrigado, abraços! 

Boa noite, pessoal!

Após uma reformulada em meu código e uma mudança de estratégia surgiu uma outra dúvida: 

Faço uma busca pelo nome do cliente em uma tabela "tb_locacoes". O sistema retorna o registro em questão em uma tabela. A dúvida é a seguinte: como faço para editar somente um campo da tabela e alterar somente o registro que necessito?

A tabela retorna o seguinte:

CLIENTE  QUARTO  DIÁRIA  DATA_ENTRADA DATA_SAIDA TAXA . Preciso alterar somente a "DATA_SAIDA". 

Fiz um campo tipo date mas não consigo dar um update na tabela.

Alguém pode me ajudar?

Grato, 

Luciano

Share this post


Link to post
Share on other sites
marlonwg

hummm... Depende porque esta chamada que voçe faz quando voçe gera o UPDATE voçe converte a DATA para outro formato tipo STRING ? 

Geralmente em .net ou C# pode-se fazer a conversão do tipo data em outros tipos se no banco de dados ele e do tipo data converte em string na chamada do UPDATE

para ver.. Em .net ficaria + ou - assim

Sql = ''Update Tb_locacoes Set Data_Saida = (''TxtDataSaida.text'').Tostring Where Cliente = ''Joao''


Eu mesmo

Share this post


Link to post
Share on other sites
lealdl
19 horas atrás, marlonwg disse:

hummm... Depende porque esta chamada que voçe faz quando voçe gera o UPDATE voçe converte a DATA para outro formato tipo STRING ? 

Geralmente em .net ou C# pode-se fazer a conversão do tipo data em outros tipos se no banco de dados ele e do tipo data converte em string na chamada do UPDATE

para ver.. Em .net ficaria + ou - assim

Sql = ''Update Tb_locacoes Set Data_Saida = (''TxtDataSaida.text'').Tostring Where Cliente = ''Joao''

Olá, marlonwg! Obrigado pela expicação. Consegui pegando o cliente pelo id. Ao clicar em "baixas", eu seleciono a que eu quero dar baixa e abre os dados somente daquele hóspede. Daí dá pra editar a data.

Abração, colega!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.