Painel de administração com PHP + OOP - Aula 10

Aviso importante!

Eu sei que você não quer ver propagandas, porém o conteúdo gratuito só está aqui graças a publicidade. Considere desativar o AdBlock para esse site.

Sejam todos bem vindos à mais uma aula do curso de criação de um painel administrativo utilizando PHP e orientação a objetos. Nesta aula vamos criar a tela de listagem para exibir todos os usuários cadastrados no banco de dados. Para tornar a tabela mais dinâmica iremos usar o jQuery DataTable por já conter nativamente todos os recursos que iremos precisar.

Além da listagem, iremos criar também os links para edição, alteração de senha e exclusão de usuários, para que nas próximas aulas essa tarefa já esteja pronta.

Mais posts desta série

Este post faz parte de uma série, confira tudo que já foi publicado sobre o mesmo assunto.

Sobre o autor

Ricardo Bernardi

Sou técnico em hardware e desenvolvedor web, e sobre estes dois assuntos comecei a compartilhar aulas e artigos, tornando-me blogueiro em 2008. Em 2010 esse hobby virou profissão, e desde então tenho buscado melhorar e profissionalizar cada vez mais os projetos que mantenho na web.

Comentários

Atualmente temos 38 comentários para este post. Participe você também, clique aqui e comente sobre o assunto.

  • Luis Antonio comentou em

    Olá Ricardo! Mais uma vez parabéns pelas vídeo-aulas. Lá na tabela que mostra os registros, aquelas setinhas onde dá para mostrar a ordem dos registros, na parte de cima onde aparece o nome, email, etc.., está tudo certo, mas essas setinha aparece também logo abaixo da borda e a tabela fica desconfigurada, com os registro do campo nome dando quebra de linha, no email não dá porque o email é todo junto sem espaços entre as palavras. Se puder me ajudar te agradeço muito. Grande abraço!

    Responder
  • Waltemar comentou em

    Ricardo, parabéns pelo trabalho...fui até o final já e fiquei com 2 dúvidas.
    A primeira, ao rodar no localhost no Chrome, ao realizar pela primeira vez o login, ele da erro=3 dizendo que o usuário deve fazer o login antes, o que não ocorre em outros browsers, por isso achei estranho.
    A outra, o meu grid data-table esta funcionando normalmente, ele pesquisa, ele ordena ao clicar nas colunas, porém ele não traz as setas para cima e para baixo e também não faz as linhas com cor sim e cor não, conforme o seu, você sabe o que pode ser? Obs.: Refiz tudo que foi falado na primeira aula, baixei os arquivos todos novamente, enfim, não sei o que pode ser...deixo essa mensagem mas ainda assim continuarei pesquisando para ver o que posso ter feito de errado, o que é mais provável uma vez que o seu esta funcionando normalmente.
    Grato por tudo!

    Responder
  • Gabriel comentou em

    Ricardo, minha execução de javascript para o sistema simplesmente parou de funcionar. Nada mais em javascript funciona mais.
    Qual a dica para tentar arrumar... ?

    Responder
    • Primeiro passo é descobrir o que está errado (muito provavelmente algum comando digitado erroneamente). Use o inspetor do Chrome ou então o Firebug na aba CONSOLE e veja o que é indicado como erro.

      Responder
  • Jeovane Carvalho comentou em

    Então Ricardo estou acompanhando todas as suas videos aulas e conseguir resolver quase todos os problemas dos meus scripts a única coisa que ainda não conseguir corrigir, foi impedir de um usuário limitado cadastrar um usuario sem marcar como adm ainda sim ele marca como usuário adm ele só deixa de marcar quando se o usuário prencher um nome ou email que já esta cadastrado e clicar en enviar apareçer a mensagem de erro e desabilita o botão de adm.
    Mais um vez parabéns pelas videos aulas cada vez melhor, vc além de dar uma excelente explicação passa para nós o que vc aprendeu na integra, sucesso em sua jornada...

    Responder
  • Renato S. N. comentou em

    Olá Ricardo;

    Excelente curso!
    Programo já há algum tempo lançando mão do paradigma procedural em PHP, e só agora com o seu curso estou conseguindo me adequar à OO.

    Faço-lhe uma pergunta que, a princípio pode parecer redundante e, sei que é possível na prática, porém não conheço o caminho das pedras.

    Em sistemas nos quais utilizamos os relacionamentos entre mais de uma tabela para produção de relatórios, daqueles que atribuímos um apelido pra table, tipo:

    código fonte excluído pois não foi postado conforme as regras

    Sendo que, minha dúvida agora atroz, é como construir esta arquitetura em OO, pois os valiosos e eficazes métodos que vimos até agora, através do método selecionaTudo(), a priori só pega os dados de uma tabela...

    Obrigado!

    Responder
  • Junior Eberhardt comentou em

    Ricardo, estava pensando, que no painel administrativo, seria legal saber que esta logado, tipo: você esta logado como: admin.

    tentei fazer assim:

    código fonte excluído pois não foi postado conforme as regras

    mas ele só mostra o nome do usuário quando clico no menu de cadastro de usuários ou listar usuários...

    vai a dica ai...

    valeu.

    Responder
  • Obrigado pela ajuda Ricardo.
    O problema foi que eu havia formatado o computador e quando refiz o banco, acabei deixando escapar algumas propriedades, tudo solucionado agora!

    Responder
  • Sidney Jr. Miranda comentou em

    postei na aula seis uma dúvida sobre uma essa mensagem:

    "Esta página da web tem um loop de redirecionamento
    A página da web em http://localhost/paineladm/?erro=3 resultou em muitos redirecionamentos.
    Apagar seus cookies para este site ou permitir cookies de terceiros pode resolver o problema.
    ^^ Já verifiquei os cookies.
    Se não resolver, talvez o problema esteja na configuração do servidor, e não em seu computador.
    Veja algumas sugestões:
    Recarregue esta página da web mais tarde.
    Saiba mais sobre este problema.

    Erro 310 (net::ERR_TOO_MANY_REDIRECTS): Houve muitos redirecionamentos."
    ^^vasculhei em diversos forum um resposta, mas não achei nada que funcione.

    Será que você poderia me ajudar a resolver esse problema.

    Responder
    • O erro está em sua codificação e não em cookies ou qualquer outra coisa. Você trocou alguma verificação e a página entra em loop infinito, confira sua função verificaLogin e qualquer outra parte do código que faça a mesma verificação.
      Você comentou em algum lugar (não lembro em qual post) que trocou algo nas funções ou tirou algumas linhas de código, e está faltando lógica em suas alterações.

      Responder
      • Sidney Jr. Miranda comentou em

        na aula 6 do painel de administração tem dois códigos um no arquivo função e outro no usuários.
        Quando acrescento esse trecho -

        || $sessao->getVar('ip')!=$_SERVER['REMOTE_ADDR']

        - no código do usuários da esse loop infinito.

        Se eu retirar funciona.

        o que eu reparei e que no código do arquivo funcoes.php ele redireciona para: ?erro=3;

        e no código do arquivo usuarios.php ele redireciona para: painel.php

        Fiz exatamente com está na aula.

        Responder
        • Você NÃO fez exatamente como está na aula, seu código está ERRADO, veja aula 6 (21:35 a 21:40) está diferente da sua linha!
          Quando eu falo que para estudar e programar é necessário dedicação e concentração total acham que eu estou exagerando, mas em 5 segundos de aula você alterou a lógica do sistema dizendo pra ele ir para o index e voltar para o painel infinitamente.

          Sidney não leve a mal o que eu vou dizer agora, mas tanto este como os demais erros que você enfrentou no desenvolvimento do painel (sim, eu leio TODOS os comentários indiferente de responder ou não o mesmo), foram todos erros muito infantis e creio que todos pelo mesmo motivo: erro na digitação de algum comando. Deduzo que você não está suficientemente concentrado para a tarefa que está fazendo ou tem dificuldade na digitação.

          Entenda isso como uma crítica construtiva e procure melhorar no que está lhe faltando para programar melhor.

          Responder
  • Pessoal, todos os erros que vocês estão tendo são derivados de falta de atenção, digitação incorreta ou algo semelhante.
    Parem de copiar e pensem um pouco na lógica do sistema, nas tags HTML geradas pelo código de vocês. Prestem atenção no que vocês estão digitando, programar requer atenção e sintaxe perfeita, uma vírgula fora do lugar pode estragar todo código.

    No erro do Daniel foi colocado tudo em uma única célula da tabela, ou seja, foi esquecido de fechar a tag da célula e abrir a seguinte. Erro de HTML e não de PHP.
    Sidney, erros de digitação, se abriu aspas tem que fechar, sejam elas duplas ou simples.

    Programação é uma ciência exata, se funcionou pra mim tem que funcionar pra você da mesma forma, não existe funcionamento parcial em um sistema, ou funciona tudo ou nada.

    Responder
  • Mario Tito comentou em

    Bom dia Ricardo,

    Inicialmente gostaria de parabenizar pela iniciativa. Não conhecia o seu site e achei muito interessante o material disponibilizado.

    Estou com uma duvida, nessa arquitetura, como eu poderia inserir um dropdown no formulario de cadastro de usuarios, buscando registros em uma outra tabela do banco, uma vez que a tabela é passada dinamicamente.

    Att.
    Tito

    Responder
  • Murilo Henrique comentou em

    Não mostrou ali, mais segue...
    Pode ser que você não definiu:

    <tbody>
       <tr>
        ...
       </tr>
    </tbody>
    Responder
  • Sidney Jr. Miranda comentou em

    Obrigado por mais uma aula, mas a sintaxe ainda continua me surrando.

    nessa parte do código tem dado erro.
    já vi e revi, e não achei o erro.

    ERRO: Parse error: syntax error, unexpected T_STRING in C:wampwwwpaineladmmodulosusuarios.php on line 166

    printf('<td class="center">%s</td>',date("d/m/Y,strtotime($res->datacad)));
    printf('<td class="center"><a href="?m=usuarios&amp;t=incluir" title="Novo Cadastro"><img src="images/add.png" alt="Novo Cadastro" /></a> <a href="?m=usuarios&amp;t=editar&amp;id=%s" title="Editar"><img src="images/edit.png" alt="Editar" /></a> <a href="?m=usuarios&amp;t=senha&amp;id=%s" title="Mudar senha"><img src="images/pass.png" alt="Mudar senha" /></a> <a href="?m=usuarios&amp;t=excluir&amp;id=%s" title="excluir"><img src="images/delete.png" alt="Excluir" /></a></td>',$res->id,$res->id,$res->id);
    					echo '</tr>';
    Responder
  • Junior Eberhardt comentou em

    mais uma ótima vídeo aula, valeu Ricardo, por repartir conosco seu conhecimento...

    Responder
    • Ja resolvi o problema acho que eu digitei alguma coisa errada pq eu apaguei e fiz dinovo deu certo flw abraço até a proxima !

      Responder
    • Murilo Henrique comentou em

      Poste a parte do seu código onde usa printf(), o erro pode estar ai, ou pode ser que você não definiu

      Espero que isso ajude.

      Responder
  • Ola Ricardo,
    Estou tendo problemas com um dos procedimentos.

    <?php
    $user = new usuarios();
    $user->selecionaTudo($user);
    while ($res = $user->retornaDados()):
    echo '<tr>';
    printf('<td>%s</td>',$res->nome);
    printf('<td>%s</td>',$res->email);
    printf('<td>%s</td>',$res->login);
    printf('<td class="center">%s/%s</td>',strtoupper($res->ativo),strtoupper($res->administrador));
    printf('<td>%s</td>',date("d/m/Y",strtotime($res->datacad)));
    printf('<td class="center">%s</td>','Aes');
    echo '</tr>';
    endwhile;
    ?>

    O Sistema todo funciona, inclusive já fiz testes com outras funções, mas nessa especificamente não tem retornado nenhum valor do banco. Já refiz a aula e também já verifiquei o banco e esta tudo similar as aulas.

    Mas não retorna nenhum valor do banco, o datatable acusa que esta vazia a tabela. Poderia me ajudar?

    Responder
  • Rafael comentou em

    Olá, Muito boa a Video Aula, gostária de saber como faz para quebrar linha no Aptana, pois se eu digitar um código gigante ele fica em um link e fica horrivel !

    Responder
  • Murilo Henrique comentou em

    Ontem fiz oque você fez nessa video aula, mais faltou uma parte no datatable que eu fiz, aquela do sScrollY, tava tentando de todo jeito achar aquilo :/

    Obrigado pela video aula, muito boa.

    Responder
      • Murilo Henrique comentou em

        A eu tenho muito interesse sim, OOP é muito interessante para um profissional, é um diferencial que conta muito, não sou profissional, mais quem sabe um dia eu venha a ser, tenho que me preparar para tudo né.

        Já estou aguardando a próxima, Valeu.

        Responder
      • E ai, a 11ª ja esta vindo né, estou muito ancioso porque já fiz as telas que vão ser ensinadas, porem quero ter certeza de que estou fazendo do jeito certo, funcionar sempre vai, porem nem sempre do jeito certo né :D
        Uma dica pra todo mundo, leiam seus códigos como se estivesse lendo um texto simples, assim é fácil achar os erros, principalmente de ortografia. :D

        Responder
        • A aula já está a caminho sim, se quiser antecipar veja a lógica usada na próxima aula onde será feita a tela de alteração:

          • O campo login não pode ser alterado
          • Somente administradores podem alterar outros usuários
          • Eu posso alterar meu perfil mesmo não sendo administrador
          • Precisa verificar a questão de emails duplicados caso o usuário solicitou alteração do email também
          Responder
          • Agora sim, a minha lógica esta correta, fiz tudo direitinho, menos a parte de email duplicado na hora da edição :S

Deixe seu comentário