Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LF_HERNANDES

[Resolvido] Atualização de campo

Recommended Posts

Bom dia pessoal!

 

Desenvolvi um sistema onde o cliente insere OK ou NA em varias perguntas que nao caso estãp no banco de dados e gravo em uma tabela as resposta utilizando foreach.

 

Agora o meu problema esta em atualizar estes resultados.

Quando eu altero o valor ele continua com o mesmo valor, não captando o novo resultado.

 

Segue o código:

 

Html

   <form id="form1" name="form1" method="POST" action="?btn=Alterar&Id=<?php echo $SESSAO_EMPRESA;?>">
    
    <input name="ID_REF" type="hidden" value="<?php echo $SESSAO;?>" />
    
    <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td scope="col">
    
      <div id="container-1">
            
            <!-- INTERFACE -->

            <?php
			// VERIFICO A LISTA DE INTERFACE
			$sql_ana = "SELECT ID, COD_GUIA, CODIGO, DESCRICAO, CODIGO_EVO, STATUS FROM evo_item WHERE COD_GUIA ='1' AND STATUS = 'A' ";
  			$exe_ana = mysql_query($sql_ana, $c) or die(mysql_error());
			$num_ana = mysql_num_rows($exe_ana);
			if($num_ana > 0){
			?>
                <div id="frag-1">          
                <br />
                   
                <div align="center"><h1  style="color:#006699">1. Interface</h1></div>
                <table width="100%" border="0" cellspacing="0" cellpadding="3"> 
                
                <tr>
                        <td bgcolor="<?php echo $color ?>" align="center" scope="col"> </td>
                        <td bgcolor="<?php echo $color ?>" scope="col"> </td>
                        <td bgcolor="<?php echo $color ?>" scope="col"> </td>
                        <td bgcolor="<?php echo $color ?>" align="center" scope="col">OS</td>
                        <td bgcolor="<?php echo $color ?>" align="center" scope="col">Data</td>
                        <td bgcolor="<?php echo $color ?>" align="center" scope="col">Usuário</td>
                      </tr>
                	
                
			<?php
			$color = "#F5F5F5";	
			while($reg_ana = mysql_fetch_array($exe_ana, MYSQL_ASSOC)){
			
				if ($color == "#F5F5F5"){
					$color = "#FFFFFF";
				} else {
					$color = "#F5F5F5";
				}
				?>
                      
                      <tr>
                        <td width="10%" bgcolor="<?php echo $color ?>" align="center" scope="col"><?php echo $reg_ana['CODIGO'];?></td>
                        <td width="50%" bgcolor="<?php echo $color ?>" scope="col"><?php echo $reg_ana['DESCRICAO'];?></td>
                        <td width="10%" bgcolor="<?php echo $color ?>" scope="col"><label>
                        
                        <?php
						
					    $CODIGO_EVO = $reg_ana['CODIGO_EVO'];					
											
						$sql = mysql_query("SELECT * FROM ana_2 WHERE SESSAO = '$SESSAO_EMPRESA' AND CODIGO = '$CODIGO_EVO' ", $c);
						while($linha = mysql_fetch_array($sql)){
						
						$CODIGO			=	$linha["CODIGO"];
						$SITUACAO		=	$linha["SITUACAO"];
						}						
						?>                        
                        <input name="evo[<?php echo $CODIGO;?>]" type="text"  size="5" value="<?php echo $SITUACAO;?>" maxlength="3" />
                        </label></td>
                         <td width="10%" bgcolor="<?php echo $color ?>" scope="col"><input  name="OS" type="text" /></td>
                         <td width="10%" bgcolor="<?php echo $color ?>" scope="col"><input  name="DATA" type="text" /></td>
                         <td width="10%" bgcolor="<?php echo $color ?>" scope="col"><input  name="USUARIO" type="text" /></td>
                      </tr>
                      
                 <?php
				}
				?>     
               </table>  

                <?php
					} //fecho verificação- INTERFACE
				?>
        
         </div>           
         
         <!-- FECHA INTERFACE -->  

 

 

Gravando o resultado:

 

if($_GET['btn'] == "Alterar"){



if(is_array($_POST["evo"])){
		foreach($_POST["evo"] as $id_evo => $evo){
		
			echo $id_evo;
			echo "<br/>";
			echo $evo;
			echo "<br/>";
			die();
		
		
				$updateSQL = "UPDATE ana_2 SET SITUACAO='$evo' WHERE CODIGO = '$id_item' ";
				mysql_select_db($database_conn, $c);					


			}
	}

}

 

Não seu o pq ele não pega o novo valor...

