Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Actualizar checkbox PHP MYSQL

Estas en el tema de Actualizar checkbox PHP MYSQL en el foro de PHP en Foros del Web. Pues tengo un formulario el cual muestro informacion sobre un perfil de usuario justo asi: http://www.4shared.com/photo/fpeUINEVce/perfil_user.html? el checkbox que se muestra en ese formulario se ...
  #1 (permalink)  
Antiguo 08/07/2014, 12:09
Avatar de alejo_ferguson  
Fecha de Ingreso: mayo-2014
Mensajes: 33
Antigüedad: 9 años, 11 meses
Puntos: 0
Actualizar checkbox PHP MYSQL

Pues tengo un formulario el cual muestro informacion sobre un perfil de usuario justo asi:
http://www.4shared.com/photo/fpeUINEVce/perfil_user.html?
el checkbox que se muestra en ese formulario se llena automaticamente de una base en mysql : http://www.4shared.com/photo/tQWXjIpzba/base.html?
Mi problema es el siguiente:
Quiero poder actualizar los datos (todos se actualizn perfectamente el unico problema es ahora como actualizar el checkbox) quiero que el usuario puede desactivar o activar el checkbox cuantsa veces se le antoje, por supuesto cada vez que lo haga deberá actualizar el campo menu0 de la tabla de mi base.

Uno de los problemas que he tenido es que si el checkbox esta habilitado y lo deshabilito, cuando le doy editar la pagina me da el error siguiente: http://www.4shared.com/photo/Sg8KOq8aba/error.html?

Por favor si alguien me pudiese dar una pista como hacer lo que quiero o alfun tutorial se los agradeceria mucho.

pd: asi habilito el checkbox desde mi base:
Código PHP:
<?php 
                                  
if ($quien[10] == true) {
                                      
# code...
                                      
?>
                                      Menu usuarios: <input type="checkbox" name="menus0" checked="checked"></td>
                                      <?php
                                  
}else{
                                      
?>
                                      Menu usuarios: <input type="checkbox" name="menus0"></td>
                                      <?php
                                  
}
                                   
?>
  #2 (permalink)  
Antiguo 08/07/2014, 12:12
Avatar de 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

Se me ocurre que con JavaScript ejecutes una función al darle un clic al checkbox, en la cual detectarás si el checkbox está o no marcado y según sea el caso, envías un dato a través de una petición asíncrona (Ajax) hacia un archivo que actualice el dato en cuestión. También tendrías que enviar un identificador para realizar la actualización en el registro que corresponda.

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
  #3 (permalink)  
Antiguo 09/07/2014, 11:55
Avatar de alejo_ferguson  
Fecha de Ingreso: mayo-2014
Mensajes: 33
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Actualizar checkbox PHP MYSQL

Será que podrías darme algun codigo, si puedes...
  #4 (permalink)  
Antiguo 09/07/2014, 12:27
Avatar de 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
  #5 (permalink)  
Antiguo 11/07/2014, 11:19
Avatar de alejo_ferguson  
Fecha de Ingreso: mayo-2014
Mensajes: 33
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Actualizar checkbox PHP MYSQL

Te agradezco mucho tu tiempo y el codigo que me mandaste. No estoy tan familiarizado con JS asi que te pongo aca el codigo como lo escribi en mi pagina y me digas si tengo algun error pues al darle click al boton no hace nada! Gracias de antemano:


Código HTML:
<body>
<script type="text/javascript">
var checkbox = document.getElementById("foo"),
ajax = function(url){
	var xhr = window.XMLHttpRequest ? 
	new XMLHttpRequest() :
	new ActiveXObject("Microsoft.XMLHTTP") || 
	new ActiveXObject("Msxml2.XMLHTTP");

};	

	checkbox.addEventListener("click", function(){
		var estado = this.checked ? 1 : 0,
		id = this.getAttribute("data-id"),
		url = "ver_usuarios2.php?estado="+estado+"&id="+id;

		ajax(url);

	}, false);
</script>


