Foros del Web » Programando para Internet » PHP »

Bloquear checkbox a partir de resultado de consulta php+mysql

Estas en el tema de Bloquear checkbox a partir de resultado de consulta php+mysql en el foro de PHP en Foros del Web. Buen dia!! Me encuentro realizando un proyecto de fin de semestre en php en el cual tengo una base de datos con registros de computadoras ...
  #1 (permalink)  
Antiguo 19/06/2014, 20:12
 
Fecha de Ingreso: junio-2014
Mensajes: 6
Antigüedad: 9 años, 10 meses
Puntos: 0
Bloquear checkbox a partir de resultado de consulta php+mysql

Buen dia!! Me encuentro realizando un proyecto de fin de semestre en php en el cual tengo una base de datos con registros de computadoras que ya han sido reservadas y lo que quiero es mostrar que cuando otro usuario quiera reservar una computadora pueda saber cuales se encuentran disponibles, lo estoy haciendo con checkbox por lo tanto pretendo que para las ocupadas deshabilite los checkbox y para las disponibles muestre el checkbox habilitado.

Código PHP:
<?php

$sql 
mysql_query("select * from equipos where status = 'A' ");
 
while(
$row=mysql_fetch_array($sql)){
         
        
$maquina $row['id_equipo'];  
        echo 
$maquina;
}
?>
esta query me imprime los id de los equipos que se encuentran ocupados pero no se como bloquear los checkbox que contienen el value = al id del equipo ocupado, tengo esto pero solo me bloquea el ultimo checkbox de todos los resultados:

Código PHP:
<input name="eq1" type="checkbox" id="eq1" value="1"<?php if($maquina == "1"){?> disabled <?php }?>>
y tengo 20 ckeckbox, alguien podria ayudarme con esto??
  #2 (permalink)  
Antiguo 20/06/2014, 01:43
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Bloquear checkbox a partir de resultado de consulta php+mysql

No se hacen tareas escolares.

Pero si se dan pistas. Lo que tienes que conseguir es una query que te de TODOS los equipos con información de si estan ocupados o no. Luego usas esa lista para construir los checkboxs. No imprimas ids imprime checkboxs.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 20/06/2014, 09:54
 
Fecha de Ingreso: junio-2014
Mensajes: 6
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Bloquear checkbox a partir de resultado de consulta php+mysql

Gracias!!
La consulta lo que hace es devolver los id de los equipos que se encuentran con status 'A' (Activas u ocupadas) y no necesito imprimir otros checkbox porque ya los tengo creados solo quiero deshabilitar los que ya estan ocupados, no c si me explique.
  #4 (permalink)  
Antiguo 20/06/2014, 10:11
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: Bloquear checkbox a partir de resultado de consulta php+mysql

¿Y no sería más fácil si simplemente no imprimes los checkbox de los equipos que ya están ocupados? Al fin y al cabo, no van a poder ser utilizados.

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 20/06/2014, 11:23
 
Fecha de Ingreso: junio-2014
Mensajes: 6
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Bloquear checkbox a partir de resultado de consulta php+mysql

Saludos Alexis88.
Pues si tambien podria ser una buena elección el problemas es que no puedo realizarlo para deshabilitarlo o simplemente que no aparesca.

Con la consulta que mostre al inicio encuentro los equipos que se encuentran ocupdos y a partir de los resultados los quiero mostrar como deshabilitados, casi llego a la conclusion pero al hacerlo como les muestro solo deshabilita el primero de los resultados.

Con esto busco los ocupados:

Código PHP:
 <?php

$sql 
mysql_query("select * from equipos where status = 'A' ");
 
while(
$row=mysql_fetch_array($sql)){
         
        
$maquina $row['id_equipo'];  
        echo 
$maquina;
}
?>
Código PHP:
<form name="equipos" method="post" action="Datos_sesion.php">
  <table width="112">
    <tr>
      <td width="20"><input type="checkbox" name="eq[]" id="eq1" value="Equipo1"  onchange="this.form.submit()" <?php if($maquina == "1"){?> disabled <?php }?> />
   
      <td width="27"><input type="checkbox" name="eq[]" id="eq2" value="Equipo2"  onchange="this.form.submit()" <?php if($maquina  == "2"){?> disabled <?php }?>/>
      
      <td width="24"><input type="checkbox" name="eq[]" id="eq3" value="Equipo3" onChange="this.form.submit()" <?php if($maquina  == "3"){?> disabled <?php }?>/>
       
      <td width="21"><input type="checkbox" name="eq[]" id="eq4" value="Equipo4" onChange="this.form.submit()"  <?php if($maquina  == "4"){?> disabled <?php }?>/>
      
    </tr>
  </table>
