Jump to content

Recommended Posts

Olá eu tenho tentado criar uma plantaforma que faça login e registro com php mysqli e ajax porém toda vez q tento fazer login ja com um usuario cadastro no banco de dados ele não funciona aparece que ta dando erro, porém não identifiquei o erro, e o registro também alguém poderia me ajudar a desenvolver?

meu arquivo valida para login;

Citar

<?php
    session_start(); 
        //Incluindo a conexão com banco de dados   
    include_once("config/conexao.php");    
    //O campo usuário e senha preenchido entra no if para validar
    
        $email = $_POST['email']; //Escapar de caracteres especiais, como aspas, prevenindo SQL injection
        $senha = $_POST['senha'];
    
if ((!$email) || (!$senha)){

echo 0;    //Responde erro
echo "Por favor, todos campos devem ser preenchidos!";

}else{


$sql = (

"SELECT * FROM clientes
WHERE email='{$email}'
AND senha='{$senha}'
AND termos='1'"

);
//$sqlquery = mysqli_query($conn, $sql);

//$login_check = mysqli_num_rows($sqlquery);

//if ($login_check > 0){

//while ($row = mysqli_fetch_array($sqlquery)){

//foreach ($row AS $key => $val){

//$$key = stripslashes( $val );

//}

$_SESSION['id'] = $id;

$sql2 = (

"UPDATE clientes SET data_ultimo_login = now()
WHERE id ='{$id}'"

);

mysqli_query ($conn, $sql2);

echo 1;    //Responde sucesso
//header("Location: ../index");

}

}else{

echo 0;    //Responde erro
echo "Você não pode logar-se! Este usuário e/ou senha não são válidos!<br />
Por favor tente novamente!";

}

}

?>

    
<!--        //Buscar na tabela usuario o usuário que corresponde com os dados digitado no formulário
        $result_usuario = "SELECT * FROM clientes WHERE email = '$email' && senha = '$senha' LIMIT 1";
        $resultado_usuario = mysqli_query($conn, $result_usuario);
        $resultado = mysqli_fetch_assoc($resultado_usuario);
        
        //Encontrado um usuario na tabela usuário com os mesmos dados digitado no formulário
        if(isset($resultado)){
            $_SESSION['uemail'] = $resultado['email'];
            //$dados = mysqli_fetch_array($conn, $result_usuario);
            //$_SESSION['uid'] = $dados['id'];
            
               //header("Location: index.php");
            //}
        //Não foi encontrado um usuario na tabela usuário com os mesmos dados digitado no formulário
        //redireciona o usuario para a página de login
        }else{    
            //Váriavel global recebendo a mensagem de erro
            $_SESSION['loginErro'] = "Usuário ou senha Inválido";
            header("Location: index.php#login");
        }
        }
?>-->

 

meu arquivo validareg.php valida o registro:

Citar

<?
//if ( isset( $_POST ) && !empty ( $_POST ) ) {
//    print_r( $_POST );
//}
    include_once("config/conexao.php");

    $unome = $_POST['nome'];
    $usobre = $_POST['sobrenome'];
    $uemail = $_POST['email'];
    $usenha = MD5($_POST['senha']);
    $ucpf = $_POST['cpf'];
    $unascimento = $_POST['nascimento'];
    //echo "$nome_usuario - $email_usuario";        
    
    $result_usuario = "INSERT INTO clientes(nome, sobrenome, email, senha, cpf, nascimento) VALUES ('$unome','$usobre','$uemail','$usenha','$ucpf','$unascimento')";
    $resultado_usuario = mysqli_query($conn, $result_usuario);
    
    if(mysqli_affected_rows($conn) != 0){
                echo '
                    <script type="text/javascript">
                        alert("Usuario cadastrado com Sucesso.");
                    </script>
                ';    
            }else{
                echo '
                    <script type="text/javascript">
                        alert("O Usuario não foi cadastrado com Sucesso.");
                    </script>
                ';    
            }
?>
                 <!--   <META HTTP-EQUIV=REFRESH CONTENT = '0;URL=http://localhost/aula/cadastro.php'>-->

arquivo formulario do registro:

Citar

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<!--<script>
<!--$(function(){
<!--    $('.form').submit(function() {
    <!--    $.ajax({
        <!--    url: 'validareg.php',
            <!--type: 'POST',
        <!--    data: $('.form').serialize();
    <!--    });
<!--    });
<!--});-->
<!--$(function() {
    $(".form").submit(function() {
        var nome = $("#nome");
        var nomePost = nome.val();
        var sobrenome = $("#sobrenome");
        var sobrenomePost = sobrenome.val();
        var email = $("#email");
        var emailPost = email.val();
        var senha = $("#senha");
        var senhaPost = senha.val();    
        var cpf = $("#cpf");
        var cpfPost = cpf.val();    
        var nascimento = $("#nascimento");
        var nascimentoPost = nascimento.val();    
        $.post("validareg.php", {nome: nomePost, sobrenome: sobrenomePost, email: emailPost, senha: senhaPost, cpf: cpfPost, nascimento: nascimentoPost},
        function(data){
         $("#resposta").html(data);
         }
         , "html");
    });
});
</script>-->

<div class="content">
                                    <header class="align-center">
                                        <p>Registrando-se</p>
                                    </header>
