Ir para conteúdo
Carcleo

Erro na listagem com PDO

Recommended Posts

Estou tentando aprender PDO mas estou tendo dificuldades.

Tenho 3 arquivos:

Planos.php

    <?php
      
      namespace PLANOS;
      
      use TABELAS\Tabelas;
      
      require_once "Tabelas.php";
      
      class Planos extends Tabelas {      
          
          public function __construct ($_conexao, $_tabela) {
             
             parent::__construct ($_conexao, $_tabela);
             
         }
          
      }
    
    ?>

Tabelas.php

    <?php
    
     namespace TABELAS;
      
     abstract class Tabelas {
         
         private $conexao;    
         private $tabela; 
         private $ultimoCadastrado;
         
         public function __construct($_conexao, $_tabela) {
             
             $this->conexao = $_conexao;
             
             $this->tabela = $_tabela;
             
         }
         
         public function cadastrar (array $objeto) {
             
             $parametros = $valores = "";
             
             foreach ($objeto as $objeto=>$valor):
             
               $parametros.= $objeto.",";         
               $valores.= "'".$valor."',";
               
             endforeach;     
             
             $parametros = substr($parametros,0, -1);
             $valores = substr($valores,0, -1);
             
             $sql = "INSERT INTO ".$this->tabela." (".$parametros.") VALUES (".$valores.")";
             
             $query = $this->conexao->prepare($sql);
             
             $execucao = $query->execute();
             
             $this->ultimoCadastrado = $this->conexao->lastInsertId();
             
             return $execucao;
             
             
         }
         
         public function ultimoIdCadastrado () {    
              
             return $this->ultimoCadastrado;
             
         }
         
         
         public function editar (array $objeto, $id) {
             
             $str = "";
             
             foreach ($objeto as $objeto=>$valor):
             
               $str .= $objeto ."='". $valor."',";         
               
             endforeach;
             
             $str = substr($str, 0, -1);
             
             $sql = "UPDATE ".$this->tabela." SET ".$str." WHERE id".ucfirst($this->tabela)."=".$id;
             
             $query = $this->conexao->prepare($sql);
             
             return $query->execute();
              
         }
         
         public function bloquear ($id, $bloqueado) {         
         
             $sql = "UPDATE ".$this->tabela." SET bloqueado = '".$bloqueado."' WHERE id".$this->tabela." = ".$id;
             
             $query = $this->conexao->prepare($sql);
             
             return $query->execute();
             
             
         }
    
         public function excluir ($id) {         
         
             $sql = "DELETE FROM ".$this->tabela." WHERE id".$this->tabela." = ".$id;
    
             $query = $this->conexao->prepare($sql);        
             
             return $query->execute(); 
             
         }
         
         public function listar () {
             
             $sql = "SELECT  FROM ".$this->tabela;
             
             $query = $this->conexao->prepare($sql);
             
             $query->execute();
             
             return $query->fetch( PDO::FETCH_ASSOC );
             
         }
         
         public function listarId ($id = null) {
             
             $sql = "SELECT  FROM ".$this->tabela;
             
             if ($id != null) $sql .= " WHERE id".ucfirst($this->tabela)."=".$id;
             
             $query = $this->conexao->prepare($sql);    
                  
             return $query->execute();
             
         }
         
         public function listarParametros ($where) {
             
             $sql = "SELECT  FROM ".$this->tabela." ".$where;
             
             $query = $this->conexao->prepare($sql);
             
             return $query->execute();
             
         }
         
     }
     
    ?>

Index.php

    <?php 
     
      ini_set("display_errors",true);
      ini_set("display_startup_erros",1);
      error_reporting(E_ALL | E_NOTICE | E_STRICT);
      
      use PLANOS\Planos;
      use TABELAS\Tabelas;
    
      $conexao = new PDO('mysql:host=localhost;dbname=funeraria2', 'root', 'mysql');
       
      $objeto = array (
          
          "tipo" => 's',
          "nome" => "Carlos",
          "login" => "caca",
          "senha" => "1234",
          "bloqueado" => "n"
          
      ); 
       
      $objeto2 = array (
          "idAdministradores" => 3,
          "tipo" => 's',
          "nome" => "Castro",
          "login" => "abcd",
          "senha" => "4321",
          "bloqueado" => "s"    
      ); 
    
      require_once "Planos.php";
       
      $planos = new Planos($conexao, "administradores");
      
      echo $planos->cadastrar($objeto) ? 1 : 2;
      echo "<br />";
      echo $planos->ultimoIdCadastrado();
      echo "<br />";
      echo $planos->editar($objeto2, 3) ? 1 : 2;
      echo "<br />";
      echo $planos->bloquear(3, 's') ? 1 : 2;
      echo "<br />";
      echo $planos->excluir(4) ? 1 : 2;
      echo "<br />";
      
    
      print "<pre>";
      print_r($planos->listar());
      print "</pre>";
    
      echo $planos->listar() ? 1 : 2;
      echo "<br />";
      echo $planos->listarId(1) ? 1 : 2;
      echo "<br />";
      echo $planos->listarParametros("WHERE nome = 'Carlos'") ? 1 : 2;
      echo "<br />";
    
    ?>

