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

Update multiplo, atualiza só um campo


thiago.php

Pergunta

Olá pessoal. Já pesquisei em muitos lugares e ainda não consegui resolver meu problema...que está me atormentando.

Tenho um <form> dinâmico, gerado com WHILE, o qual lista vários registros de acordo com o SELECT. Coloquei um checkbox ao lado de cada registro, para que somente os selecionados sejam atualizados (com uma data calculada a ser inserida em um campo data específico), ao clicar em "<submit>".

O que acontece é que, ao selecionar os registro e submete-los para o update, só é atualizado o primeiro ou o último registro retornado da consulta no BD. Coloco a seguir os scripts:

Formulário dinamico (traz vários registros com checkbox ao lado):

<?php
include ("mysql_conecta.php"); ("ver_sessao.php");

$sel_max_os=mysql_query("SELECT MAX(num_os) as maxnum_os FROM tb_num_os ");
$ressel = mysql_fetch_assoc($sel_max_os);
        $max=$ressel['maxnum_os'];
$sit_os=mysql_query("SELECT sit_os FROM tb_num_os WHERE num_os='$max' ");
$ressit = mysql_fetch_assoc($sit_os);
        $sit_atual=$ressit['sit_os'];
$tudo=mysql_query("SELECT * FROM tb_num_os WHERE num_os='$max' ");
$res= mysql_fetch_array($tudo);
        $data_os        = $res['data'];
        $area_aberta    = $res['area'];
        $empresa_aberta = $res['empresa'];
        $num_os_aberta  = $res['num_os'];
        $sit_os         = $res['sit_os'];

        $empresa        = $_POST['empresa'];
?>
<p align="left"><b><h3><p align="center">Formulário</p></h3></b>

<?php
if($sit_atual==0){echo "<fieldset>"."<font color='#FF0000'>"."Não há O.S. aberta a ser concluída"."</font>"."</fieldset>";}
else{
?>

<form action="mysql_os_fecha.php" method="post" enctype="multipart/form-data">

<?php
$sql = mysql_query("SELECT * FROM tb_dados WHERE empresa='$empresa' ORDER BY data_exec ",$conn)or die(mysql_error());
if($sql >= 0){
while ($row = mysql_fetch_assoc($sql)){
    $ordem = $row['ordem'];
    $area = $row['area'];
    $cc = $row['cc'];
    $conjunto = $row['conjunto'];
    $tag = $row['tag'];
    $equipamento= $row['equipamento'];
    $tag_equip= $row['tag_equip'];
    $pt_item= $row['pt_item'];
    $item= $row['item'];
    $dispositivo= $row['dispositivo'];
    $lubrificante= $row['lubrificante'];
    $norma= $row['norma'];
    $servico= $row['servico'];
    $freq= $row['freq'];
    $tempo_exec=  $row['tempo_exec'];
    $qtde=  $row['qtde'];
    $un=  $row['un'];
    $sit= $row['sit'];
    $data_ini= $row['data_ini'];
    $data_final= $row['data_final'];
    $key= $row['key'];

$hoje = strtotime($data_os);
$data_hoje = date('Y-m-d', $hoje);

   $data_limup = $hoje + (7 * 24 * 60 * 60);
   $data_limiteup = date('Y-m-d', $data_limup);

if(empty($data_final) OR $data_final='0000-00-00'){
$datai = strtotime($data_ini);
$data1 = $datai + ($freq * 24 * 60 * 60);
$data_exec = date('Y-m-d', $data1);         }
else{
$dataf = strtotime($data_final);
$data2 = $dataf + ($freq * 24 * 60 * 60);
$data_exec = date('Y-m-d', $data2);  }

if($data_exec <= $data_limiteup){
?>

<fieldset>

<input type="hidden" name="data_os"        value="<?php echo $data_os;?>">
<input type="hidden" name="area_aberta"    value="<?php echo $area_aberta;?>">
<input type="hidden" name="empresa_aberta" value="<?php echo $empresa_aberta;?>">
<input type="hidden" name="num_os_aberta"  value="<?php echo $num_os_aberta;?>">
<input type="hidden" name="key"            value="<?php echo $key;?>">
<input type="hidden" name="empresa"        value="<?php echo $empresa;?>">
<input type="hidden" name="cc"             value="<?php echo $cc;?>">
<input type="hidden" name="conjunto"       value="<?php echo $conjunto;?>">
<input type="hidden" name="tag"            value="<?php echo $tag;?>">
<input type="hidden" name="equipamento"    value="<?php echo $equipamento;?>">
<input type="hidden" name="tag_equip"      value="<?php echo $tag_equip;?>">
<input type="hidden" name="item"           value="<?php echo $item;?>">
<input type="hidden" name="dispositivo"    value="<?php echo $dispositivo;?>">
<input type="hidden" name="servico"        value="<?php echo $servico;?>">
<input type="hidden" name="lubrificante"   value="<?php echo $lubrificante;?>">
<input type="hidden" name="qtde"           value="<?php echo $qtde;?>">
<input type="hidden" name="tempo_exec"     value="<?php echo $tempo_exec;?>">
<input type="hidden" name="freq"           value="<?php echo $freq;?>">
<input type="hidden" name="data_ini"       value="<?php echo $data_ini;?>">
<input type="hidden" name="data_final"     value="<?php echo $data_final;?>">
<input type="hidden" name="data_exec"      value="<?php echo $data_exec;?>">

<b><font color="#000080">Data de execução</font></b>: <?php $d=date('d-m-Y',strtotime($data_exec));echo $d;?>

<b>Concluído?</b><input type="checkbox" name="exec[]" value="1"><br>

<h5>
<b><font color="#808080">Conjunto</b>:   </font> <?php echo $conjunto;?>  
<b><font color="#808080">Tag</b>:        </font> <?php echo $tag;?>  
<b><font color="#808080">Equipamento</b>:</font> <?php echo $equipamento;?>  
<b><font color="#808080">Tag Equip</b>:  </font> <?php echo $tag_equip;?>  
<b><font color="#808080">Serviço</b>:    </font> <?php echo $servico;?><br>
<b><font color="#808080">Item</b>:       </font> <?php echo $item;?>  
<b><font color="#808080">Dispositivo</b>:</font> <?php echo $dispositivo;?>  
<b><font color="#800000">Lubrificante    </font></b>: <?php echo $lubrificante;?>  
<b><font color="#008000">Qtde Prevista   </font></b>: <?php echo $qtde;?>  
<b><font color="#000080">Tempo Previsto  </font></b>: <?php $d=date('H:i',strtotime($tempo_exec));echo $d;?><br>

<b><font color="#800000">MNE             </font></b>:<input type="textarea" size="38" name="comentario"> 
<b><font color="#800000">Lubr. Utiliz.   </font></b>:<input type="text" size="5" name="lubr_uti"> 
<b><font color="#008000">Qtde Real       </font></b>:<input type="text" size="1" name="qtde_real"> 
<b><font color="#000080">Tempo Real      </font></b>:<input type="time" size="2" name="tempo_exec_real">
</h5>
</fieldset>
<?php
}}}
?>
<p align="right"><input type="submit" name="fechar_os" value="    Concluir O.S    " /></p>
</form>
<?php
}
?>
Script para atualizar o BD (que atualiza só um registro, e não todos os selecionado no checkbox):
<?php
include ("mysql_conecta.php"); ("ver_sessao.php");