Desde já agradeço a ajuda de vcs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$updateSQL = "UPDATE ana_2 SET SITUACAO='$item' WHERE CODIGO = '$id_item' ";

mysql_select_db($database_conn, $c);

 

Talvez seja porque $item e $id_item não existe e você tenha que modificar a sua query:

 

$updateSQL = "UPDATE ana_2 SET SITUACAO='$evo' WHERE CODIGO = '$id_evo' ";

^_^

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então amigo eu esta variavel.

 

Quando testo o resultado antes de atualizar ele continua com o valor anterior.

 

 

Exemplo:

 

No banco de dados esta - 1 | OK

eu altero para 1 | NA

 

Quando verifico antes de dar upload continua 1 | OK.

 

Não sei o pq esta acontecendo isto....

 

Se eu tiro o while no html ele funciona, porem eu preciso deste while para inserir os inputs dinamicamente juntamente com o código de referencia.

 

Desde já agradeço a ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom amigo, geralmente update no MySQL não realiza alterações quando

o campo alterado contem o mesmo valor do campo já gravado no banco.

 

adicione um echo e veja se a query condiz com a alteração que você deseja fazer.

 

$updateSQL = "UPDATE ana_2 SET SITUACAO='$evo' WHERE CODIGO = '$id_evo' ";
echo $updateSQL;
Faça este teste para ver se a query esta sendo montada corretamente.

 

Poste também o seu while para entender melhor o que está errado pois se fora do while

funciona temos que ver o que há de errado com seu loop e/ou sugerir uma outra solução.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então amigo antes de dar update eu verifico o resultado recebido:

 

		foreach($_POST["evo"] as $id_evo => $evo){
		
			echo $id_evo;
			echo "<br/>";
			echo $evo;
			echo "<br/>";
			die();
}

Com isso vejo que não esta recebendo o valor esperado

 

 

While no html

 

$sql = mysql_query("SELECT * FROM ana_2 WHERE SESSAO = '$SESSAO_EMPRESA' AND CODIGO = '$CODIGO_EVO' ", $c);
						while($linha = mysql_fetch_array($sql)){
						
						$CODIGO			=	$linha["CODIGO"];
						$SITUACAO		=	$linha["SITUACAO"];
												
						?>                        
                        <input name="evo[<?php echo $CODIGO;?>]" type="text"  size="5" value="<?php echo $SITUACAO;?>" maxlength="3" />
                        </label></td>
                         <td width="10%" bgcolor="<?php echo $color ?>" scope="col"><input  name="OS" type="text" /></td>
                         <td width="10%" bgcolor="<?php echo $color ?>" scope="col"><input  name="DATA" type="text" /></td>
                         <td width="10%" bgcolor="<?php echo $color ?>" scope="col"><input  name="USUARIO" type="text" /></td>
                      </tr>
                      
                 <?php
					}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo eu sugeri que você exiba a query para visualizar se a mesma esta sendo montada corretamente,

não para ver se você passou os dados via POST corretamente.

 

Quanto a o while que monta os dados, a principio não vejo nada de errado.

O erro provavelmente está na montagem de sua query.

 

Faça o teste como lhe sugeri e verifique como as queries são montadas.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta me parecendo que você em algum momento de seu script substitui os valores.

 

Tente modificar o nome das variáveis para ver se exibe da forma correta já que o

valor enviado por POST está correto.

 

OBS: Não há necessidade de fazer o mysql_select_db dentro de um loop. Se isto se faz necessário em seu script

aconselho a rever sua lógica. De toda forma tente utiliza-lo fora como abaixo.

 

mysql_select_db($database_conn, $c);  
      foreach($_POST["evo"] as $id_up => $val_up){
                
                        echo $id_up ;
                        echo "<br/>";
                        echo $val_up;
                        echo "<br/>";
                        die();
                
                
                                $updateSQL = "UPDATE ana_2 SET SITUACAO='$val_up' WHERE CODIGO = '$id_up' ";
                                                                  


                        }

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito estranho amigo.

 

se o valor de seu post está certo como pode aparecer errado na query?

 

Experimente assim:

 

foreach($_POST["evo"] as $id_up => $val_up){
                
                        echo $id_up ;
                        echo "<br/>";
                        echo $val_up;
                        echo "<br/>";
                        echo "UPDATE ana_2 SET SITUACAO='$val_up' WHERE CODIGO = '$id_up' ";
                        echo "<br/>";
                
                        }
                        die();
Coloque o die fora do loop como acima e veja agora se aparece certo.

 

Se aparecer corretamente troque o nome de sua variável updateSQL.

Se puder poste o código onde você executa a query de update também.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.