</body>
</html> 
Y esta es la forma como la mando a llamar:


Código HTML:
<tr>
				  			<td>Usuarios Menu <input type="checkbox" id="foo" data-id="<?php echo '$id_usuario' ?>"></td>

				  		</tr>
				  	</table>
				  	<!-- <button class="btn btn-primary btn-block">Editar</button> -->
				  	<a class="btn" onClick="click()">Verificar</a>
				  </form> 
  #6 (permalink)  
Antiguo 11/07/2014, 11:40
Avatar de 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

¿Ese formulario no está en el mismo archivo que en el que colocaste el código JS?
__________________
«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
  #7 (permalink)  
Antiguo 11/07/2014, 13:53
Avatar de alejo_ferguson  
Fecha de Ingreso: mayo-2014
Mensajes: 33
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Actualizar checkbox PHP MYSQL

Si lo puse en la misma pagina ambos. Esta mal? O.o
  #8 (permalink)  
Antiguo 11/07/2014, 15:19
Avatar de 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

¿Pero cómo los pusiste (el orden)? ¿Me hiciste caso con la recomendación que te di al final del comentario trasanterior?
__________________
«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
  #9 (permalink)  
Antiguo 17/07/2014, 09:59
Avatar de alejo_ferguson  
Fecha de Ingreso: mayo-2014
Mensajes: 33
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Actualizar checkbox PHP MYSQL

Hola disculpa que conteste hasta ahora, pero logre hacerlo funcionar y pues segui programando sin parar.

La forma como lo hice fue la siguiente, este es mi formulario el cual debo saber cuales checkbox quiero enviar no importnado si esta check o no:

http://www.4shared.com/photo/db24hYryce/formu.html?

luego cuando doy click en el boton del formulario lo compruebo con una pequeñita funcion (algo rustico pero a mi me sirvio)

cabe recordar que cada input de checkbox le puse un nombre, en mi caso si ven en la imagen de izquierda a derecha aparecen el nombre de cada uno pero dentro su identificador es asi:
<input type="checkbox" name="usuario" >Usuarios</input>

de modo que cuando le doy click al boton de editar en otra pagina recibo el valor de cada uno de los input de la siguiente forma:

Código PHP:
$valor_menu1 checkea(isset($_POST['Usuarios']));
$valor_menu2 checkea(isset($_POST['Anuncios']));
$valor_menu3 checkea(isset($_POST['Libros']));
$valor_menu4 checkea(isset($_POST['Audios'])); 
(CHECKEA es el nombre de una funcion que escribo aqui abajito, la cual comprueba si esta checkeado o no)

Es necesario poner ISSET ya que si envian un checkbox sin cheque dara que el valor del indice es erroneop algo asi dice...

Pues bien la funcion CHECKEA como les dije comprueba si el checkbox enviado esta checkeado o no asi:

Código PHP:
function checkea($post){
    if (!empty(
$post)) {
        
# code...        
        
$estado 1;
        echo 
"El checkbox enviado esta checkeado";
    }else{
        
$estado 0;
        echo 
"Checkbox no esta checkeado";
    }

Ahora puedes insertar en la columna requerida el valor de la variable $estado la cual contiene el valor del checkbox : 0 o 1

Como dije es rustico pero me sirvio y eso me alegro! jaja gracias amigo por haber aportado

Última edición por alejo_ferguson; 17/07/2014 a las 10:13
  #10 (permalink)  
Antiguo 09/12/2014, 17:30
 
Fecha de Ingreso: diciembre-2014
Mensajes: 1
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Actualizar checkbox PHP MYSQL

Hola buenas tardes quisiera y me pudieran ayudar con un problema con los checkbox tengo un formulario al cual quiero agregarle los checbox de:
Acta Matrimonio
Acta Nacimiento
Acta Bautismo
Acta Confirmación
Acta Comunión
y que me los guarde con valor de true false o 1 y 0
si me pudieran ayudar se los estaré muy agradecido.

Etiquetas: checkbox, form
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 23:13.