<?php
if (isset($msg)) {
if ($msg) {
echo Util::msgSucessoOperacao();
} else {
echo Util::msgErroOperacao();
echo "<script>history.php.back(); alert('Preencha seu nome.');</script>";
}
}
?>
Descobri que utilizando session você consegue guardar os dados anteriores. O que vocês acham da solução ? Pode ser uma solução ruim em questão de desempenho já que se trata de um sistema ERP ? É uma má ideia criar todos os campos de todos os formulários com session ? ou vocês acham melhor o sistema deixar perder os dados se houver um erro (o usuário digita tudo novamente) ?
Na minha opinião, guardar dados de formulário na sessão é uma péssima idéia…
Uma dica, é deixar variáveis que serão encarregadas de representar os campos do form:
$temErro = false;
$nome = '';
$endereco = '';
$telefone = '';
// ...
E já no form deixar os valores definidos com essas variáveis…
<input type="text" name="nome" value="<?=$nome?>">
<input type="text" name="endereco" value="<?=$endereco?>">
<input type="text" name="telefone" value="<?=$telefone?>">
Dessa forma funciona bem se você mandar o submit para a mesma página, assim logo abaixo da declaração das variáveis lá em cima, pode fazer um teste de post por exemplo:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$nome = filter_input(INPUT_POST, 'nome');
$endereco = filter_input(INPUT_POST, 'endereco');
$telefone = filter_input(INPUT_POST, 'telefone');
// ... validações, inserts, updates, etc...
}
Perceba a variável $temErro pode te ajudar a exibir a mensagem de erro caso dê algum problema, etc e com vantagem de você não ter perdido os dados do form, pois estarão armazenados nas outras variáveis e já descarregados no form novamente… bom é por ai o caminho, espero ter ajudado.
Normalmente, eu trabalho de uma forma similar a seguinte
No meu form, os names dos campos são índices de um array:
<input type="text" name="form[nome]" value=<?=$form['nome'];?>
<input type="text" name="form[endereco]" value=<?=$form['endereco'];?>
<input type="text" name="form[telefone]" value=<?=$form['telefone'];?>
No arquivo PHP eu recupero os dados do form assim:
<?php
$form = $_POST['form']; // é o array formado pelos names no HTML
// ... validações
if ($tudo_ok) {
include_once 'pagina_ok.php';
} else {
include_once 'pagina_form.php';
}
Lembrando que quando carregar a página do formulário da primeira vez, a variável $form deverá ser criada vazia, apenas com as chaves necessárias ou com valor padrão. Se não dá errro.
<?php $form = array( 'nome' => '', 'endereco' => '', 'telefone' => '');?>
Quando você faz um include, require e etc, as variáveis daquele escopo ficam disponíveis para esta página adicionada, assim quando a variável $form preenchida com o POST conterá os dados do usuário quando ele fez o submit, e você não perde os dados.
Além disso você pode criar uma variável $erros encontrados e passar para a página (view) apresentar da melhor forma e evitar os echo no meio da validação
Gostei dessa alternativa, vou tentar aqui depois posto.