PHP: Utilizando $_POST no atributo value
Olá galera! Entrando com mais um post simples, mas útil para iniciantes.
Toda vez que for atribuído um valor a um input, select, textarea, deve-se primeiro inicializar a variável.
No exemplo abaixo, a variável $campo vai receber o valor passado via $_POST quando ocorrer o submit.
Quando você acessa a página, $_POST ESTÁ VAZIO, ocorrendo um warning e ocorre uma certa lentidão.
$campo = $_POST['campo']; <input type="text" name="campo" id="campo" value="<?php echo $campo; ?>" /> |
Veja algumas formas de evitar esse problema:
<? // forma 1 $campo = isset($_POST['campo']) ? $_POST['campo'] : ''; // forma 2 <del datetime="2017-04-24T13:19:47+00:00">if("$_POST[campo]" >= '1'){ $campo = "$_POST[campo]"; }else{ $campo = ''; }</del> // forma 3 if(!empty($_POST['campo'])){ $campo = $_POST['campo']; }else{ $campo = ''; } ?> |
<form method="post" name="form"> <input type="text" name="campo" id="campo" value="<?php echo $campo; ?>" /> <input type="submit" value="enviar" /> </form> |
Você só descobrirá o erro se o PHP estiver configurado para exibir todos os errors e warnings.
Tem muitas outras formas, mas essas já ajudam muita gente.
Abraços e até a próxima.
A segunda forma não é recomendada. Ao se passar um texto sem aspas como posição de um array, o PHP vai procurar uma constante com esse nome.
E as formas corretas de se verifica se uma variável está setada é com isset e empty, como nas 1º e 3º formas.
Obrigado pela dica Leandro.
Abraços.
Legal, já tinha percebido alguma nessa lentidão comentada, mas sinceramente nunca me preocupei em resolve-la.
Dica interessante, valeu por compartilhar.