Jump to content


Photo

Otimizando Formulários E Querys


  • Faça o login para participar
3 replies to this topic

#1 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 12/04/2005, 02:30

Olá pessoal!!! ;)

Alguém aqui já passou pela situação de ter um formulário extenso e ter que definir uma variável para cada campo? :( Ou definir as variáveis de uma query cheia de campos? :(

Seus problemas acabaram!!! :P

Hehe, mas essa num vai ser do Casseta... :lol:

É o seguinte...

O PHP tem uma ótima função chamada extract().

Pra quê ela serve? :blink:

Simples, estrair todas as variáveis de um array... :D

Mas... o que isso tem haver? :wacko:

Simples... num formulário, GET ou POST é um array... ($_GET e $_POST) ...e numa query, mysql_fetch_assoc ou mysql_fetch_array também são um array...

Epa... :blink: ...mas como faço isso? :unsure:

Simples...

Numa query que se fazia assim:

...
while($row=mysql_fetch_assoc($sql)){
$campo1=$row["campo1"];
$campo2=$row["campo2"];
$campo3=$row["campo3"];
$campo4=$row["campo4"];
$campo5=$row["campo5"];
...
echo $campo1." ".$campo2." ".$campo3." ".$campo4." ".$campo5;
}

Passa à se fazer assim...

...
while(extract(mysql_fetch_assoc($sql))){
...
echo $campo1." ".$campo2." ".$campo3." ".$campo4." ".$campo5;
}

Bem mais limpo o código, não? :rolleyes:

Num formulário, a metodologia é a mesma... B)

No que se fazia assim...

...
$campo1=$_POST["campo1"];
$campo2=$_POST["campo2"];
$campo3=$_POST["campo3"];
$campo4=$_POST["campo4"];
$campo5=$_POST["campo5"];
...
echo $campo1." ".$campo2." ".$campo3." ".$campo4." ".$campo5;

Passa à se fazer assim:


...
extract($_POST);
...
echo $campo1." ".$campo2." ".$campo3." ".$campo4." ".$campo5;

Impressionado? :)

Essa é apenas uma função das milhares de funções existentes no PHP... B)

Para mais informações sobre ela, consulte: br.php.net/extract... ;)

Dica: O inverso desta função é feito pela função compact()... B)

Qualquer dúvida, tamos aê... (y)

Flw's, T+V! :DAté mais

#2 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 12/04/2005, 07:57

Boua Doutor!

Ou ainda, depende do uso, pode ser feito com o foreach():

foreach( $_POST as $campo => $valor ) {
  $msg .= ucfirst($campo) . ": " . $valor . chr(10);
}


Um exemplo caso fosse pegar todas as variáveis do formulário e enviar por email.
Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#3 Rafael Rinaldi

Rafael Rinaldi

    Normal

  • Usuários
  • 106 posts
  • Sexo:Não informado

Posted 12/04/2005, 09:37

Ótima função!
www.rafaelrinaldi.com

#4 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 13/04/2005, 16:30

Opa... ;)

Obrigado pessoal!!! :)

Vim aqui anunciar um parâmetro útil da função extract()... o parâmetro EXTR_PREFIX_ALL... :rolleyes:

Passei por uma situação em que precisei usá-lo...

Na ocasião, eu pegava o extract de um GET... mas, depois precisei fazer um extract de um POST abaixo do extact do GET, mas antes de exibir os dados do GET... :wacko:

Resultado? :blink:

Os valores do GET assumiam os valores do POST...

Solução? :rolleyes:

Passei à usar o parâmetro EXTR_PREFIX_ALL... B)

No GET...

extract($_GET,EXTR_PREFIX_ALL,"get");
No POST...
extract($_POST,EXTR_PREFIX_ALL,"post");
Assim, os valores de GET assumem a variável $get_campo e os de POST assumem $post_campo... B)

Flw's, T+V! :DAté mais




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq