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):
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 />";}
}
}
?>
Pergunta
thiago.php
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
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.