Jump to content

Recommended Posts

  Olá pessoal, estou com um problema relativamente simples! mas sou novo em banco de dados e php então não consegui resolver. Estou construindo um sistema de registro e login há um certo tempo, meu professor ainda não ensinou e não ensina muito bem então decidi aprender sozinho por tutoriais na internet ._. então achei um tutorial legal, segui todos os passos e está tudo funcionando! porém, agora quero exibir os dados registrados, porém não sei como fazer isso, quero exibir em específico o nome do usuário. Lembrando que sou novo nesse assunto então desconsiderem minha maneira de programar kkk

 

================================================================================================================================

Código php:

<?php

class Usuario
{
    private $pdo;
    public $msgErro = "";
    public function conectar($nome, $host, $usuario, $senha)
    {
        global $pdo;
        global $msgErro;
        try {
        $pdo = new PDO("mysql:dbname=".$nome.";host=".$host,$usuario,$senha);    
        } catch (PDOException $e) {
            $msgErro = $e->getMessage(); 
        }
    return $conectar;    
    }

    public function cadastrar($nome, $telefone, $email, $senha)
    {
        global $pdo;
        //verificar se já existe email cadastrado 
        $sql = $pdo->prepare("SELECT id_usuario from usuarios where email = :e");
        $sql->bindValue(":e",$email);
        $sql->execute();
        if($sql->rowCount() > 0)
        {
            return false; // ja esta cadastrado
        }
        else 
        {
             //caso não, cadastrar 
             $sql = $pdo->prepare("INSERT INTO usuarios (nome,telefone,email,senha) VALUES (:n, :t, :e, :s)");
             $sql->bindValue(":n",$nome);
             $sql->bindValue(":t",$telefone);
             $sql->bindValue(":e",$email);
             $sql->bindValue(":s",md5($senha));
             $sql->execute();
             return true; 
        }     
        
    }
    public function logar($email, $senha)
    {
        global $pdo;
        //verificar se  o email e senha estao cadastrados, se sim  
        $sql = $pdo->prepare("SELECT id_usuario from usuarios where email = :e and senha = :s");
        $sql->bindValue(":e",$email);
        $sql->bindValue(":s",md5($senha));
        $sql->execute();
        if($sql->rowCount() > 0)
        {
           //entrar no sistema (sessao)
           $dado = $sql->fetch();
           session_start();
           $_SESSION['id_usuario'] = $dado['id_usuario'];
           return true; //logado com sucesso 
        }
        else
        {
           return false;//nao foi possível logar
        }
        //entrar no sistema (sessao)
    }
}

?>

 

================================================================================================================================

Código html:

<!-- verificação se está logado -->
<?php 
session_start(); 
if(!isset($_SESSION['id_usuario']))

header("location: index.php"); 
exit; 
}
else{    
    include ('CLASSES/usuarios.php');
    require_once 'CLASSES/usuarios.php';
    $consulta = "SELECT nome from usuarios"; //aqui estava tentando puxar os dados por um tutorial aleaório


}
?> 

<html lang="pt-br">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="CSS/estilouser.css" type="text/css" media="screen">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> 
<title> Ak_Ray Projects </title>
</head> <body bgcolor="#B3D1F7">


<div class="navbar">
<a href="#home">Meu</a>
<a href="#news">Projetos</a>
<a href="#newss">Novidades</a>
<a href="sair.php" style="position: relative;left:1020px;">Sair</a>
<!--<a href="sair.php">Sair</a>-->
</div>

<div class="branco"> 
<h2>
  <center>
   <font color="#20A1C6">
    Criação e Desenvolvimento de Jogos<br>Ak_Ray
   </font>
  </center>
 </h2>

<div class="titlee">
<strong>The Amazing word of Bimo</strong>
<div class="contt">
<center><img src="IMG/FOTOJOGO.png" width="150" style="border-radius: 20px;"></center>
<a href=\"bimo.netlify.com\"><img class="animacao" src="IMG/button.png" width="40"></a>
</div>
</div><br>
The Amazing Word of Bimo foi um Jogo criado em 2019, inspirado na franquia de jogos de <strong>Super Mario World.</strong>
O jogo está em versão de desenvolvimento e está sendo produzido e alterado
constantemente. 