Quando rodo esse script recebo o erro abaixo:

    Fatal error:  Uncaught Error: Class 'TABELAS\PDO' not found in D:\Trabalhos\host\htdocs\crud\Tabelas.php:102
    Stack trace:
    #0 D:\Trabalhos\host\htdocs\crud\index.php(47): TABELAS\Tabelas->listar()
    #1 {main}
      thrown in D:\Trabalhos\host\htdocs\crud\Tabelas.php on line 102

Mas não consigo achar que erro é esse!

 

Engraçado é que só não está fazendo leitura. Mas gravação, exclusão, edição, normal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em teoria, com o autoload bem construído, não precisaria do require.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por vinicius.david
      Gostaria que fosse possível encontrar produtos pela marca no Opencart 2.3.0.2. Quando a pessoa digitar no buscar a marca do produto, ele deveria mostrar todos os produtos que pertencem aquela marca. Em catalog/model/catalog/product.php já existe por padrão a função de procurar por fabricante: 

      if (!empty($data['filter_manufacturer_id'])) {                 $sql .= " AND p.manufacturer_id = '" . (int) $data['filter_manufacturer_id'] . "'";             }
      Mas ela não faz a função de procurar por marca. Alguém já encontrou alguma solução na internet para este caso?
    • Por manolegal
      Bom dia.
      Recebo em meu formulário um dado em forma de url.
      Extraio desta url o CNPJ da empresa. A seguir faço uma pesquisa para verificar se este CNPJ está em minha base de dados, sendo que se estiver trago dados da empresa para preenchimento do campo empresa do formulário.
      Estando a empresa no BD, consigo trazer os dados corretamente, porém estes dados não passados para o formulário para serem o valor inicial do campo empresa.
      $cnpj_numero = 12345678910; $Sql_cnpj = "SELECT id_empresa as id_empresa_bd_ext, upper(empresas.empresa) as fornecedor_bd_ext FROM empresas WHERE empresas.cnpj = '$cnpj_numero'"; $Resultado_cnpj = executa($Sql_cnpj); while ($linha_cnpj = pg_fetch_array($Resultado_cnpj)){ $empresa_bd_ext = $linha_cnpj["fornecedor_bd_ext"]; $forn_hid_bd_ext = $linha_cnpj["id_empresa_bd_ext"]; } echo "Fornecedor BD: $empresa_bd_ext - $forn_hid_bd_ext<br><hr>"; // Está mostrando dados corretamente // Definir valor a ser recebido pelo campo Empresa do Formulário if ($cnpj_numero != ""){ $empresa = $empresa_bd_ext; $forn_hid = $forn_hid_bd_ext; }else{ // Caso url não tenha trazido CNPJ, atribuo outro valor $empresa = $empresa_bd; $forn_hid = $forn_hid_bd; } O campo empresa do formulário não está recebendo o valor de $empresa. Considerando que exista um CNPJ, onde pode estar o problema?
    • Por edvaldo123
      Olá para todos, preciso de um código em PHP ou HMTL que mostre cotações de moedas, pra colocar em um site de notícias. Vou deixar um link abaixo onde tem exatamente o que preciso, porém queria remover algumas linhas desse código para não identificar seu site de origem.

      http://www.precododolar.com/widgets/cotacao.php
    • Por violin101
      Caros amigos
       
      Gostaria de tirar uma dúvida com os amigos.
       
      No Codeiginter tem como visualizar um arquivo .PDF dentro do sistema ?
       
      Por exemplo:
             o usuário realizou um download do arquivo --> DadosEmpresa.pdf
       
      Quando clicar em cima do arquivo, tem como visualizar em uma página o arquivo ?   E como faria ?
       
      Grato,
       
      Cesar
    • Por Ivana_Silva
      Olá a todos que estão lendo!
       
      Preciso de uma função PHP que filtre 2 padrões de campos a partir do caractere barra(|), preservando a linha.
       
      Em uma caixa de texto vou colar valores assim:
      0001|qwerty
      0002|091234
      0003|09164867
      0004|ab12312
      ...
      A caixa de texto:
      <form id="form" name="form" method="post" action=""> <textarea name="lista" type="text" id="lista" cols="48" rows="5" size="600" /></textarea> <br /> <br /> <button type="submit">Separar</button> </form> <?php ?> Quando eu clicar no botão Separar, preciso que o código filtre e mostre apenas as linhas que, após barra " | " possuam números inteiros de 6 e 8 dígitos(sem letras, símbolos ou pontos).
       
      Exemplo:
      Dados colados na caixa de texto:
      0001|qwerty
      0002|091234
      0003|09164867
      0004|ab12312
       
      Dados filtrados após clicar no botão Separar:
      0002|091234
      0003|09164867
       
      Filtrou apenas os campos que após a barra "|" possuem 6 e 8 dígitos(Nem mais nem menos), não é pra filtrar campos com letras ou números e letras, se tiver letra após a barra já descarta... É pra Filtrar e mostrar apenas as linhas que possuem 6 e 8 dígitos após a barra.
      Agradecida se alguém puder ajudar!
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.