</form>
Me gustaria hacerlo de esa forma porque ya tengo insertados los checkbox, por lo tanto tampoco seria necesario volverlos a dibujar, gracias por su ayuda.
  #6 (permalink)  
Antiguo 20/06/2014, 14:40
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Bloquear checkbox a partir de resultado de consulta php+mysql

Si analizas el ultimo codigo que pusistes, veras que todas las lineas son iguales salvo por un numero incremental ¿Eso no te dice nada?

Dejando de lado que no estas cerrando los "td" lo cual puede ocasionar un problema de visualización, podrías pensar en algo así:

Código PHP:
Ver original
  1. <?php
  2. foreach($maquina in range(1,4)) // Es como un for de 1 a 4.
  3. {
  4.       echo('<input type="checkbox" name="eq[]" id="eq'.$maquina.'" value="Equipo'.$maquina.'"  onchange="this.form.submit()" />');
  5. }

¿Vas captando la idea? por este lado rumbea la pista que te dio @quimfv que evidentemente no entendiste.

Pero tu no tienes 4 maquinas, tu tienes N donde N es el numero de equipos en la base de datos, asi que no te sirve hacer un for/foreach, tienes que recorrer los registros.
Código PHP:
Ver original
  1. <?php
  2. // No pongas *, es una mala practica, que la base de datos se deje no significa que debas abusar.
  3. // Fijate que le saque el status del where, ahora traera todo, no solo los activos.
  4. $sql = mysql_query("select id_equipo, status from equipos");
  5. // Esto equivale al for, pero para todos los resultados.  
  6. while($row=mysql_fetch_array($sql))
  7. {          
  8.         // En esta variable deberas de saber si esta o no reservado segun el campo status.
  9.         $estaReservado = ...
  10.        
  11.         // Aca debes mostrar el checkbox y segun la variable anterior lo desabilitas o no.
  12.         echo(...);
  13. }

Podrias evitar usar la variable auxiliar empleando un "if inline" pero eso es para emprolijar.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #7 (permalink)  
Antiguo 20/06/2014, 17:12
 
Fecha de Ingreso: junio-2014
Mensajes: 6
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Bloquear checkbox a partir de resultado de consulta php+mysql

Gracias por responder @NSD!! Entiendo tu aportación me parece muy buena pero lo que yo quiero no es volver a imprimir los checkbox ya que esos los tengo acomodados de cierta manera, soy nuevo en el foro y no puedo o mejor dicho no se subir una imagen para mostrarles como lo estoy haciendo, creo que asi me daria a expllicar mejor, podrian proporcionarme un correo para enviarles la imagen??
  #8 (permalink)  
Antiguo 21/06/2014, 17:01
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Bloquear checkbox a partir de resultado de consulta php+mysql

Código PHP:
Ver original
  1. foreach($maquina in range(1,4))
Que feo que me quedo eso, recien lo veo, una mezcla de 3 lenguajes diferentes, lo correcto seria:
Código PHP:
Ver original
  1. foreach(range(1,4) as $maquina)

No esta permitido el contacto por otras vias.

Cita:
...pero lo que yo quiero no es volver a imprimir los checkbox ya que esos los tengo acomodados de cierta manera
Eso es lo que no estas entendiendo, debes mostrarlos dentro del loop, no antes ni despues, debe ser dentro.

Si es una tabla, puedes agregar el codigo de la tabla dentro del loop o cualquier otro artilugio que consideres necesario pero el mostrado debe hacerse en el loop.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #9 (permalink)  
Antiguo 07/07/2014, 09:49
 
Fecha de Ingreso: junio-2014
Mensajes: 6
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Bloquear checkbox a partir de resultado de consulta php+mysql

