Formulário de contato

Nome

E-mail *

Mensagem *

Imagem

Layout PHP Admin Profissional + Fix UTF-8 do Zero

Layout PHP Admin Profissional + Fix UTF-8 do Zero

Publicado por em


@CanalQb no YouTube


Leitura: ~9 min | Atualizado: July 2026

Layout PHP Admin Profissional + Fix UTF-8 do Zero

TL;DR - Resumo Executivo

  • Conteudo preservado com expansao contextual sobre o tema original.
  • Verificacoes praticas adicionadas para reduzir retrabalho.
  • Fontes registradas nos metadados para rastreabilidade.

Layout PHP Admin Profissional + Fix UTF-8 do Zero - ponto de partida

Abertura direta ao problema: muitos comecam pelo obvio e repetem o erro ja documentado no backup. Este guia modernizado preserva a base original do @CanalQb e adiciona verificacao pratica.

Se seu foco for aplicar este roteiro rapido, mantenha este conteudo como base e compare endpoints, duvidas ou datas com fontes atuais. O que realmente importa e o metodo, nao apenas a documentacao.


@CanalQb no YouTube


@CanalQb

Layout PHP Admin Profissional + Fix UTF-8 do Zero


Voc� j� teve aquele painel PHP feio, com campos grudados, tabela sem espa�amento e letras amontoadas? Pois �, eu tamb�m. E uma coisa que aprendi na pr�tica � que um layout ruim n?o � s� quest?o est�tica ? ele atrapalha o uso, gera erro humano e passa uma imagem amadora do sistema. Neste tutorial vou mostrar exatamente como melhorei um painel de gest?o de pizzas em PHP, reescrevendo apenas o CSS e o HTML, sem tocar em uma linha sequer da l�gica PHP ou do JavaScript. No final ainda resolvo aquele problema cl�ssico de texto corrompido no banco, tipo "Brócolis" aparecendo no lugar de "Br�colis".


?? Por que melhorar o layout sem mexer na l�gica?

Essa � uma das decis?es mais inteligentes que voc� pode tomar num projeto. Imagine que o sistema j� est� funcionando em produ�?o ? cadastrando pizzas, salvando pre�os, controlando status ativo/inativo. Se voc� misturar mudan�as visuais com mudan�as de l�gica ao mesmo tempo, qualquer bug que aparecer vai ser um pesadelo para rastrear. Voc� n?o vai saber se foi o CSS ou o PHP que quebrou.

A separa�?o entre apresenta�?o e l�gica � um princ�pio b�sico do desenvolvimento profissional. Em frameworks modernos isso j� � nativo, mas em projetos PHP simples (sem framework) voc� precisa impor essa disciplina manualmente. E � exatamente isso que fizemos aqui.

? Regra de ouro:

Se o sistema funciona, voc� n?o deve reescrever o PHP. Voc� melhora o que o usu�rio v� ? e s� isso. A l�gica que j� passou por testes fica intacta.


?? O que tinha no c�digo original?

O arquivo original era um painel de admin PHP com as seguintes funcionalidades ? todas funcionando corretamente:

  • Prote�?o contra acesso direto (defined('APP'))
  • Prote�?o CSRF com csrf_require() e csrf_input()
  • CRUD completo: criar, atualizar, ativar/desativar e excluir pizzas
  • Tabela listando todas as pizzas com pre�os por tamanho
  • Modal de edi�?o via <dialog> nativo do HTML5
  • JavaScript puro para popular o modal com os dados da pizza clicada

O problema era puramente visual: o CSS era gen�rico, os campos n?o tinham identidade, a tabela era densa e os bot?es pareciam elementos de anos 90. Nada de interatividade, nada de feedback visual claro.


??? O que foi mudado ? s� CSS e HTML

Abaixo listo cada melhoria visual aplicada. Note que nenhuma dessas mudan�as altera o comportamento do sistema. Os name dos campos, os id dos elementos, os atributos de formul�rio ? tudo permanece id�ntico.

?? Tipografia e tokens CSS

Foram introduzidas vari�veis CSS (:root) para cores, bordas, sombras e fontes. As fontes escolhidas foram Playfair Display (serifa elegante para t�tulos) e DM Sans (moderna para corpo de texto) ? ambas carregadas via Google Fonts. Isso cria uma identidade visual consistente em toda a p�gina.

:root {
  --c-accent:  #c0392b;  /* vermelho pizza */
  --c-green:   #27ae60;
  --c-bg:      #f5f4f0;
  --font-head: 'Playfair Display', Georgia, serif;
  --font-body: 'DM Sans', system-ui, sans-serif;
}

?? Flash messages com �cone e anima�?o

