Atualizar SQL através de ação em checkbox
Boas Galera !
Exemplo rápido, o ‘dificil’ aqui, seria apenas descobrir o ID do registro, mas isso resolvi com um .next(), pois guardei num hidden ali, o id do registro.
é a idéia de GRID que vamos reproduzir. Desmarca o checkbox, atualiza para 0 um campo da tabela, referente aquele ID, marca o checkbox, atualiza para 1.
<html> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("input[name='status[]']").click(function(){ var $this = $( this );//guardando o ponteiro em uma variavel, por performance var status = $this.attr('checked') ? 1 : 0; var id = $this.next('input').val(); $.ajax({ url: 'action.php', type: 'GET', data: 'status='+status+'&id='+id, success: function( data ){ alert( data ); } }); }); }); </script> </head> <body> <form action="" method="post"> <table> <thead> <tr> <th>ID</th> <th>Nome</th> <th>Status</th> </tr> </thead> <tbody> <tr> <td>15</td> <td>Resident Evil</td> <td><input type="checkbox" name="status[]" value="1" /> <input type="hidden" name="id" value="15" /></td> </tr> <tr> <td>17</td> <td>Tomb Raider</td> <td><input type="checkbox" name="status[]" value="1" /> <input type="hidden" name="id" value="17" /></td> </tr> <tr> <td>21</td> <td>Prince of Persia</td> <td><input type="checkbox" name="status[]" value="1" /> <input type="hidden" name="id" value="21" /></td> </tr> </tbody> </table> </form> </body> </html>
action.php
<?php ini_set('display_errors', true); error_reporting(E_ALL); if( isset( $_GET['status'] ) ) { $id = (int)getGet('id'); $sql = 'UPDATE `jogo` SET `status` = '.getGet('status').' WHERE `id` = '.$id; echo $sql;//aqui vc deve executar a query } function getGet( $key ){ return isset( $_GET[ $key ] ) ? filter( $_GET[ $key ] ) : null; } function filter( $str ){ return $str;//deixo a implementação desta por conta de vcs. }