Que tal @NSD ya entendi lo que me sugeriste hacer, y si tenias razon en ello ahora tengo un ultimo problema, al guardar el resultado como un arreglo y despues imprimirlo por posiciones me devuelve todos los resultados y si los imprime, despues imagine que como el arreglo ($ocupada) ya contenia los resultados esperados ya solo bastaria con hacer un in_array y buscar el valor que necesito bastaria pero no lo hace, podrias darme una pista de como hacer esto??
Código PHP:
<?php
$query
="select id_equipo, status from equipos";
$resul mysql_query($query);
    
        if (
mysql_num_rows($resul)!=0){ 
         
            while(
$row=mysql_fetch_array($resul)){ 
            
$ocupada = array($row["ACCEQP_Id_Equipo"]);
            
$length count($ocupada);
            
    for (
$i 0$i $length$i++) {
        echo 
$ocupada[$i] . '<br />';
              }
?>
<form name="equipos" method="post" action="">
        <table width="112">
    <tr>
      <td width="20"><input type="checkbox" name="eq[]" id="eq1" value="1" onChange="this.form.submit()" <?php if(in_array (1$ocupada)){?> disabled <?php }?>/></td>

      <td width="20"><input type="checkbox" name="eq[]" id="2" value="Equipo1" onChange="this.form.submit()" <?php if(in_array (2$ocupada)){?> disabled <?php }?>/></td>

.
.
.
.
.
      <td width="20"><input type="checkbox" name="eq[]" id="eq24" value="24" onChange="this.form.submit()" <?php if(in_array (24$ocupada)){?> disabled <?php }?>/></td>


<?php    
       

      }
        
?>
saludos!!
  #10 (permalink)  
Antiguo 07/07/2014, 13:47
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Bloquear checkbox a partir de resultado de consulta php+mysql

A ver, me parece que te estas ahogando en un vaso de agua, supongamos los siguientes casos (puede que no sean asi, tu los adaptaras a tus necesidades.)

1) El archivo se llama listado.php
2) Los equipos con status = "A" estan ocupados y su checkbox aparece marcado y desabilitado.
3) Al marcar un checkbox de un equipo con status != "A" el status de ese equipo pasa a ser "A".
4) La cantidad de equipos es N, es decir, una cantidad variable.

En el siguiente codigo vas a ver como, con las 4 consideraciones anteriores, se puede resolver, si bien es levemente diferente al tuyo es para que te guies y puedas adaptarlo.

Una cosa importante, es que no es necesario que uses un formulario, en vez de manejar los datos por post, puedes enviarlos por get, con lo cual la cuestion se simplifica mucho (en este caso particular), en el ejemplo, esta como se aplicaria el update por este metodo.

Código PHP:
Ver original
  1. <?php
  2.     if(isset($_GET["update_state"]) && $_GET["update_state"])
  3.     {
  4.         mysql_query("UPDATE equipos SET status = 'A' WHERE id_equipo = ".$_GET["update_state"]);
  5.     }
  6.    
  7.     $result = mysql_query("SELECT id_equipo, status FROM equipos");
  8.     if(mysql_num_rows($result) > 0)
  9.     {
  10.         echo("<table>");
  11.         while($row=mysql_fetch_array($result))
  12.         {
  13.             echo("<tr>
  14.                    <td>Equipo: #$row[id_equipo]</td>
  15.                    <td>Status: $row[status]</td>
  16.                    <td><input type=\"checkbox\" onChange=\"location.href='listado.php?update_state=$row[id_equipo]'\" ".($row["status"] == "A" ? "checked disabled" : "")."></td>
  17.                </tr>";
  18.        }
  19.         echo("</table>");
  20.     }
  21.     else
  22.         echo("No hay equipos cargados.");
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #11 (permalink)  
Antiguo 07/07/2014, 19:22
Avatar de @padawan@  
Fecha de Ingreso: julio-2005
Mensajes: 393
Antigüedad: 18 años, 9 meses
Puntos: 6
Respuesta: Bloquear checkbox a partir de resultado de consulta php+mysql

Si el php te devuelve el id del equipo, lo usaria como id del checkbox. y lo pondria en disabled con jquery metido adentro de un for .

Etiquetas: bloquear, checkbox, mysql, php-mysql, registro, resultado, select, sql
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




La zona horaria es GMT -6. Ahora son las 22:10.