Uma dica do Fábio Vedovelli de como você pode fazer para simplificar suas querys em PHP, vejamos.
Digamos que você tem um formulário extenso, onde diversos valores serão gravados no banco, é fácil se enrolar na recuperação dos valores do form e por algum motivo você acaba deixando algo sem preecher e fica quebrando a cabeça pra debugar qual foi o campo que não passado.
Para contornar este tipo de problema, basta ler a variável $_POST, que nada mais é do que um array com os nomes dos campos do form e seus valores, inseridos pelo visitante.
Suponhamos que seu form tenha os seguintes campos: nome, email, cidade e estado. Normalmente você faria da seguinte forma:
$query=”INSERT INTO suatabela (nome,email,cidade,estado) VALUES (‘$nome’,’$emai’l,’$cidade’,’$estado’)”;
Se o seu formulário tiver só esses campos, maravilha. Agora imagine um formulário com uns 50 campos? É bota trabalhão nisso… pois podemos facilmente fazer assim:
foreach($_POST AS $k => $v){
$query1[]=$k;
}
foreach($_POST AS $k => $v){
$query2[]=”‘$v'”;
}
$query=”INSERT INTO suatabela (“.implode(“,”,$query1).”) VALUES (“.implode(“,”,$query2).”)”;
Com isso, o nome dos campos do form serão inseridos, todos separados por vírgula dentro dos primeiros parênteses e seus valores inseridos também separados por vírgula dentro dos segundos parênteses.
Alguns cuidados a tomar:
1) Os campos na tabela do banco de dados devem ter o mesmo nome dos campos do formulário
2) Se você tiver algum hidden field cujo valor não deve ser gravado no banco, ou melhor, qualquer campo que não se queira que seja gravado no banco deve-se anular este valor ANTES do primeiro foreach, usando:
unset($_POST[’nome do campo’]).
É muito comum anular o nome do input type submit.
nossa curti muito isso, to terminado um curso tecnico que possui uma habilitacao em desenvolvimento de sistemas, e eu to justamente nas aulas de php e javascript, so que ta dificil de pegar o jeito da coisa, sera se vc num tem umas boas apostilas ai pra disponibilizar?
Nossa, muito legal isso. Vou usar isso nos meus forms agora.
Valeu pela dica =D
Valeu a referencia!
Grande abraço!
Ved
A dica é muito boa, porém não há necessidade de percorrer 2 vezes o array $_POST.
Basta criar um único array da seguinte forma:
// ———————————————————————–
// A variável $query vai armazenar os dados do form.
$query = array();
foreach($_POST as $key => $value)
{
// Nossa variável $query será um array associativo,
// as chaves serão os nomes dos campos.
$query[$key] = “‘$value'”;
}
// Pra montar a instrução, usamos 2 funções do PHP,
// array_keys -> retorna as chaves (índices) de um array.
// array_values -> retorna os valores de um array.
$sql = “INSERT INTO tabela (“. implode(“, “, array_keys($query)) .”) VALUES (“. implode(“, “, array_values($query)) .”)”;
// ———————————————————————–
Abraços!