Ir para conteúdo

POWERED BY:

Arquivado

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

Nigol

[Resolvido] Checkbox para update em tabela

Recommended Posts

Olá galera...

estou fazendo um programa para dar abertura e encerramentos em chamados técnicos.

 

para isto usei uma tabela com hora do inicio do chamado e necessito que se um checkbox estiver marcado os chamados sejam finalizados.

 

não estou conseguindo pegar o valor de true para o checkbox...

 

if($validacao==1){
  
  $banco = "pequenacasa1";
  $tabela='solicitacao';
  $conexao = mysql_connect("*****",'******','****')or die ( "ERRO NO BANCO DE DADOS");
  mysql_select_db($banco,$conexao)or die (mysql_error()."... ERRO AO SELECIONAR BANCO");


//cabecalho da tabela
?>

  <p align="center">
  <table border="1"> 
  <tr>
  <form method="POST" action="lista-retira.php">
  <td>
  <INPUT type="button" value="Voltar" onclick="javascript:window.open('escolha.php','_self')">
  <td colspan="3" align="center">
  <tr>
  <td><b>Finalizar</b></td>
  <td><b>Protocolo</b></td>
  <td><b>Solicitação</b></td>
  <td><b>Inicio</b></td>
  
  <?
//PHP da tabela

  $query = "SELECT * FROM solicitacao WHERE fim IS NULL; ";
  $resultado = mysql_query ($query,$conexao);
  
//EXIBIR
  while($linha=mysql_fetch_array($resultado))
  {
  ?>
  <tr>
    <td align="center"> <input type="checkbox" name="checkbox[]" id="checkbox[]" value="<? echo $linha['codigo'];?>"></td>
    <td align="center"><? echo $linha['protocolo']; ?></td>
    <td><? echo $linha ['motivo'];?></td>
    <td><? echo $linha ['inicio'];?></td>
  </tr>
  <? 
  }

 ?>
 <TR>
 <TD>
 <INPUT type="submit" value="Fechar Solicitação" name="editar">
 </TD>
 </TR>
 </TABLE>
 
 <?
 
       ?></form>
       <?
      
      if (isset($editar)){      
      $co=mysql_query("SELECT * FROM $tabela ORDER BY codigo DESC LIMIT 1;");
      $con=mysql_fetch_array($co);
      $cont=(int)($con[codigo]);
       $data=date("d-m-y H:i:s"); 
      echo $data;
      $variavel = (isset($_POST["checkbox[]"]))?"sim":"não";
      for($i=-1;$i<$cont;$i++){  # este for vai pegar o número correto da tabela e não a posição dele no array de checkbox     
     if($variavel=="sim"){      
       $baixa="UPDATE $tabela SET fim='$data' where codigo='$i'";
       mysql_query($baixa,$conexao);
       break;
     }
   }
      
      }  
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para 'marcar' um checkbox, você deve usar: checked="checked"

O value deve permanecer o mesmo, tanto marcado como desmarcado. O acrescimo do atributo checked, eh que vai dizer se ele deve vir setado ou nao.

 

Tem alguns posts meus com uma funcao para gerar checks marcados.

http://forum.imasters.com.br/index.php?/topic/355482-checkbox-array-de-basedados-para-formulario/page__hl__checked__fromsearch__1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para 'marcar' um checkbox, você deve usar: checked="checked"

O value deve permanecer o mesmo, tanto marcado como desmarcado. O acrescimo do atributo checked, eh que vai dizer se ele deve vir setado ou nao.

 

Tem alguns posts meus com uma funcao para gerar checks marcados.

http://forum.imasters.com.br/index.php?/topic/355482-checkbox-array-de-basedados-para-formulario/page__hl__checked__fromsearch__1

 

Não se ise eu que não entendi. ou a minha dúvida é outra...

 

eu tenho que testar se o campo fim da tabela de solicitacao está com NULL ou não... se está com null ele imprime... (esta parte está operando)

o que me falta seria percorrer esta lista e verificar quais checkbox estão marcados... se estiverem é para trocar o camo fim de NULL para a data e hora local.

 

eu olhie o seu código(o último) e não entendi por exemplo por que tens linhas como $checked = 'checked="checked" '; pois assim apenas a variavel $checked terá um valor de 'checked="checked" '; e não veirificar se está ou não marcado o checkbox.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olhando vários fóruns e demais cheguei a este código que QQUASE FAZ O QUE EU QUERO

 

o problema é que ele esta´excluindo TODOS os itens que apaarecem na tabela... não sei como pegar o VALUE de cada checkbox... como o faço?

if (isset($editar)){
   //seleciona a data e hora da baixa
    $data=date("d,m,y - h,i,s");

// verifica se a solicitação já recebeu baixa
    $query = "SELECT * FROM solicitacao WHERE fim IS NULL; "; 
    $resultado = mysql_query ($query,$conexao);
    $linha=mysql_num_rows($resultado);

 // para percorrer todos os campos selecionados para o teste
    while($teste=Mysql_fetch_array($resultado)){
//para percorrer todos os checkbox       
        for($i=0; $i<$linha;$i++) {  

 // compara o value do checkbox com o código do item selecionado
            if($_POST['chk'][$i]== $teste['codigo']){
                $update="UPDATE $tabela SET fim='$data'";
                mysql_query($update)or die(mysql_error());
             }
         }
    }
  }

Compartilhar este post


Link para o post
Compartilhar em outros sites

CONSEGUI :D

 

 

if (isset($editar)){
//seleciona a data e hora da baixa
    $data=date("d-m-y - h:i:s");
    foreach($_POST["chk"] as $chk){ // lembrnado que para isso funcionar o chk deve ter um value igual ao código da tabela
      mysql_query("UPDATE solicitacao SET fim='$data' WHERE codigo='$chk'");
    }

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.