<form id="formregister" method="post" action="">

            <label>Nome</label>
            <input type="text" id="nome" name="nome" maxlength='50' placeholder="Nome" required><br/>
            <label>Sobrenome</label>
            <input type="text" id="sobrenome" name="sobrenome" maxlength='50' placeholder="Sobrenome" required></br>
            <label>Email</label>
            <input type="email" id="email" name="email" maxlength='50' placeholder="Email" required></br>
            <label>Senha</label>
            <input type="password" id="senha" name="senha" maxlength='50' placeholder="Senha" required></br>
            <label>CPF</label>
            <input type="text" id="cpf" maxlength='11' name='cpf' placeholder="CPF" required><br/>
            <label>Data de nascimento</label>
            <input type="date" id="nascimento" name="nascimento" placeholder="19/05/2000" required><br/>                    
           </br><footer class="align-center"> <button class="button alt" type="submit">Avançar</button></footer>
        </form>
</div>

parte do arquivo de login: 

Citar

<script>        
        $(document).ready(function() {
    $("a#ajax").click(function() { // inclui todos os links com id="ajax"
        $("#ajaxcontent").load($(this).attr("href")); // carrega o conteúdo da página em HREF dentro da DIV #ajaxContent (id="ajaxContent")
        return false; // remove a ação do link para navegar até a página do HREF, pois ela já foi carregada na DIV
    });
});
</script>
            <div id="login">
        <!-- One -->
            <section id="one" class="wrapper style2">
                <div class="inner">
                    <div class="grid-style">

                        <div>
                            <div class="box" id="ajaxcontent">
                                <div class="content">
                                    <header class="align-center">
                                        <p>Entre já</p>
                                        <h2>Não sou um usúario registrado <a id="ajax" href="register.php">Registrar-se</a></h2>
                                    </header>
                                    <form id="formlogin" method="POST" action="">
            <label>Email</label>
            <input type="email" id="email" name="email" placeholder="Email" required><br/>
            <label>Senha</label>
            <input type="password" id="senha" name="senha" placeholder="Senha" required>
           </br><footer class="align-center"> <button class="button alt" type="submit">Acessar</button></footer>
        </form>
        <div id="errolog">ERRO</div>
        <div id="loginlog">Logado</div>
        <center><p style="background-color:red;border-radius:15px;width:auto;">
            <?php if(isset($_SESSION['loginErro'])){
                echo $_SESSION['loginErro'];
                unset($_SESSION['loginErro']);
            }?>
        </p></center>
        <p>
            <?php 
            if(isset($_SESSION['logindeslogado'])){
                echo $_SESSION['logindeslogado'];
                unset($_SESSION['logindeslogado']);
            }
            ?>
        </p>
        </div>
                            </div>
                        </div>

e por fim o ajaxlogin que faz a função ajax

Citar

$(document).ready(function(){
    $('#errolog').hide(); //Esconde o elemento com id errolog
    $('#loginlog').hide(); //Esconde o elemento com id loginlog
    $('#formlogin').submit(function(){     //Ao submeter formulário
        var email=$('#email').val();    //Pega valor do campo email
        var senha=$('#senha').val();    //Pega valor do campo senha
        $.ajax({            //Função AJAX
            url:"valida.php",            //Arquivo php
            type:"post",                //Método de envio
            data: "email="+email+"&senha="+senha,    //Dados
               success: function (result){            //Sucesso no AJAX
                        if(result==1){                        
                            $('#errolog').hide(1000); //Esconde o elemento com id errolog
                            $('#loginlog').show(850);        //Informa que está logado
                            $('#formlogin').hide(500);        //ESCONDE FORMULARIO DE LOGIN
                            setTimeout("document.location = 'http://am.autec.net.br/'",3100); //location.href='https://www.webcarlos.com.br/'    //Redireciona
                        }else{
                            $('#errolog').show(850);        //Informa o erro
                        }
                    }
        })
        return false;    //Evita que a página seja atualizada
    })
})

$(document).ready(function(){
    $('#formregister').submit(function(){     //Ao submeter formulário
        var nome=$('#nome').val();    //Pega valor do campo email
        var sobrenome=$('#sobrenome').val();    //Pega valor do campo usuario
        var email=$('#email').val();    //Pega valor do campo senha
        var senha=$('#senha').val();    //Pega valor do campo senha
        var cpf=$('#cpf').val();    //Pega valor do campo senha
        var nascimento=$('#nascimento').val();    //Pega valor do checkbox termos
        $.ajax({            //Função AJAX
            url:"validareg.php",            //Arquivo php
            type:"post",                //Método de envio
            data: "email="+email+"&senha="+senha,    //Dados
               success: function (result){            //Sucesso no AJAX
                        if(result==1){                        
                            $('#errolog').hide(1000); //Esconde o elemento com id errolog
                            $('#loginlog').show(850);        //Informa que está logado
                            $('#formlogin').hide(500);        //ESCONDE FORMULARIO DE LOGIN
                            setTimeout("document.location = 'http://am.autec.net.br/'",3100); //location.href='https://www.webcarlos.com.br/'    //Redireciona
                        }else{
                            $('#errolog').show(850);        //Informa o erro
                        }
                    }
        })
        return false;    //Evita que a página seja atualizada
    })
})

 

Share this post


Link to post
Share on other sites

Não pode existis dados duplicados para esquema de LOGIN. Você só pode ter 2 logins iguais por exemplo.