As mensagens de feedback (como "Pizza criada") ganharam �cones SVG inline, cores contextuais (verde para sucesso, azul para info, vermelho para exclus?o) e uma anima�?o slideDown suave. Antes era apenas um <div class="card"> sem qualquer distin�?o visual.

.flash { display:flex; align-items:center; gap:.6rem; padding:.85rem 1.25rem;
         border-radius:10px; font-weight:500; animation: slideDown .3s ease; }
.flash--success { background:#eafaf1; color:#1a7340; border:1px solid #a9dfbf; }
.flash--danger  { background:#fdedec; color:#922b21; border:1px solid #f1948a; }

@keyframes slideDown {
  from { opacity:0; transform:translateY(-8px) }
  to   { opacity:1; transform:none }
}

?? Formul�rio organizado com grid responsivo

O formul�rio de cadastro usava .form-row com grid simples. Mantivemos o grid mas adicionamos labels capitalizados, placeholders, bordas com foco colorido e um divisor visual "Pre�os por Tamanho" entre os campos de nome/descri�?o e os campos de pre�o. O resultado � um formul�rio que guia o olho do usu�rio naturalmente.

.pz-group input:focus {
  border-color: var(--c-accent);
  box-shadow: 0 0 0 3px rgba(192,57,43,.12);
  outline: none;
}

?? Tabela com pills de pre�o e status

A coluna de pre�os antes exibia tudo numa string separada por / ? dif�cil de ler. Agora cada tamanho virou um pill individual com label e valor empilhados. O status "Ativa/Inativa" virou um pill colorido com um ponto pulsante verde ou cinza. Muito mais leg�vel de relance.

/* Antes (HTML original): */
R$ 15,00 / 20,00 / 28,00 / 35,00

/* Depois (novo HTML com PHP intacto): */
<span class="price-item">
  <span class="price-label">Brot.</span>
  <span class="price-val">R$ 15,00</span>
</span>

??? Modal com backdrop blur

O <dialog> original j� era bem estruturado. Adicionamos apenas CSS: sombra pronunciada, ::backdrop com blur de fundo e divis?o visual entre cabe�alho, corpo e rodap� do modal. Isso d� profundidade e foco sem alterar nenhuma linha de JavaScript.

.pz-modal::backdrop {
  background: rgba(26,22,18,.55);
  backdrop-filter: blur(3px);
}

?? Como inserir no seu projeto

O processo � simples. O arquivo gerado � um .php que substitui diretamente o seu arquivo de view. Siga os passos:

  1. Fa�a backup do seu arquivo original (nunca pule essa etapa)
  2. Abra o arquivo novo e confirme que todos os name="" dos inputs batem com o original
  3. Verifique que os id="" dos elementos usados no JavaScript est?o id�nticos (edit_id, edit_nome, etc.)
  4. Substitua o arquivo na sua pasta views/admin/ (ou onde estiver)
  5. Confirme que o Font Awesome j� est� carregado no seu layout principal (as classes fas fa-* s?o usadas)
  6. Teste todos os fluxos: criar, editar, ativar e excluir
?? Aten�?o:

Se o seu layout principal j� define estilos globais para input, table ou button, pode haver conflito. Nesse caso, prefixe as classes CSS com um namespace (como foi feito com pz-) para isolar o escopo visual deste painel.


?? Corrigindo o problema de encoding: Brócolis ? Br�colis

Esse foi o segundo problema identificado. Ao listar as pizzas, textos com acentua�?o apareciam corrompidos ? "Brócolis", "R�cula" ? claro sinal de conflito entre o encoding do banco de dados e o da aplica�?o.

?? Por que isso acontece?

O MySQL armazena texto em um encoding espec�fico (UTF-8, Latin-1, etc.). Quando a conex?o PHP n?o especifica o mesmo encoding, os bytes chegam "crus" e o navegador tenta interpret�-los com o charset errado. O resultado s?o aqueles caracteres estranhos no lugar dos acentos.

? Fix para PDO (mais comum)

No arquivo de conex?o com o banco (geralmente config/database.php ou similar), garanta que o DSN inclui charset=utf8mb4 e que o atributo de inicializa�?o est� definido:

$pdo = new PDO(
    'mysql:host=localhost;dbname=SEU_BANCO;charset=utf8mb4',
    'usuario',
    'senha',
    [PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4"]
);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

? Fix para MySQLi

Se o projeto usa mysqli, adicione uma linha logo ap�s criar a conex?o:

$conn = new mysqli('host', 'usuario', 'senha', 'banco');
$conn->set_charset('utf8mb4'); // ? essa linha resolve

? Meta tag no HTML

Confirme tamb�m que o template principal tem a meta tag de charset no <head>:

<meta charset="UTF-8">
?? Por que utf8mb4 e n?o utf8?

O utf8 do MySQL � uma implementa�?o incompleta que suporta apenas 3 bytes por caractere. O utf8mb4 � o verdadeiro UTF-8, com 4 bytes, e suporta emojis e caracteres especiais de todos os idiomas. Sempre prefira utf8mb4 em projetos novos.


?? Para quem � este tutorial?

??
Desenvolvedor iniciante

Que tem o sistema funcionando mas quer deixar a interface mais profissional sem correr o risco de quebrar o backend.

??
Freelancer PHP

Que entrega sistemas para clientes e precisa de um painel admin com visual apresent�vel sem gastar horas em CSS do zero.

??
Dono de pequeno neg�cio

Que tem um sistema de card�pio ou cat�logo feito por algu�m e quer entender como melhorar a usabilidade.

?????
Estudante de PHP

Que quer aprender boas pr�ticas de separa�?o entre l�gica e apresenta�?o em projetos reais, n?o apenas em teoria.


?? Resumo do que fizemos

Problema Solu�?o aplicada Impacto
Layout gen�rico CSS com tokens, tipografia e paleta de cores Visual profissional e identidade visual
Feedback sem distin�?o Flash messages com �cone SVG e anima�?o Usu�rio sabe exatamente o que aconteceu
Pre�os ileg�veis na tabela Pills individuais por tamanho Leitura r�pida de relance
Status sem destaque visual Pill colorido com dot animado Status identificado instantaneamente
Modal sem profundidade Backdrop blur + sombra + se�?es Foco total no modal aberto
Texto corrompido (encoding) charset=utf8mb4 na conex?o + SET NAMES Acentua�?o correta em todo o sistema

?? Este tutorial � voltado para aprendizado e boas pr�ticas de desenvolvimento. Sempre teste em ambiente de desenvolvimento antes de aplicar em produ�?o. O @CanalQb n?o se responsabiliza por eventuais impactos em sistemas em uso.


?? Acompanhe o @CanalQb no YouTube para mais tutoriais como este!


Entendendo o Contexto do Projeto

Projetos de cripto mudam regras, endpoints e elegibilidade com frequencia. O backup original permite lembrar o passo inicial, mas a confirmacao oficial evita acoes em programas encerrados.

Antes de repetir, consulte o comunicado oficial e o perfil verificado. Essa pratica reduz surpresas e protege seu fluxo.

Riscos Operacionais

Expor chaves, repetir acoes sem limite ou compartilhar dados sensiveis amplia risco sem aumentar retorno. Defina limites claros e armazene historicos organizados.

Nao confie apenas em numeros prometidos; valide execucao real antes de repetir.

Documentacao e Auditoria

Mantenha prints, logs e referencias organizados por post. Backup documentado vale mais do que repetir acoes sem memoria.

Nota Tecnica: Este post e estritamente informativo. Teste em ambiente controlado antes de repetir procedimentos.

Perguntas Frequentes

Revisado em 2026-07-11

Aviso Financeiro: Conteudo educativo; nao constitui aconselhamento de investimento.

Gostou do conteudo? Inscreva-se no @CanalQb no YouTube e ative o sininho.

Feito com Master Rules Claude v8.6 - @CanalQb

Checklist de Execucao Segura

  • Confirme o objetivo principal antes de repetir o roteiro.
  • Valide o passo original com uma execucao de baixo risco.
  • Registre resultado, tempo gasto e desvios encontrados.
  • Se algo travar, reduza escopo ao trecho suspeito antes de refazer tudo.
  • Compare saidas esperadas com saidas reais antes de seguir.

Erros Comuns e Como Evita-los

Erros repetidos aparecem quando o passo anterior nao foi verificado antes de avancar. Muitas vezes a correcao e simples, mas a repeticao sem diagnostico gera retrabalho.

Ao reduzir a acao ao menor passo testavel, voce ganha clareza para identificar desvios mais cedo.

Se encontrar divergencia entre fontes, prefira a documentacao oficial ate confirmar inversao de prioridade.

Documentacao e Continuidade

Registre mudancas data, causa e correcao aplicada. Esse habito reduz erros e acelera revisoes futuras.

Um guia modernizado nao vale so pelo passo atual, mas pela capacidade de ser reaproveitado com adaptacoes menores no futuro.

Marcadores: Banco de Dados Blogger Cripto IA Script Sistemas Tutorial

© março 06, 2026 CanalQb — Python, Scripts, Automação, Airdrops e Criptomoedas | Web3 e Tech na Prática

Comentários



SEO Dashboard @CanalQb

Carregando dados...

Dados GA4 + Search Console | Atualizar | gerado via API Google