$data_os =          $_POST['data_os'];
$area_aberta =      $_POST['area_aberta'];
$empresa_aberta =   $_POST['empresa_aberta'];
$num_os_aberta =    $_POST['num_os_aberta'];

$empresa=           $_POST['empresa'];
$comentario=        $_POST['comentario'];

$key   =            $_POST['key']; //id
$cc=                $_POST['cc'];
$conjunto=          $_POST['conjunto'];
$tag=               $_POST['tag'];
$equipamento=       $_POST['equipamento'];
$servico=           $_POST['servico'];
$dispositivo =      $_POST['dispositivo'];
$tag_equip=         $_POST['tag_equip'];
$item=              $_POST['item'];
$lubrificante=      $_POST['lubrificante'];
$freq=              $_POST['freq'];
$tempo_exec=        $_POST['tempo_exec'];;
$qtde=              $_POST['qtde'];
$data_ini=          $_POST['data_ini'];
$data_final=        $_POST['data_final'];
$data_exec=         $_POST['data_exec'];

//PROBLEMA!!

foreach($_POST['exec'] as $checked){
if($checked == 1){

$sql_datas=(             //SE EU ESCREVER "mysql_query" dá erro e não executa...tem que ser sem mesmo...
"UPDATE tb_dados
SET data_final='$data_exec'
WHERE conjunto IN ('$_POST[conjunto]') AND tag  IN ('$_POST[tag]') AND equipamento IN ('$_POST[equipamento]')
AND servico IN ('$_POST[servico]') AND dispositivo IN ('$_POST[dispositivo]') ");

if (!mysql_query($sql_datas))
  {die('Error: ' . mysql_error());}
else
  {echo "Serviços selecionados concluídos com sucesso. | Serviços não selecionados serão reabertos automaticamente."."<br />";}
}
}
?>

Serei muuuuuito grato por sua ajuda!!!

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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,5k
    • Posts
      652,4k
×
×
  • Criar Novo...