Ir para conteúdo
Fórum Script Brasil
  • 0

Udate De Campos Não Nulos


Vilela

Pergunta

Estou tentando montar, numa parte do meu script, um update nas informações do sujeito, se elas estiverem preenchidas. Caso contrário, continua-se com as informações atuais.

Pensei em transformar os campos do formulário num array, fazer uma função que teste se o campo é nulo (usando strlen) e retirá-lo do array caso seja. Usaria array_walk para aplicá-la a todos os elementos. Certo, mas aí como faria para a sintaxe do UPDATE (mysql) se eu não sei os campos preenchidos?

Thanx!

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0
foreach ($HTTP_POST_VARS as $temp) {
        if (!$temp) exit();
}
//aqui faz o update, pois não havia variáveis vazias no form

Link para o comentário
Compartilhar em outros sites

  • 0
Guest lbortoletti

V C ajuda.

<?php

$valores["codigo"] = 10;

$valores["nome"] = "Luis";

$valores["cidade"] = "são PAULO";

$sql = "";

$contador = 0;

$limite = ( count( $valores ) - 1);

do{

$coluna = key( $valores );

$valor = $valores[$coluna];

$sql .= "\n $coluna = '$valor'";

if( $contador < $limite )

$sql .= ",";

$contador++;

}while( next( $valores ) );

$sql = "update tabela set $sql \nwhere codigo = " . $valores["codigo"];

?>

<pre><?=$sql?></pre>

Link para o comentário
Compartilhar em outros sites

  • 0

tinha pensado no seguinte, me corrije se algo não estiver de acordo:

$array=array('nome'=>'$nome', 'email'=>'$email', 'senha'=>'$senha); //e assim por diante para todos os campos

function check($array_value){
if (strlen($array_value)==0){
unset($array_value)//retira o valor do array caso ele não tenha sido preenchido
}
}

$array_fit = array_walk($array,'check');
$values = array_values($array_fit);
$keys = array_keys($array_fit);

$comando="UPDATE tabela SET '$keys'='$values' where username='$username' and senha='$senha' ";
$cadastro=mysql_query($comando,$conectar);

e aí???

Link para o comentário
Compartilhar em outros sites

  • 0
estas informações vem de um formulário!?

vem sim, cara!

aí, Eddie, me explica melhor a sintaxe do foreach

Obrigado a todos!

Cara, o foreach pega cada variável de um array, no caso o $_POST e joga para a variável que tu ta indicando no as. Daí tu pode testar essa variável, essa é uma utilização, tem outra que faz a mesma coisa só que utilizando uma sintaxe diferente. Dá uma olhada no manual que explica direitinho, eu achei muito bom para validação de campos...

Link para o comentário
Compartilhar em outros sites

  • 0

meu código não dá dando certo.... :( :unsure:

acho que quando faço array_values e array_keys ele deixa de ser um array

pelo menos é o erro que reporta

mas Eddie, minha dúvida é como fazer a sintaxe do comando update, entende???

criar uma função que retire os valores iguais a zero é mole, mas e na hora de

"UPDATE tablea SET...." como faço???

teria que fazer mais de uma vez essa query???

Link para o comentário
Compartilhar em outros sites

  • 0

Aí, pessoal, acho que resolvi meu problema. Para os interessados, vou postar aki o código, beleza??

$comando="SELECT * FORM tabela WHERE 'username'='$username' and 'senha'='$senha'";
$query=mysql_query($comando, $conectar);
$array_bd=mysql_fetch_array($query); //coloca num array os campos da tabela do banco de dados
aí coloquei também num array os campos vindos do formulário e criei outro para guardar o resultado
$array_post=array('1'=>'$nome','2'=>'$email','3'=>'$endereco'); //etc, com todos os campos
$array_resultado=array(); //vamos criá-lo mas não adicionar elementos por enquanto
$i=1; //pois estou excluindo o ID
while ($i < 8){ //aqui o limite do while varia com o nº de campos de sua tabela e formulário
if ($array_bd[$i] != $array_post[$i]){
$array_result[$i]=$array_post[$i];
$i++;
}
}
elseif (strlen($array_post[$i]==0){
$array_result[$i]=$array_bd[$i];
}
agora vamos dar UPDATE
$comando2="UPDATE tabela SET 'nome'='$array_result[1]' 'email'='$array_result[2]'...."; //etc...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...