O correto é você "travar" isso no cadastro do User, se já tiver o login cadastrado escolha outro. O mesmo é válido para o e-mail do cadastro. Defina colunas do mysql que armazena o email e login como UNIQUE e trate isso no PHP.

  • Obrigado! 1

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

  • Similar Content

    • By rogerblower
      Pessoal estou usando PHPMailer para enviar email com dados do formulário e ao mesmo tempo gravar no mysql.
      O email esta sendo enviado mas não esta gravando no banco, não sei onde estou errando segue meu código.
       
      <?php include 'header.php'; ?> <div class="container"> <div class="row"> <div class="col-md-12"> <div class="row"> <?php date_default_timezone_set('Etc/UTC'); if(isset($_POST['btnsave'])) { $id_cliente = $_POST['id_cliente']; $produto = $_POST['produto']; $medida = $_POST['medida']; $msg = $_POST['msg']; $qtd = $_POST['qtd']; $aprovado = $_POST['aprovado']; $status = $_POST['status']; $data_orca = date('Y-m-d'); $imgFile = $_FILES['user_image']['name']; $tmp_dir = $_FILES['user_image']['tmp_name']; $imgSize = $_FILES['user_image']['size']; if(empty($imgFile)){ $errMSG = "Please Select Image File."; } else { $upload_dir = 'imagens/orcamento/'; // upload directory $imgExt = strtolower(pathinfo($imgFile,PATHINFO_EXTENSION)); // get image extension // valid image extensions $valid_extensions = array('jpeg', 'jpg', 'png', 'gif'); // valid extensions // rename uploading image $userpic = rand(1000,1000000).".".$imgExt; // allow valid image file formats if(in_array($imgExt, $valid_extensions)){ // Check file size '5MB' if($imgSize < 5000000) { move_uploaded_file($tmp_dir,$upload_dir.$userpic); } else{ $errMSG = "Desculpe seu arquivo é muito grande."; } } else{ $errMSG = "Desculpe, somente arquivos JPG, JPEG, PNG e GIF são aceitos."; } } require_once('includes/init.php'); if(!isset($errMSG)){ $addv=$pdo->prepare("INSERT INTO orcamento (id_cliente, produto, medida, qtd, msg, aprovado, status, data_orca, img) VALUE(?,?,?,?,?,?,?,?,?)"); $addv->bindValue("1",$id_cliente); $addv->bindValue("2",$produto); $addv->bindValue("3",$medida); $addv->bindValue("4",$qtd); $addv->bindValue("5",$msg); $addv->bindValue("6",$aprovado); $addv->bindValue("7",$status); $addv->bindValue("8",$data_orca); $addv->bindValue("9",$userpic); if($addv->execute()) { $successMSG = "Orçamento enviado com sucesso..."; } else { $errMSG = "Erro ao enviado Orçamento..."; } } $path_file = $upload_dir.$userpic; /////////////////////////////////////////////////////////////////////////////////////////////// require 'phpmailer/PHPMailerAutoload.php'; //Create a new PHPMailer instance $mail = new PHPMailer; //Tell PHPMailer to use SMTP $mail->isSMTP(); $mail->CharSet = 'UTF-8'; //Enable SMTP debugging // 0 = off (for production use) // 1 = client messages // 2 = client and server messages $mail->SMTPDebug = 0; //Ask for HTML-friendly debug output $mail->Debugoutput = 'html'; //Set the hostname of the mail server $mail->Host = "smtp.uhserver.com"; //Set the SMTP port number - likely to be 25, 465 or 587 $mail->Port = 587; //Whether to use SMTP authentication $mail->SMTPAuth = true; //Username to use for SMTP authentication $mail->Username = "contato@xxxxx.com.br"; //Password to use for SMTP authentication $mail->Password = "xxxxxx"; //Set who the message is to be sent from $mail->setFrom('contato@xxxxx.com.br', 'xxxxx'); //Set an alternative reply-to address $mail->addReplyTo('no-reply@xxxxx.com.br', 'xxxxx'); //Set who the message is to be sent to $mail->addAddress('contato@xxxxx.com.br', 'xxxxx'); //Mantenha-o simples - não use HTML $mail->isHTML(true); $id = $_SESSION['id_do_produto']; $add_pro = $pdo->prepare("SELECT * FROM produtos WHERE id = '$id' ORDER BY nome_produto ASC"); $add_pro->execute(); while($row=$add_pro->fetch(PDO::FETCH_ASSOC)){ extract($row); $assunto = ''.$row['nome_produto'].''; } //Set the subject line $mail->Subject = 'Solicitação de orcamento de: '.$assunto.''; $mail->Body = ' <html bgcolor="#E6E6E6"> <table able width="60%" align="center" style="background-color:#ffffff; border:1px solid #cccccc;"> <tr style="background-color:#ffffff; border: 1px solid #cccccc;"> <td><a href="http://xxxxx.com.br" target="_blank"><img src="http://xxxxx.com.br/imagens/logo.png" width="300" height="80" /></a></td> </tr> <tr> <td colspan="3"><hr / style="color:#cccccc;"></td> </tr> <tr style="background-color:#ffffff; border: 1px solid #cccccc;"> <td style="color:blue;"><strong> '.$assunto.'</strong></td> </tr> <tr> <td colspan="3"><hr / style="color:#cccccc;"></td> </tr> <tr> <td colspan="2">'.$msg.'</td> </tr> <tr> <td colspan="3"><hr / style="color:#cccccc;"></td> </tr> <tr> <td colspan="3" style="font-size:9px;">Roda pé do formulário</td> </tr> </table> </html> '; //$mail->AddAttachment($path_file); //Read an HTML message body from an external file, convert referenced images to embedded, //convert HTML into a basic plain-text alternative body //$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); //Replace the plain text body with one created manually //$mail->AltBody = 'This is a plain-text message body'; //Attach an image file //$mail->addAttachment('examples/images/phpmailer_mini.png'); //send the message, check for errors if (!$mail->send()) { //echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Mensagem Enviada!"; header('Location: index.php'); } } ?> <br/><br/> <table class="table table-bordered table-responsive"> <form method="post" enctype="multipart/form-data" class="form-horizontal"> <tr> <td><label class="control-label">Produto:</label></td> <?php $id = $_SESSION['id_do_produto']; $add_pro = $pdo->prepare("SELECT * FROM produtos WHERE id = '$id' ORDER BY nome_produto ASC"); $add_pro->execute(); while($row=$add_pro->fetch(PDO::FETCH_ASSOC)){ extract($row); echo'<td><input class="form-control" type="text" name="produto" value="'.$row['nome_produto'].'"/></td>'; } ?> </tr> <tr> <td><label class="control-label">Cliente:</label></td> <td><input class="form-control" type="text" name="" value="<?php echo $_SESSION['c_nome'] ?>"/> <input class="form-control" type="hidden" name="id_cliente" value="<?php echo $_SESSION['c_id'] ?>"/></td> </tr> <tr> <td><label class="control-label">Medida: <i style="font-size: 11px">Altura X Largura</i></label></td> <td><input class="form-control" type="text" name="medida" placeholder="0,00 x 0,00" /></td> </tr> <tr> <td><label class="control-label">Quantidde:</label></td> <td><input class="form-control" type="text" name="qtd" /></td> </tr> <tr> <td><label class="control-label">Mensagem.</label></td> <td><textarea class="form-control" type="text" name="msg" rows="3" placeholder="Mensagem"></textarea></td> </tr> <input class="form-control" type="hidden" name="aprovado" value="Não" /> <input class="form-control" type="hidden" name="status" value="Aberto" /> <tr> <td><label class="control-label">Envie seu Layout.</label></td> <td><input class="input-group" type="file" name="user_image" accept="image/*" /></td> </tr> <tr> <td colspan="2" style="text-align:center; padding: 30px;"><button type="submit" name="btnsave" class="btn btn-primary"> <span class="glyphicon glyphicon-save"></span> &nbsp; Enviar Orçamento &nbsp; </button> </td> </tr> </form> </table> </div><!-- /.row --> </div><!-- /.col-md-12 --> </div><!-- /.row --> </div><!-- /.container --> <?php include 'footer.php'; ?>  
    • By Hlameiras
      Olá!
       
      Estou tentando desenvolver um formulário dinâmico em PHP, em que o utilizador ao clicar num determinado botão possa acrescentar campos de INPUTs ou SELECTs no mesmo.
      Encontrei este exemplo que funciona mas tem limitações:
      https://www.formget.com/how-to-dynamically-add-form-fields-and-increment-name-attribute-of-the-field/
       
      O problema é que os campos adicionais são gerados pelo lado do cliente (Javascript) e não pelo lado do servidor, logo no caso de gerar SELECTS que vão buscar informação a uma Base de Dados, as opções de escolha não são apresentadas. Qual será a melhor solução para resolver este problema?
       
      Agradecido!
       
       
       
    • By Rluz2019
      Avaliação Discursiva 4 - Calouros
      Questão A
      Na programação de computadores é muito comum o uso de estruturas iterativas para resolver problemas que envolvem coleções de dados (vetores, matrizes, listas). Considerando o seguinte trecho de código (notado em C#), que define a classe Funcionario:
      class Funcionario
      {
            public  int  Matricula  { get; set;  }
            public  string  Nome  { get; set;  }
            public static List< Funcionario> Funcionarios  {get; set;  }
      }
      Crie, na classe Funcionário:
      1.   Um método estático, denominado GerarLista, que cria e retorna uma lista com 10 registros de funcionários, sendo que:
      a)   A lista gerada será utilizada para preencher o atributo Funcionários, que é uma lista;
      b)   A matrícula deve ser um número inteiro sequencial (de 1 a 10);
      c)   O nome deve ser uma sequência de caracteres gerada aleatoriamente (podem ser nomes sorteados de uma lista pré-armazenada ou uma sequência qualquer de caracteres).
      2.   Um método estático, denominado BuscarFuncionario, que recebe um nome (string) por parâmetro, localiza o funcionário pelo nome na lista, e retorna a matrícula (int) do funcionário encontrado.
      ·       Caso o nome não seja encontrado, o retorno para a matrícula deve ser -1 (menos um).
       
      Meu Código!

      Estou com dificuldades de realizar algum poderia me ajudar a estruturar:
       CODIGO PRINCIPAL
      using System;
      //Using - Biblioteca do C#
      //___________________________________________________________//
      //           Aluno: Rodrigo Fernando da Luz                  //
      //           Faculdade - Fael                                //
      //___________________________________________________________//
      //Aula 02: Atributos e Métodos Unidade 04
      namespace Avaliação_Discursiva_4
      {
          class Program
          {
              static void Main(string[] args) // algoritmo Função ao metodo main
              {
                  GerarLista();
                  Console.ReadKey();
              }
              static void GerarLista()
              {
                  //Instanciar a Classe
                  Funcionario Nome_funcionario = new Funcionario(); //variavel #Nome_funcionario#
                  //Passar o conteudo que vai ser digitado para As Variaveis!!!
         
                  string[] Nomes = new string[10];
                  
                  Console.WriteLine("");
                  Console.WriteLine(" Lista gerada será utilizada para preencher o atributo Funcionários, que é uma lista:");
                  Console.WriteLine("");
                  char[] Xmatricula = new char[10];//Arry
                  char[] Xnome = new char[10];
                  int i;
                  //string Xnomes;
           
                  Console.WriteLine("");
                  Console.WriteLine("Digite Seu Nome: ");
                  Console.WriteLine("");
                  for (i = 0; i < 10; i++)
                  { //Contador 1 até 10.
                      Console.WriteLine("Informe Nome do  " + (i + 1) + " ª Funcionário:");
                      Xnome = char.Parse(Console.ReadLine());
                   
                  }
                  Console.WriteLine("");
                  Console.WriteLine("Lista de Funcionarios: ");
                  Console.WriteLine("");
                  for (i = 0; i < 10; i++)
                  {//Escreve na Tela o Numero 1 ate 10 e Nome do Funcionario.
                      Console.WriteLine("A Matricula: " + (i + 1) + "  ª Funcionario:  " + Nomes);
                  }
              }
          }
      }
       
       
      // CRIADO A CLASSE FUNCIONARIO:
      using System;
      using System.Collections.Generic;
      using System.Text;
      namespace Avaliação_Discursiva_4
      {
          //Atributos da minha Classe
          class Funcionario
          {
              //metodos Get e Set
              //Get Vai Pegar
              //Set vai Gravar
              public string Nome { get; set; }
              
              public int Matricula { get; set;}
              public string Materia { get; set; }
              public string Notas { get; set; }
              public static List<Funcionario> Funcionarios { get; set; }
              public void setNome(string Nome) //metodos //Set vai Gravar
              {
                  this.Nome = Nome;
              }
              public string getNome(string Nome) //metodos //Get vai Pegar
              {
                  return this.Nome;
              }
              public int getMatricula()//metodos //Get vai Pegar
              {
                  return this.Matricula;
              }
          }
      }
       
       
       
      Alguém pode me ajudar?
    • By rtavix
      Pessoal eu sou iniciante na programação, e irei detalhar todo o processo resumidamente que estou fazendo no momento. Eu tenho uma pagina web que realiza uma consulta através de uma determinada data. Tenho um dropdow e dentro dele eu tenho a Opção Mês base e Período, caso eu selecione o Mês base devo carregar um campo de data informando o mes e o ano e em seguida eu tenho dois radio button escrito a opção Sim e Não e caso escolho fazer o filtro por periodo, deverei carregar um capo de data automaticamente para informar um determinado periodo preenchendo a data de inicio dd/MM/yyyy até a data final dd/MM/yyyy, após escolher Mês base ou por Período dentro do dropDow e carregar o campo de data automaticamente onde o usuário informará a data, consequentemente o mesmo irá escolher se a opção é de Liberação Sim ou Não (radio button) acho que é assim que se escreve rs, caso ele realiza sua escolha, deverá carregar os seguintes dados na grid:
      AnoMêsBase, inscEstadual, razaoSocial e NME_ABREV.
      Observação: No meu banco de dados a coluna AnoMesBase está dessa forma por exemplo 032018, sempre irá vir dessa forma, a data nunca será formatado o campo.
      Porém não estou conseguindo trazer as informações que está no banco de dados.
      Até agora implementei as seguintes classes:
       
      using System; using System.Collections.Generic; using System.Linq; using System.Text; using NHibernate.Mapping.Attributes; namespace Dominio.Domain { [Serializable] [Class(Table = "DAP_EMPRESA", NameType = typeof(Empresa), Lazy = false)] public class Empresa { private int codigo; private string inscEstadual; private string razaoSocial; private string nomeAbreviado; private DateTime dataCadastro; private string cnpj; [Id(Column = "ID_EMPRESA", Name = "Codigo", Generator = "increment", UnsavedValue = "0")] public int Codigo { get { return codigo; } set { codigo = value; } } [Property(Column = "INSC_ESTADUAL", Lazy = false)] public string InscEstadual { get { return inscEstadual; } set { inscEstadual = value; } } [Property(Column = "RAZAO_SOCIAL", Lazy = false)] public string RazaoSocial { get { return razaoSocial; } set { razaoSocial = value; } } [Property(Column = "NME_ABREV", Lazy = false)] public string NomeAbreviado { get { return nomeAbreviado; } set { nomeAbreviado = value; } } [Property(Column = "DAT_CADASTRO", Lazy = false)] public DateTime DataCadastro { get { return dataCadastro; } set { dataCadastro = value; } } [Property(Column = "CNPJ", Lazy = false)] public string Cnpj { get { return cnpj; } set { cnpj = value; } } } } using NHibernate.Mapping.Attributes; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Dominio.Domain { [Serializable] [Class(Table = "DAP_FINANCIAMENTO", NameType = typeof(Financiamento), Lazy = false)] public class Financiamento { private int codigo; // private Empresa empresa; // private decimal vlrFinanciamento;// private string inscEstadual;// private string anoMesBase; // private string anoMesFaturamento; // private decimal vlrICMSPrevisto; // private decimal totalRecolhimento; // private DateTime datUltimoRecolhimento; // private decimal totalLiberacao; // private DateTime datLiberacao; // private DateTime datUltimaLiberacao; // private decimal totalDevolucao; // private string descObservacao; // private DateTime dataDevolucao; // private DateTime dataCadastramento; // private int mesBase; // private int mesFat; // [Id(Column = "ID_FINANCIAMENTO", Name = "Codigo", Generator = "increment", UnsavedValue = "0")] public int Codigo { get { return codigo; } set { codigo = value; } } [ManyToOne(0, Name = "Empresa", ClassType = typeof(Empresa), Column = "ID_EMPRESA", Lazy = Laziness.False)] public Empresa Empresa { get { return empresa; } set { empresa = value; } } [Property(Column = "VLR_FINANCIAMENTO", Lazy = false)] public decimal VlrFinanciamento { get { return vlrFinanciamento; } set { vlrFinanciamento = value; } } [Property(Column = "INSC_ESTADUAL", Lazy = false)] public string InscEstadual { get { return inscEstadual; } set { inscEstadual = value; } } [Property(Column = "ANO_MES_BASE", Lazy = false)] public string AnoMesBase { get { return anoMesBase; } set { anoMesBase = value; } } [Property(Column = "ANO_MES_FATURA", Lazy = false)] public string AnoMesFaturamento { get { return anoMesFaturamento; } set { anoMesFaturamento = value; } } [Property(Column = "VLR_ICMS_PREVISTO", Lazy = false)] public decimal VlrICMSPrevisto { get { return vlrICMSPrevisto; } set { vlrICMSPrevisto = value; } } [Property(Column = "TOTAL_RECOLHIDO", Lazy = false)] public decimal TotalRecolhimento { get { return totalRecolhimento; } set { totalRecolhimento = value; } } [Property(Column = "DATA_ULTIMO_RECOL", Lazy = false)] public DateTime DatUltimoRecolhimento { get { return datUltimoRecolhimento; } set { datUltimoRecolhimento = value; } } [Property(Column = "TOTAL_LIBERACAO", Lazy = false)] public decimal VlrTotalLiberacao { get { return totalLiberacao; } set { totalLiberacao = value; } } [Property(Column = "DAT_ULTIMA_LIBERACAO", Lazy = false)] public DateTime DatUltimaLiberacao { get { return datUltimaLiberacao; } set { datUltimaLiberacao = value; } } [Property(Column = "TOTAL_DEVOLUCAO", Lazy = false)] public decimal TotalDevolucao { get { return totalDevolucao; } set { totalDevolucao = value; } } [Property(Column = "DSC_OBSERVACAO", Lazy = false)] public string DescObservacao { get { return descObservacao; } set { descObservacao = value; } } [Property(Column = "DAT_LIBERACAO", Lazy = false)] public DateTime DatLiberacao { get { return datLiberacao; } set { datLiberacao = value; } } [Property(Column = "MES_BASE", Lazy = false)] public int MesBase { get { return mesBase; } set { mesBase = value; } } } } using Dominio.Domain; using NHibernate; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Dominio.DataAccess { public class FinanciamentoDAO { public static List<Financiamento> ListarTodos() { try { ISession sessao = NhibernateHelper.SessaoCorrente; Financiamento financiamento = new Financiamento(); ICriteria criterios = sessao.CreateCriteria(financiamento.GetType()); return criterios.List<Financiamento>().ToList(); } catch (Exception e) { throw new Exception(e.ToString()); } } public static void InserirOuAtualizar(Financiamento financiamento) { ISession sessao = NhibernateHelper.SessaoCorrente; ITransaction transacao = sessao.BeginTransaction(); try { sessao.SaveOrUpdate(financiamento); transacao.Commit(); } catch (Exception e) { transacao.Rollback(); throw new Exception(e.ToString()); } } public static void Deletar(Financiamento financiamento) { ISession sessao = NhibernateHelper.SessaoCorrente; ITransaction transacao = sessao.BeginTransaction(); try { sessao.Delete(financiamento); transacao.Commit(); } catch (Exception e) { transacao.Rollback(); throw new Exception(e.ToString()); } } internal static Financiamento BuscarPorInscEstadual(string InscEstadual) { try { ISession sessao = NhibernateHelper.SessaoCorrente; Financiamento financiamento = new Financiamento(); ICriteria criterios = sessao.CreateCriteria(financiamento.GetType()); criterios.Add(NHibernate.Criterion.Expression.Eq("InscEstadual", InscEstadual)); return criterios.UniqueResult() as Financiamento; } catch (Exception e) { throw new Exception(e.ToString()); } } internal static Financiamento BuscarPorIDFinanciamento(int COD_FINANCIAMENTO) { try { ISession sessao = NhibernateHelper.SessaoCorrente; Financiamento financiamento = new Financiamento(); ICriteria criterios = sessao.CreateCriteria(financiamento.GetType()); criterios.Add(NHibernate.Criterion.Expression.Eq("Codigo", COD_FINANCIAMENTO)); return criterios.UniqueResult() as Financiamento; } catch (Exception e) { throw new Exception(e.ToString()); } } internal static List<Financiamento> ListarPorEmpresa(int ID_EMPRESA) { ISession sessao = NhibernateHelper.SessaoCorrente; Financiamento financiamento; try { financiamento = new Financiamento(); ICriteria criterios = sessao.CreateCriteria(financiamento.GetType()); criterios.CreateAlias("Empresa", "e").Add(NHibernate.Criterion.Expression.Eq("e.Codigo", ID_EMPRESA)); return criterios.List<Financiamento>().ToList(); } catch (Exception e) { throw new Exception(e.ToString()); } } } } using Dominio.DataAccess; using Dominio.Domain; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Dominio.APL { public class AplFinanciamento { public void gravar(Financiamento financiamento) { FinanciamentoDAO.InserirOuAtualizar(financiamento); } public void deletar(Financiamento financiamento) { FinanciamentoDAO.Deletar(financiamento); } public List<Financiamento> listarTodas() { return FinanciamentoDAO.ListarTodos(); } public Financiamento buscarPorInscEstadual(string InscEstadual) { return FinanciamentoDAO.BuscarPorInscEstadual(InscEstadual); } public Financiamento buscarPorIDFinanciamento(int IDFinanciamento) { return FinanciamentoDAO.BuscarPorIDFinanciamento(IDFinanciamento); } public List<Financiamento> listarFinanciamentoPorEmpresa(int idEmpresa) { return FinanciamentoDAO.ListarPorEmpresa(idEmpresa); } } }  
      Esse é meu .cs porém não estou conseguindo fazer funcionar, porque me retorna tudo null ao compilar o código e desconfio que a minha lógica esteja errada.
       
      using Dominio.APL; using Dominio.Domain; using dap.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; namespace dapView.Relatorios.RelFinancLiberadoMesBase { public partial class RelFinancLiberadoMesBase : System.Web.UI.Page { private AplFinanciamento aplFinanciamento = new AplFinanciamento(); private List<Financiamento> financiamento = new List<Financiamento>(); private static bool keyJS { get; set; } protected void Page_Load(object sender, EventArgs e) { keyJS = true; // CarregarComboLiberado(); if (!IsPostBack) { GerenciadorUsuarioPagina.funcao = "RELFIN01"; //btnImprime.Visible = false; } } //Carrega os dados relacionando o tipo de liberação por data //private void CarregarComboLiberado() // { // ddlLiberado.Items.Add("---------Selecione----------"); // ddlLiberado.Items.Add("Mês Base"); // ddlLiberado.Items.Add("Período"); // } protected void btnConsultar_Click(object sender, EventArgs e) { CarregaRelatorio(); } protected void ddlLiberado_SelectedIndexChanged(object sender, EventArgs e) { } public void CarregaRelatorio() { financiamento = aplFinanciamento.listarTodas(); var dados = (from financiamento in financiamento where DateTime.Compare(financiamento.DatUltimaLiberacao, Convert.ToDateTime(txtMesBase.Text.ToString())) == 0 group financiamento by new { financiamento.Codigo, financiamento.Empresa.InscEstadual, financiamento.Empresa.RazaoSocial, financiamento.Empresa.Cnpj, financiamento.Empresa.NomeAbreviado, financiamento.AnoMesBase } into g select new { codigo = g.Key.Codigo, AnoMesBase = g.Key.AnoMesBase, InscricaoEstadual = g.Key.InscEstadual, RazaoSocial = g.Key.RazaoSocial, Cnpj = g.Key.Cnpj, NmeAbreviado = g.Key.NomeAbreviado }).OrderBy(o => o.codigo).ToList(); if (dados.Count() > 0) { //Carrega os dados da gridview de consulta gv.DataSource = dados; gv.DataBind(); gv.UseAccessibleHeader = true; gv.HeaderRow.TableSection = TableRowSection.TableHeader; //Carrega os dados da gridview usada para imprimir gvImprimir.DataSource = dados; gvImprimir.DataBind(); gvImprimir.UseAccessibleHeader = true; gvImprimir.HeaderRow.TableSection = TableRowSection.TableHeader; //mostra botão imprimir //btnImprime.Visible = true; } else { if (keyJS) chamarSwal("aviso", "Não foram encontrados financiamentos para essa data."); // btnImprime.Visible = false; } } private void chamarSwal(string tipo, string mensagem) { var body = (HtmlGenericControl)(Page.Master.FindControl("body")); body.Attributes["onload"] = $"{tipo}(\"{mensagem}\")"; keyJS = false; } } } Esse é o meu html
       
      <%@ Page Title="" Language="C#" MasterPageFile="~/Content/MasterPage.Master" AutoEventWireup="true" CodeBehind="RelFinanciamento.aspx.cs" Inherits="dapView.Relatorios.RelFinancLiberadoMesBase.RelFinancLiberadoMesBase" %> <asp:Content ID="head" ContentPlaceHolderID="headPlaceHolder" runat="server"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css"> <script src="../JsRelatorioFinancLiberadoMesBase.js"></script> <script> var d = "16/09/2019" // date received from card function filldate() { document.getElementById('cardexpirydate').value = d.split('/').reverse().join("-"); } </script> <script> function exibir_ocultar(val) { if (val.value == 'LiberadoMesBase') { document.getElementById('periodo').style.display = 'none'; document.getElementById('MesBase').style.display = 'block'; document.getElementById('periodo').style.display = 'none'; } else { document.getElementById('periodo').style.display = 'block'; document.getElementById('MesBase').style.display = 'none'; } }; </script> </asp:Content> <asp:Content ID="ContentForm" ContentPlaceHolderID="formPlaceHolder" runat="server"> <asp:ScriptManager runat="server"></asp:ScriptManager> <div class="row"> <div class="col-md-12"> <div class="content-box"> <div class="box-title">Financiamento</div> <div class="box-body"> <div id="triage"> <label for="category">Liberado:</label> <div class="form-inline"> <div class="col-md-2"> <label class="radio-inline control-label"> <input checked="checked" name="TaskLog.TaskTypeId" type="radio" value="2"> SIM </label> <label class="radio-inline control-label"> <input id="TaskLog_TaskTypeId" name="TaskLog.TaskTypeId" type="radio" value="1"> NÃO </label> </div> <div id="category-select"> <select onchange="exibir_ocultar(this)" class="col-md-3 form-control" id="category" name="category" style="width: auto"> <option value="LiberadoMesBase">-----------Selecione----------</option> <option value="LiberadoMesBase">Mês Base</option> <option value="LiberadoPeriodo">Período</option> </select> </div> </div> <br /> <div class="row"> <div class="form-group"> <label class="radio-inline control-label"> <input type="radio" name="optradio" checked>Sim</label> <label class="radio-inline"> <input type="radio" name="optradio">Não</label> </div> <br /> <div id="periodo"> <asp:TextBox type="Month" Style="width: 10%" runat="server" ClientIDMode="Static" class="form-control " ID="TextBox1" MaxLength="30"></asp:TextBox> <br /> </div> <br /> <div id="MesBase"> <asp:TextBox type="date" Style="width: 10%" runat="server" ClientIDMode="Static" class="form-control " ID="TextBox2" MaxLength="30"></asp:TextBox> <br /> </div> </div> </div> <div class="row"> <div class="content-box content-box-tabela" id="tabela" style="visibility: hidden"> <asp:GridView class="col-md-12" CssClass="tabela-padrao tabela-padrao-borda dataTable" runat="server" AutoGenerateColumns="False" PageSize="9" ID="gv" Width="100%"> <Columns> <asp:TemplateField HeaderText="Empresa" ItemStyle-HorizontalAlign="Left"> <ItemTemplate> <asp:Label ID="lblCodigo" runat="server" Text='<%# Bind("Codigo") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Valor Financiamento" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="lblValorFinanciamento" runat="server" Text='<%# Bind("ValorFinanciamento") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Inscricao Estadual" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="lblInscricaoEstadual" runat="server" Text='<%# Bind("InscricaoEstadual") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Ano mes base" ItemStyle-HorizontalAlign="Right"> <ItemTemplate> <asp:Label ID="lblAnoMesBase" runat="server" Text='<%# Bind("AnoMesBase") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> <PagerStyle CssClass="" HorizontalAlign="Center" /> </asp:GridView> </div> </div> </div> <div class="box-footer"> <button runat="server" class="btn btn-padrao" id="btnConsultar" onserverclick="btnConsultar_Click">Consultar</button> </div> </div> <%--IMPRIMIR--%> <div class="container" style="visibility: hidden" id="ConteinerImprimir"> <div class="table" runat="server" style="margin: 0 auto; width: auto;"> <div class="row"> <div class="col-lg-12"> <img src="http://internet.sefaz.es.gov.br/imagens/topo_brasao.png" alt=""> <br> <br> </div> </div> <div class="row" runat="server" style="border-bottom: 2px solid #B0BEC5"> <div class="col-lg-5"> <strong>Financiamento</strong> </div> <div class="col-lg-5" style="text-align: end;" runat="server" id="totalRegistros"></div> </div> </div> <div class="row"> <div class="content-box content-box-tabela"> <asp:GridView class="col-md-12 grid" runat="server" AutoGenerateColumns="False" PageSize="9" ID="gvImprimir" GridLines="None" RowStyle-HorizontalAlign="Center" Width="100%"> <Columns> <asp:TemplateField HeaderText="Empresa" ItemStyle-HorizontalAlign="Left"> <ItemTemplate> <asp:Label ID="lblCodigo" runat="server" Text='<%# Bind("Codigo") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Valor Financiamento" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="lblValorFinanciamento" runat="server" Text='<%# Bind("ValorFinanciamento") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Inscricao Estadual" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="lblInscricaoEstadual" runat="server" Text='<%# Bind("InscricaoEstadual") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Ano mes base" ItemStyle-HorizontalAlign="Right"> <ItemTemplate> <asp:Label ID="lblAnoMesBase" runat="server" Text='<%# Bind("AnoMesBase") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> <PagerStyle CssClass="" HorizontalAlign="Center" /> </asp:GridView> </div> </div> </div> </div> </div> </asp:Content>  
      Se alguém puder me ajudar, agradeço.
    • By Hállex da Silva Costa
      Alguém poderia me dizer qual a forma mais correta de se utilizar uma classe seguindo as regras e padrões da Orientação a Objeto. Digamos que eu tenha uma classe Abstrata que fará a conexão com o banco de dados, eu crio uma outra classe que herda dessa classe abstrata, o correto seria utilizar os atributos da classe usando Exemplo 1 ou Exemplo 2?
      OBS: se eu usar o Exemplo 1 (que utiliza o parent) ou Exemplo 2 (que utilza o $this) o resultado dos dois é o mesmo como no print abaixo mostra.
      P.S.: Estou pergutando para não acabar fazendo gambiarra.
       
      Codígo Exemplo 1:
      <?php require_once 'db.abstract_class.php'; final class DB extends AbstractDB { public function __construct(String $dbtype, String $host, Int $port, String $dbname, String $charset, String $user, String $pass){ return parent::__construct($dbtype, $host, $port, $dbname, $charset, $user, $pass); } final function Connect(){ $dbtype = parent::getDBType(); $host = parent::getHost(); $port = parent::getPort(); $dbname = parent::getDBName(); $charset = parent::getCharset(); $dbh = new PDO($dbtype . ":host={$host};port={$port}dbname={$dbname};charset{$charset}", parent::getUser(), parent::getPass()); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, TRUE); $dbh->setAttribute(PDO::ATTR_PERSISTENT, TRUE); parent::setConnection($dbh); return parent::getConnection(); } final function Disconnect(){} final function selectDB(){} final function insertDB(){} final function updateDB(){} final function deleteDB(){} } ?> Codígo Exemplo 2:
      <?php require_once 'db.abstract_class.php'; final class DB extends AbstractDB { public function __construct(String $dbtype, String $host, Int $port, String $dbname, String $charset, String $user, String $pass){ $this->setDBType($dbtype); $this->setHost($host); $this->setPort($port); $this->setDBName($dbname); $this->setCharset($charset); $this->setUser($user); $this->setPass($pass); } final function Connect(){ $dbtype = $this->getDBType(); $host = $this->getHost(); $port = $this->getPort(); $dbname = $this->getDBName(); $charset = $this->getCharset(); $dbh = new PDO($dbtype . ":host={$host};port={$port}dbname={$dbname};charset{$charset}", $this->getUser(), $this->getPass()); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, TRUE); $dbh->setAttribute(PDO::ATTR_PERSISTENT, TRUE); $this->setConnection($dbh); return $this->getConnection(); } final function Disconnect(){} final function selectDB(){} final function insertDB(){} final function updateDB(){} final function deleteDB(){} } ?> Resultado:

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.