Jump to content
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!

Share this post


Link to post
Share on other sites

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

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 calinthians
      Olá pessoal, estou criando um sistema de portfólios e fiz tudo funcionar sem PHP, quando transformei o sistema em dinâmico não está mais abrindo o modal de cada portfólio qd clica nele, sendo que eu inspecionei a página e está pegando os valores corretos na ID, só não está abrindo mesmo, e outro modal sem o PHP continua abrindo normalmente.
       
       
      <section id="portfolio"> <div class="container"> <div class="text-center"> <h3 class="section-heading">Portfólio</h3> </div>   <ul id="port-group"> <?php while($dado = mysqli_fetch_assoc($consulta) ) { ?> <li> <div class="portfolio-item"> <a href="#portmodal<?php echo $dado['id']; ?>" class="portfolio-link" data-toggle="modal"> <div class="portfolio-hover"> <div class="portfolio-hover-content pagport"> <i class="fa fa-plus fa-3x"></i> </div> </div> <div class="portfolio-responsive idportimg1"> <style>.idportimg1 {background-image: url("img/bg.png")}</style> </div> </a>   <div class="portfolio-caption"> <h5><?php echo $dado['titulo']; ?></h5> <p class="text-muted"><?php echo $dado['subtitulo']; ?></p> </div> </div> </li>   <!-- Portfolio Modal --> <div class="portfolio-modal modal fade" id="portmodal<?php echo $dado['id']; ?>>" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="close-modal" data-dismiss="modal"> <div class="lr"> <div class="rl"> </div> </div> </div> <div class="container"> <div class="row"> <div class="col-lg-2"> </div> <div class="col-lg-8"> <div class="modal-body"> <h3><?php echo $dado['titulo']; ?></h3> <img class="img-responsive img-centered" src="img/portfolio/site1.jpg" alt=""> <p><?php echo $dado['descricao']; ?></p> <img class="img-responsive img-centered" src="img/portfolio/site11.jpg" alt=""> <ul class="list-inline"> <li><?php echo $dado['datax']; ?></li> <li><?php echo $dado['cliente']; ?></li> <li><?php echo $dado['categoria']; ?></li> </ul> <button type="button" class="btn-close" data-dismiss="modal"><i class="fa fa-times"></i> Fechar</button> </div> </div> <div class="col-lg-2"> </div> </div> </div> </div> </div> </div> <?php } ?> </ul> </div> </section>
    • By NeumarFreire
      Caros amigos. Sou novo neste forum e tenho um problema de código na página resposta. Apesar dos indeces estarem de acordo com os "name" do formulários o erro se mantém.
      Troquei o Method no campo emailId para GET e o erro desapareceu mas nos outros campos não. Vejam o código EM NEGRITO abaixo e se puderem ajudar...
      <?php include_once 'restrito_all.php'; ?>
      <?php include_once 'validar_user.php'; ?>
      <?php include_once 'header.php'; ?>
      <?php
      date_default_timezone_set('America/Sao_Paulo');
      $data= date('d/m/Y');
      $hora= date('H:i').' H';
      ?>
            
            <div id="local">
                  <div class="caminho">Onde estou: NFL & Associados &raquo; Painel de Controle &raquo; Admin &raquo; Visualizar/Responder</div>
                  <div class="welcome">Olá, <?php echo $clienteNome;?> | <?php  echo $data .' às '.$hora ?> | <a href="deslogar.php">Sair</a></div>
            </div>

             <div id="content">
           
      <?php include_once 'menu.php'; ?>
         
                   <div id="content_conteudo">
                   
      <?php include_once 'carregando.php'; ?>

      <?php
      $emailAdmin ='contato@nflweb.com.br';
      $emailAssunto = 'CONTATO Portal Imobiliário NFL & Associados';
      $emailStatus = 'completo';
      $emailResposta = date ('Y-m-d H:i:s');
      $headers = "From: $emailAdmin\n";
      $headers .= "MIME-Version: 1.0\n";
      $headers .= "content-type:text/html; charset=\"utf-8\"/n/n";
      $emailId = $_GET['emailId'];
      $emailTxt = $_POST['mensagem'];
      $emailEmail = $_POST['emailEmail'];
      $recebidoEm = $_POST['emailData'];
      $mensagemEm = $_POST['emailMensagem'];
      $sql_enviaAdmin = 'UPDATE imobi_mailadmin SET = emailStatus = :emailStatus, emailResposta = :emailResposta, emailTxt = :emailTxt WHERE emailId = :emailId ';
      try{
          $query_enviaAdmin = $conecta->prepare($sql_enviaAdmin);
          $query_enviaAdmin->bindValue(':emailStatus',$emailStatus,PDO::PARAM_STR);
          $query_enviaAdmin->bindValue(':emailResposta',$emailResposta,PDO::PARAM_STR);
          $query_enviaAdmin->bindValue(':emailTxt',$emailTxt,PDO::PARAM_STR);
          $query_enviaAdmin->bindValue(':emailId',$emailId,PDO::PARAM_STR);
          $query_enviaAdmin->execute();
          echo '<div class="ok">Mensagem enviada com sucesso!</div><br /> ';
          
      }catch(PDOexception $error_adminEmail){
          echo 'Erro ao atualizar e-mail';
      }
      ?>
                   
                   <div class="inbox">
                   
      <table width="100%" border="0" cellspacing="2" cellpadding="0">
        <tr class="cabecalho">
          <td align="center">DATA</td>
          <td align="center">NOME</td>
          <td align="center">E-MAIL</td>
          <td align="center">EXECUTAR:</td>
        </tr>
       
       <?php
         $emailId =$_GET ['emailId'];
         $sql_inboxAdmin = 'SELECT * FROM imobi_mailadmin WHERE emailId = :emailId ';
      try{
          
          $query_inboxAdmin = $conecta->prepare($sql_inboxAdmin);
          $query_inboxAdmin->bindValue(':emailId', $emailId,PDO::PARAM_STR);
          $query_inboxAdmin->execute();
          
          $resultado_inboxAdmin = $query_inboxAdmin->fetchAll(PDO::FETCH_ASSOC);
          
          }catch(PDOexception $error_inboxAdmin){
              echo 'Erro ao selecionar pendentes.';
          }
          $i=0;
          foreach($resultado_inboxAdmin as $res_inboxAdmin){
              
              $emailId = $res_inboxAdmin['emailId'];
              $emailNome = $res_inboxAdmin ['emailNome'];
              $emailMensagem = $res_inboxAdmin ['emailMensagem'];
              $emailEmail = $res_inboxAdmin ['emailEmail'];
              $emailData = $res_inboxAdmin ['emailData'];
              $emailStatus = $res_inboxAdmin ['emailStatus'];
              $emailResposta = $res_inboxAdmin ['emailResposta'];
              $emailTxt = $res_inboxAdmin ['emailTxt'];
              $cor = 'bgcolor="#EBE9FE"';
      ?>  
       
        <tr <?php echo $cor; ?>>
          <td align="center"><?php echo date('d/m/Y - H:i',strtotime($emailData));?>h</td>
          <td align="left"><?php echo $emailNome;?></td>
          <td align="center"><?php echo $emailEmail;?></td>
          <td align="center" ><a href="painel.php">Voltar</a></td>
        </tr>
       
        <tr <?php echo $cor; ?>>
          <td align="center" class="cabecalho">MENSAGEM:</td>
          <td align="left" colspan="3"><?php echo $emailMensagem;?></td>
        </tr>
       
       
       <?php
        }  
       
      ?>
       
      </table>
             
                </div> <!--FECHA CLASS INBOX --> <br />
      <br />
           <form name="responderEmail" action="" enctype="multipart/form-data" method="POST">
               <label>
                   <span>Escreva a resposta: </span>
                  <textarea rows="8" name="mensagem" cols="108"></textarea>
               </label>
               <input type="hidden" name = "emailId" value = "<?php echo $emailId;?>" />
               <input type="hidden" name = "emailEmail"  value = "<?php echo $emailEmail;?>" />
               <input type="hidden" name = "emailData"  value = "<?php echo $emailData;?>" />
               <input type="hidden" name = "emailMensagem"  value = "<?php echo $emailMensagem;?>" />
                         
               <input type="submit" name = "executar" id="executar" value="Enviar resposta" />
           </form>  
                    
               </div> <!--FECHA CONTENT CONTEUDO-->
               
           </div> <!--CONTENT-->

      <?php include_once 'footer.php'; ?>

    • By daniramon
      Olá pessoal, tudo bem?
       
      Sou novato em PHP, e preciso criar a seguinte função.
       
      Meu problema: 
      - Recebo os seguintes parâmetros: (total de alunos & número de pessoas por grupo).
      - Preciso definir um número ideal de pessoas por grupo, sem deixar nenhum grupo desfalcado. 
      - Mínimo de 4 pessoas por grupo;
      <?php $totalUsers = 50; $usersPerGroup = 6; $minPerGroup = 4; ?>  
      $var = $totalUsers / $usersPerGroup;
       
      Na simulação acima, terei 7 grupos com 6 pessoas, e um grupo com 1,4 pessoas..rs.
       
      Gostaria, que a função me retornasse, em um mundo ideal:
       
      7 grupos com 6 pessoas = 42 pessoas
       
       2  grupos com 4 pessoas = 8 pessoas
      <?php return $array = [ 7 => 6, 2 => 4]; ?>  
      Alguém poderia me ajudar na criação desta função, please...
    • By Carcleo
      Parece brincadeira, mas estou fazem 3 dias tentando instalar a cURL e não consigo
      Windows 10 Pro Apache 2.4 Php 7.3.4 MySQL 8.0.15.0 Tentativas:
      1) libeay32.dll, msvcr71.dll, ssleay32.dll e php_curl.dll coladas na pasta system32 e adicionadas ao PATH do Windows 2) Baixei a biblioteca cURL do site https://curl.haxx.se/, cliquei em curl.exe e nada acontece. 3) ;extension=CURL e ;extension=php_curl.dll descomentadas no php.ini (Embora a linha ;extension=php_curl.dll não exista nessa versão do PHP eu inserí ela na lista) 4) Confirmado de que o php.ini é o correto.  Agora só faltam 2 tentativas
       
      A) Apelar para a fé.
      B) Instalar Apache e PHP antigos pois lembro-me que usei em um projeto fazem uns anos e funcionava de boa.
           Mas não gostara de voltar no tempo.
       
      Claro que essas 2 foram só para descontrair!
       
      Alguém me ajuda? Ode estou errando?
    • By terra
      Olá,
       
      Preciso pegar o valor desse select
       
       
       aqui nessa query
       
       
      Agradeço qualquer ajuda
×

Important Information

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