</div>

<?php  echo con;  ?> // exibindo só de teste


</body></html>

 

================================================================================================================================

Obs caso precisem: 

nome do banco de dados:  projeto_login

host: localhost

usuario: root

senha: ""

tabela criada: usuarios

tutoriais assistidos: 

 

Share this post


Link to post
Share on other sites

Primeiramente cuidado para não aprender da forma errada!

13 horas atrás, Ak_Ray disse:

então decidi aprender sozinho por tutoriais na internet

 

Bom o que irá fazer para trazer os resultados é dar um select na tabela que deseja, assim como está fazendo. Então é só executar um fetchAll nos dados.

Exemplo:

$sql = $pdo->prepare("SELECT * FROM usuarios");
$sql->execute();
$dados = $sql->fetchAll(PDO::FETCH_ASSOC);
if($sql->rowCount()) {
    echo "<pre>";
    var_dump($dados);
    echo "</pre>";
}

Nesse caso é todos os dados da tabela "usuarios", mas você pode buscar por ídices expecíficos também através de bind ou statements.

 

 

Eu preparei um tópico aqui no iMasters para ajudar quem se adentra no PDO, pode ser útil para você nesse começo.

https://forum.imasters.com.br/topic/565800-crud-introdução-a-pdo/

 

Share this post


Link to post
Share on other sites
4 horas atrás, Omar~ disse:

Primeiramente cuidado para não aprender da forma errada!

 

Bom o que irá fazer para trazer os resultados é dar um select na tabela que deseja, assim como está fazendo. Então é só executar um fetchAll nos dados.

Exemplo:


$sql = $pdo->prepare("SELECT * FROM usuarios");
$sql->execute();
$dados = $sql->fetchAll(PDO::FETCH_ASSOC);
if($sql->rowCount()) {
    echo "<pre>";
    var_dump($dados);
    echo "</pre>";
}

Nesse caso é todos os dados da tabela "usuarios", mas você pode buscar por ídices expecíficos também através de bind ou statements.

 

 

Eu preparei um tópico aqui no iMasters para ajudar quem se adentra no PDO, pode ser útil para você nesse começo.

https://forum.imasters.com.br/topic/565800-crud-introdução-a-pdo/

 

 

Opa obrigado amigo por esta ajuda! Acabei de ler o seu tópico sobre PDO, agora tenho um pouco mais de noção do que estou fazendo :D. Não entendi muito bem esta passagem do seu tópico: "

$update->execute(['username' => 'Chapolin', 'userlogin' => 'Chiquinha', 'userid' => 1]);

Creio que talvez seja por isso que ainda esteja com problemas, adicionei a linha de código que você me passou e me apareceu isso: 

 

Notice: Undefined variable: pdo in C:\xampp\htdocs\Sistema de Cadastro beta0.1\AreaPrivada.php on line 53

Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\xampp\htdocs\Sistema de Cadastro beta0.1\AreaPrivada.php:53 Stack trace: #0 {main} thrown in C:\xampp\htdocs\Sistema de Cadastro beta0.1\AreaPrivada.php on line 53

 

Claro tentei entender várias vezes, fazer de várias formas e não obtive sucesso, se puder me ajudar novamente serei muito grato :D 

Share this post


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

Notice: Undefined variable: pdo in C:\xampp\htdocs\Sistema de Cadastro beta0.1\AreaPrivada.php on line 53

Isso é porque a variável pdo não existe!

Logo ela deve ser criada para instancia da classe PDO. Se ela não foi criada ou ouve erro ao criar a instancia irá gerar esse erro.

 

 

19 horas atrás, Ak_Ray disse:

Não entendi muito bem esta passagem do seu tópico: "


$update->execute(['username' => 'Chapolin', 'userlogin' => 'Chiquinha', 'userid' => 1]);

Aqui é subjetivo.... Enfim basicamente é passar um array com os índices esses serão os mesmos do statement e os valores de cada índice é os dados a manipular.

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 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.