Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/07/2014, 12:27
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Actualizar checkbox PHP MYSQL

Un pequeño ejemplo.

Tenemos un checkbox el cual posee un id y un pseudo-atributo que contiene el identificador del registro que actualizarás en la tabla de la base de datos:

Código HTML:
Ver original
  1. <input type = "checkbox" id = "foo" data-id = "<?php echo $id; ?>" />

En el archivo JS que incluyas en el documento HTML, lo tomas y asignas una función que deberá ejecutarse cuando se marque/desmarque el checkbox:

Código Javascript:
Ver original
  1. var checkbox = document.getElementById("foo"),
  2.     ajax = function(url){
  3.         var xhr = window.XMLHttpRequest ?
  4.                   new XMLHttpRequest() :
  5.                   new ActiveXObject("Microsoft.XMLHTTP") ||
  6.                   new ActiveXObject("Msxml2.XMLHTTP");
  7.  
  8.         xhr.open("GET", url, true);
  9.         xhr.send(null);
  10.     };
  11.  
  12. checkbox.addEventListener("click", function(){
  13.     var estado = this.checked ? 1 : 0, //Si está marcado, asigno 1 a 'estado', si no, 0
  14.         id = this.getAttribute("data-id"), //El valor del pseudo-atributo 'data-id'
  15.         url = "ejemplo.php?estado=" + estado + "&id=" + id;
  16.  
  17.     ajax(url); //Ejecuto la petición asíncrona, enviando los valores
  18. }, false);

Y en el archivo ejemplo.php, actualizas el valor del campo en cuestión en la BD:

Código PHP:
Ver original
  1. //Recibo y desinfecto a los datos de posible contenido malicioso
  2. $estado = mysql_real_escape_string(strip_tags($_GET['estado']));
  3.  
  4. //Actualizo los datos
  5. mysql_query("UPDATE tabla SET estado = {$estado} WHERE id = {$id}");

Y cuando en otra ocasión desees acceder a la página y quieras ver el checkbox con el estado actualizado, simplemente realizas la consulta y haces una evaluación; si el estado es igual a 1, marcas al checkbox.

Código PHP:
Ver original
  1. <?php
  2. $id = mysql_real_escape_string(strip_tags($_GET['id'])); //$_GET['id'] vendría de una búsqueda
  3. $query = mysql_query('SELECT * FROM tabla WHERE id = ' . $id);
  4.  
  5. if (mysql_num_rows($query)){
  6.     $row = mysql_fetch_array($query);
  7. ?>
  8.     <input
  9.         type = "checkbox"
  10.         id = "foo"
  11.         data-id = "<?php echo $id; ?>"
  12.         <?php if ($row['estado'] == 1) echo 'checked'; ?>
  13.     />
  14. <?php
  15. }
  16. ?>

Para este ejemplo utilicé la extensión obsoleta MySQL, pero lo recomendable es que uses la extensión mejorada MySQLi o PDO. No te olvides de colocar el código JS justo antes de la etiqueta </body> para que así pueda afectar al DOM.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand