Foros del Web » Programando para Internet » PHP »

Crear checkox dinamicamente

Estas en el tema de Crear checkox dinamicamente en el foro de PHP en Foros del Web. Hola buenos dias... En mi proyecto necesito crear una tabla dinamicamente y al final de cada linea un checkox que de estar seleccionado, actualizara un ...

  #1 (permalink)  
Antiguo 18/04/2012, 08:46
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Crear checkox dinamicamente

Hola buenos dias... En mi proyecto necesito crear una tabla dinamicamente y al final de cada linea un checkox que de estar seleccionado, actualizara un campo de la base de datos
Para que se entienda mejor, estoy haciendo un proyecto de control de horas... En esa tabla se mostraran todos las actividades que no esten aprobadas.. Al final de cada linea de la tabla, debe aparecer un checkbox que si fue seleccionado, permita modificar el status de ese registro
P.D. El status es un valor numerico en la base de datos.. Cuando esta pendiente de aprobacion, tiene valor 0 y cuando fue aprobado, cambia su valor a 1

Muchas gracias
  #2 (permalink)  
Antiguo 18/04/2012, 09:04
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Crear checkox dinamicamente

Tenes algo hecho? vas a trabajar solo con php? o php + ajax + javascript?
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 18/04/2012, 09:08
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Crear checkox dinamicamente

Cita:
Iniciado por linuxzero Ver Mensaje
Tenes algo hecho? vas a trabajar solo con php? o php + ajax + javascript?
La tabla esta hecha en php y se trae todos los valores de manera correcta... Lo que no se ha hecho es la parte de los checkbox... Hasta ahora he trabajado solo con php, porque conozco muy poco de javascript, pero si hace falta usarlo, no hay problema... Muchas gracias
  #4 (permalink)  
Antiguo 18/04/2012, 09:12
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Crear checkox dinamicamente

si tan solo necesitas que al final de cada fila te agregue un checkbox tildado, vastaria que en el html que escribis en el php tenga un td mas que contenga al checkbox, a groso modo seria algo asi:

Código HTML:
Ver original
  1. <td>
  2.      <input type="checkbox" name="actualiza" selected="selected" value="1" />
  3. </td>

Fijate bien el tema de las comillas porque seguramente lo tengas que escribir en el php con un echo, y tenes que ver que las comillas esten bien escritas.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #5 (permalink)  
Antiguo 18/04/2012, 09:15
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Crear checkox dinamicamente

Cita:
Iniciado por linuxzero Ver Mensaje
si tan solo necesitas que al final de cada fila te agregue un checkbox tildado, vastaria que en el html que escribis en el php tenga un td mas que contenga al checkbox, a groso modo seria algo asi:

Código HTML:
Ver original
  1. <td>
  2.      <input type="checkbox" name="actualiza" selected="selected" value="1" />
  3. </td>

Fijate bien el tema de las comillas porque seguramente lo tengas que escribir en el php con un echo, y tenes que ver que las comillas esten bien escritas.
Es que el checkbox no debe estar seleccionado en ningun momento... Queda a discrecion de la persona, seleccionarlo o no... He alli mi dilema... Gracias
  #6 (permalink)  
Antiguo 18/04/2012, 09:16
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Crear checkox dinamicamente

entonces no le agregues el atributo selected="selected" (que igualmente creo que era checked ahora que me acuerdo, pero al caso es el mismo ya que no tiene que estar seleccionado)
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #7 (permalink)  
Antiguo 18/04/2012, 09:19
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Crear checkox dinamicamente

Cita:
Iniciado por linuxzero Ver Mensaje
entonces no le agregues el atributo selected="selected" (que igualmente creo que era checked ahora que me acuerdo, pero al caso es el mismo ya que no tiene que estar seleccionado)
Pero no habra ningun problema en que todos los checkbox se llamen igual???... Porque esta informacion sera enviada a otro archivo php que se encargara de procesarlos... Muchas gracias
  #8 (permalink)  
Antiguo 18/04/2012, 09:23
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Crear checkox dinamicamente

cambiale el name a name="actualiza[]" asi cuanse envies el $_POST['actualiza'] te va a llegar un array y lo recorres. Yo te recomiendo que cad value tenga el id del item a actualizar
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #9 (permalink)  
Antiguo 18/04/2012, 09:26
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Crear checkox dinamicamente

Cita:
Iniciado por linuxzero Ver Mensaje
cambiale el name a name="actualiza[]" asi cuanse envies el $_POST['actualiza'] te va a llegar un array y lo recorres. Yo te recomiendo que cad value tenga el id del item a actualizar
Podrias explicarme un poco mejor lo del value... Disculpa la molestia
  #10 (permalink)  
Antiguo 18/04/2012, 09:31
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Crear checkox dinamicamente

claro, por ejemplo algo asi:

Código PHP:
Ver original
  1. echo "<input type='checkbox' name='actualiza[]' value='" . $id_item . "' />";

Entonces, cuando envies el $_POST del formulario para ver que checkbox esta marcado para actualizar, harias algo asi:

Código PHP:
Ver original
  1. if ($_POST) {
  2.      foreach ($_POST['actualiza'] as $item_a_actualizar) {
  3.           // en la variable $item_a_actualizar vas a tener cada valor del vector de los ids que irian a actualizar
  4.           // Lo necesario para actualizar en la base de datos
  5.      }
  6. }

Esto es por ejemplo si te viene un set de datos como el siguiente:

Código PHP:
Ver original
  1. $actualiza[0] = 2;
  2. $actualiza[1] = 5;
  3. $actualiza[2] = 10;

Este es el vector que te llegaria si seleccionas los checkbox correspondientes a los items a actualizar con id 2 5 y 10 respectivamente.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #11 (permalink)  
Antiguo 18/04/2012, 09:42
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Crear checkox dinamicamente

Cita:
Iniciado por linuxzero Ver Mensaje
claro, por ejemplo algo asi:

Código PHP:
Ver original
  1. echo "<input type='checkbox' name='actualiza[]' value='" . $id_item . "' />";

Entonces, cuando envies el $_POST del formulario para ver que checkbox esta marcado para actualizar, harias algo asi:

Código PHP:
Ver original
  1. if ($_POST) {
  2.      foreach ($_POST['actualiza'] as $item_a_actualizar) {
  3.           // en la variable $item_a_actualizar vas a tener cada valor del vector de los ids que irian a actualizar
  4.           // Lo necesario para actualizar en la base de datos
  5.      }
  6. }

Esto es por ejemplo si te viene un set de datos como el siguiente:

Código PHP:
Ver original
  1. $actualiza[0] = 2;
  2. $actualiza[1] = 5;
  3. $actualiza[2] = 10;

Este es el vector que te llegaria si seleccionas los checkbox correspondientes a los items a actualizar con id 2 5 y 10 respectivamente.
Disculpa que te siga molestando pero no veo de donde viene el $id_item Supongo que item_a_actualizar viene de
$item_a_actualizar=$_POST['id_item']

Muchas gracias
  #12 (permalink)  
Antiguo 18/04/2012, 09:43
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Crear checkox dinamicamente

en realidad $item_a_actualizar tiene que venir de la consulta a la base que usaste para obtener los datos para mostrar cada fila, entendes?
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #13 (permalink)  
Antiguo 18/04/2012, 09:47
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Crear checkox dinamicamente

Cita:
Iniciado por linuxzero Ver Mensaje
en realidad $item_a_actualizar tiene que venir de la consulta a la base que usaste para obtener los datos para mostrar cada fila, entendes?
Por supuesto... Seria algo como
$item_a_actualizar=mysql_query(consulta, conexion);

El id_item me sigue generando dudas... Disculpa que ande molestando tanto
  #14 (permalink)  
Antiguo 18/04/2012, 09:50
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Crear checkox dinamicamente

perdona me confundi: el $id_item tiene que ser el valor que traes en la base de datos, el $item_a_actualizar es el valor que guarda cada iteracion del vector, que contendria cada $id_item entendes?

en el value de cada checkbox tiene que estar el id o algo que identifique a cada item por separado, y cuando envies el post, al tenes como name cada checkbox el mismo pero en forma de vector, te va a llegar un vector con los values de los checkbox seleccionados, entonces lo recorres, y en cada iteracion usas el valor del mismo que es el que usarias en la condicion del where del update para saber cual hay que actualizar.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #15 (permalink)  
Antiguo 18/04/2012, 09:57
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Crear checkox dinamicamente

Cita:
Iniciado por linuxzero Ver Mensaje
perdona me confundi: el $id_item tiene que ser el valor que traes en la base de datos, el $item_a_actualizar es el valor que guarda cada iteracion del vector, que contendria cada $id_item entendes?

en el value de cada checkbox tiene que estar el id o algo que identifique a cada item por separado, y cuando envies el post, al tenes como name cada checkbox el mismo pero en forma de vector, te va a llegar un vector con los values de los checkbox seleccionados, entonces lo recorres, y en cada iteracion usas el valor del mismo que es el que usarias en la condicion del where del update para saber cual hay que actualizar.
Ya esta mas claro... Disculpa por haberte hecho gastar tanto tiempo, pero es que tengo que hacer varias cosas para la pagina y ando metido en varios foros y ando un poco enredado... Muchas gracias hermano
  #16 (permalink)  
Antiguo 18/04/2012, 09:59
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Crear checkox dinamicamente

De nada campeon, cualquier cosa postea el codigo y lo vemos. Abrazo!
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #17 (permalink)  
Antiguo 02/05/2012, 09:08
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Crear checkox dinamicamente

Disculpen que tenga que abrir un post viejo pero no se que hacer... Esto es lo que tengo hecho

Código PHP:
Ver original
  1. while($var=mysql_fetch_array($resultado))
  2.     {
  3.  
  4.         echo '<tr>';
  5.         echo '<td>',$var['0'], '</td>';
  6.         echo '<td>',$var['1'], '</td>';
  7.         echo '<td>',$var['2'], '</td>';
  8.         echo '<td>',$var['3'], '</td>';
  9.         echo '<td>',$var['4'], '</td>';
  10.         echo '<td>',$var['5'], '</td>';
  11.         echo '<td>',$var['6'], '</td>';
  12.         echo '<td>',$var['7'], '</td>';
  13.         echo '<td>',$var['8'], '</td>';
  14.         echo "<td><input type='checkbox' name='actualizar[]' value='1'",$var['9'],"</td>";
  15.         echo '</tr>';
  16.     }

Y el archivo que recibe los datos del post tiene esto

Código PHP:
Ver original
  1. foreach($_POST['actualizar'] as $estado)
  2.     {
  3.     $update="UPDATE reporte_horas SET status='1' where $estado=1";
  4.     $resultado=mysql_query($update, $con);
  5.     }

Pero me dice que no reconoce el array actualizar y que el foreach tiene argumentos invalidos... Si alguien puede echarme una mano... Muchas gracias
  #18 (permalink)  
Antiguo 02/05/2012, 09:19
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Crear checkox dinamicamente

No se entiende bien el checkbox, asique vamos por pasos:

1) el value del checkbox tiene concatenado el 1 y $var[9]? o solo el value es 1 y queres mostrar en pantalla al lado del checkbox el contenido de $var[9]?

2) En caso de mostrar por pantalla el valor de $var[9] estas concatenando mal los strings, no es con coma sino con punto.

3) Dependiendo del punto 1 es como vas a procesar la informacion en el UPDATE

4) En el caso de que el value del checkbox tenga solo el valor 1, entonces en la consulta del UPDATE la parte del where esta de mas ya que $estado va a tener siempre el valor 1 y $estado=1 es equivalente a 1=1 y eso se cumple siempre, entonces es redundante lo que estas haciendo.

Fijate si podes responder estas dudas asi vemos como resolverlo.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #19 (permalink)  
Antiguo 02/05/2012, 09:27
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Crear checkox dinamicamente

Cita:
Iniciado por linuxzero Ver Mensaje
No se entiende bien el checkbox, asique vamos por pasos:

1) el value del checkbox tiene concatenado el 1 y $var[9]? o solo el value es 1 y queres mostrar en pantalla al lado del checkbox el contenido de $var[9]?

2) En caso de mostrar por pantalla el valor de $var[9] estas concatenando mal los strings, no es con coma sino con punto.

3) Dependiendo del punto 1 es como vas a procesar la informacion en el UPDATE

4) En el caso de que el value del checkbox tenga solo el valor 1, entonces en la consulta del UPDATE la parte del where esta de mas ya que $estado va a tener siempre el valor 1 y $estado=1 es equivalente a 1=1 y eso se cumple siempre, entonces es redundante lo que estas haciendo.

Fijate si podes responder estas dudas asi vemos como resolverlo.
No estoy concatenando los valores y tampoco me interesa mostrar el valor por pantalla

Voy a intentar explicar un poco mejor lo que quiero hacer... Estoy creando una tabla dinamicamente junto con los checkbox(van a servir para aprobar horas trabajadas)... En eso no hay ningun problema... El detalle es que el jefe seleccione cada checkbox por separado y dependiendo si esta seleccionado, el status de la actividad cambia de 0 (sin aprobar) a 1 (aprobado)...

Es decir que voy a mostrar una tabla con las actividades por aprobar (hago un query donde pregunto las actividades con status=0) y el jefe va a seleccionar las que crea correcta... Si esta seleccionado el checkbox, pasa a tener status=1 y los que no fueron seleccionados quedan igual...
  #20 (permalink)  
Antiguo 02/05/2012, 09:34
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Crear checkox dinamicamente

Si no vas a concatenar ni mostrar nada explica esta linea porfavor:

Código PHP:
Ver original
  1. echo "<td><input type='checkbox' name='actualizar[]' value='1'",$var['9'],"</td>";

Porque sino $var[9] de que sirve? porque hay un 1 antes de $var[9] y encima hay comas, no se entiende mucho, de que escribas bien esta linea es que te va a empezar a meter datos en el vector $_POST['actualizar']
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #21 (permalink)  
Antiguo 02/05/2012, 09:40
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Crear checkox dinamicamente

Cita:
Iniciado por linuxzero Ver Mensaje
Si no vas a concatenar ni mostrar nada explica esta linea porfavor:

Código PHP:
Ver original
  1. echo "<td><input type='checkbox' name='actualizar[]' value='1'",$var['9'],"</td>";

Porque sino $var[9] de que sirve? porque hay un 1 antes de $var[9] y encima hay comas, no se entiende mucho, de que escribas bien esta linea es que te va a empezar a meter datos en el vector $_POST['actualizar']
La variable $var['9'] viene del var que esta en el while y el 9 es el indice que corresponde a el campo status
  #22 (permalink)  
Antiguo 02/05/2012, 09:44
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Crear checkox dinamicamente

entonces deberia ser asi:

Código PHP:
Ver original
  1. echo "<td><input type='checkbox' name='actualizar[]' value='" . $var['9'] . "' /></td>";

igualmente cuales son los valores posibles en $var[9]?

porque el sql de UPDATE no me termina de cerrar mucho
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #23 (permalink)  
Antiguo 02/05/2012, 09:46
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Crear checkox dinamicamente

Cita:
Iniciado por linuxzero Ver Mensaje
entonces deberia ser asi:

Código PHP:
Ver original
  1. echo "<td><input type='checkbox' name='actualizar[]' value='" . $var['9'] . "' /></td>";

igualmente cuales son los valores posibles en $var[9]?

porque el sql de UPDATE no me termina de cerrar mucho
Seria 0 cuando sin aprobar y 1 cuando este aprobado... Por eso quiero hacerlo con checkbox... Porque cuando este seleccionado su status seria 1 y cuando no se seleccione seria 0, es decir, en el ultimo caso no cambiaria
  #24 (permalink)  
Antiguo 02/05/2012, 09:52
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Crear checkox dinamicamente

Eso ahora lo entiendo, ahora lo qeu no cierra es el sql

Código PHP:
Ver original
  1. $update="UPDATE reporte_horas SET status='1' where $estado=1";

porque segun como lo escribiste va a modificar TODOS los registros a status = '1' cuando el estado de cada iteracion sea igual a 1, es decir que por cada iteracion te va a cambiar el status a todos los registros...

Segun creo yo, te falta un dato mas pasar que sea el identificatorio del registro, porque sino actua sobre TODOS, y no creo que sea lo que buscas.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #25 (permalink)  
Antiguo 02/05/2012, 09:56
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Crear checkox dinamicamente

Cita:
Iniciado por linuxzero Ver Mensaje
Eso ahora lo entiendo, ahora lo qeu no cierra es el sql

Código PHP:
Ver original
  1. $update="UPDATE reporte_horas SET status='1' where $estado=1";

porque segun como lo escribiste va a modificar TODOS los registros a status = '1' cuando el estado de cada iteracion sea igual a 1, es decir que por cada iteracion te va a cambiar el status a todos los registros...

Segun creo yo, te falta un dato mas pasar que sea el identificatorio del registro, porque sino actua sobre TODOS, y no creo que sea lo que buscas.
A que te refieres??? Que cambios deberia hacer segun tus conocimientos??? Muchas gracias por tu tiempo
  #26 (permalink)  
Antiguo 02/05/2012, 10:01
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Crear checkox dinamicamente

Me refiero que en el checkbox deberias pasarle concatenado en el value un valor que identifique al registro dentro de la tabla de reporte_horas y le concatenas tambien el valor de $var[9] caso ejemplo:

Código PHP:
Ver original
  1. echo "<td><input type='checkbox' name='actualizar[]' value='" . $var[0] . "," . $var['9'] . "' /></td>";

Entonces ahora en $estado tendrias el valor "12,1" por ejemplo, donde 12 es el id del registro dentro de reporte_horas y 1 el estado al cual cambiar entonces sabiendo esto podes hacer lo siguiente:

Código PHP:
Ver original
  1. foreach($_POST['actualizar'] as $registro) {
  2.     $datos = explode(",", $registro);
  3.     $update="UPDATE reporte_horas SET status='" . $datos[1] . "' where ID_REGISTRO='" . $datos[0] . "'";
  4.     $resultado=mysql_query($update, $con);
  5. }
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #27 (permalink)  
Antiguo 02/05/2012, 10:19
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Crear checkox dinamicamente

Cita:
Iniciado por linuxzero Ver Mensaje
Me refiero que en el checkbox deberias pasarle concatenado en el value un valor que identifique al registro dentro de la tabla de reporte_horas y le concatenas tambien el valor de $var[9] caso ejemplo:

Código PHP:
Ver original
  1. echo "<td><input type='checkbox' name='actualizar[]' value='" . $var[0] . "," . $var['9'] . "' /></td>";

Entonces ahora en $estado tendrias el valor "12,1" por ejemplo, donde 12 es el id del registro dentro de reporte_horas y 1 el estado al cual cambiar entonces sabiendo esto podes hacer lo siguiente:

Código PHP:
Ver original
  1. foreach($_POST['actualizar'] as $registro) {
  2.     $datos = explode(",", $registro);
  3.     $update="UPDATE reporte_horas SET status='" . $datos[1] . "' where ID_REGISTRO='" . $datos[0] . "'";
  4.     $resultado=mysql_query($update, $con);
  5. }
Ya lo hice tal cual, pero me da estos dos errores

Notice: Undefined index: actualizar

Warning: Invalid argument supplied for foreach()

Te voy a pasar el codigo adaptado


Código PHP:
Ver original
  1. while($var=mysql_fetch_array($resultado))
  2.     {
  3.  
  4.         echo '<tr>';
  5.         echo '<td>',$var['1'], '</td>';
  6.         echo '<td>',$var['2'], '</td>';
  7.         echo '<td>',$var['3'], '</td>';
  8.         echo '<td>',$var['4'], '</td>';
  9.         echo '<td>',$var['5'], '</td>';
  10.         echo '<td>',$var['6'], '</td>';
  11.         echo '<td>',$var['7'], '</td>';
  12.         echo '<td>',$var['8'], '</td>';
  13.         echo '<td>',$var['9'], '</td>';
  14.         echo "<td><input type='checkbox' name='actualizar[]' value='".$var['0'].",".$var['10']."' /></td>";
  15.         echo '</tr>';
  16.     }
  17.     ?>


Y al archivo al que es enviado los datos

Código PHP:
Ver original
  1. foreach($_POST['actualizar'] as $registro)
  2.     {
  3.     $datos=explode(",", $registro);
  4.     $update="UPDATE reporte_horas SET status='".$datos['1']."' where codigo_reporte_horas'".$datos['0']."'";
  5.     $resultado=mysql_query($update, $con);
  6.     }

P.D. Si ahora te fijas, el var[9] cambio a var[10] porque se me habia olvidado colocar el campo clave y por eso ahora cambio su valor

Muchas gracias
  #28 (permalink)  
Antiguo 02/05/2012, 11:14
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Crear checkox dinamicamente

postea todo el codigo, el que tenga los checkbox y el de la consulta, y ya te adelanto la consulta esta mal, en la condicion te falta la igualdad.

Ahora que lo veo bien, no esta del todo bien enviarle 2 cosas en el value del checkbox, porque vos lo unico que queres es cambiarle el estado a los que esten seleccionados, entonces solo deberias pasarle en el value el id del registro para el where, y el estado se lo cambias en la misma consulta por el que deberias. entendes? quedandote algo asi:

Código PHP:
Ver original
  1. foreach($_POST['actualizar'] as $idRegistro) {
  2.     $update="UPDATE reporte_horas SET status='1' where codigo_reporte_horas = '" . $idRegistro . "'";
  3.     $resultado=mysql_query($update, $con);
  4. }

El status va a depender del estado anterior o no, eso fijate vos.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com

Última edición por linuxzero; 02/05/2012 a las 11:23
  #29 (permalink)  
Antiguo 02/05/2012, 11:45
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Crear checkox dinamicamente

Cita:
Iniciado por linuxzero Ver Mensaje
postea todo el codigo, el que tenga los checkbox y el de la consulta, y ya te adelanto la consulta esta mal, en la condicion te falta la igualdad.

Ahora que lo veo bien, no esta del todo bien enviarle 2 cosas en el value del checkbox, porque vos lo unico que queres es cambiarle el estado a los que esten seleccionados, entonces solo deberias pasarle en el value el id del registro para el where, y el estado se lo cambias en la misma consulta por el que deberias. entendes? quedandote algo asi:

Código PHP:
Ver original
  1. foreach($_POST['actualizar'] as $idRegistro) {
  2.     $update="UPDATE reporte_horas SET status='1' where codigo_reporte_horas = '" . $idRegistro . "'";
  3.     $resultado=mysql_query($update, $con);
  4. }

El status va a depender del estado anterior o no, eso fijate vos.
La variable idRegistro que pones en el foreach de donde viene? Ya te posteo el codigo completo
  #30 (permalink)  
Antiguo 02/05/2012, 11:47
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Crear checkox dinamicamente

Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/control.dwt.php" codeOutsideHTMLIsLocked="false" -->
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <!-- InstanceBeginEditable name="doctitle" -->
  6. <title>Registro de Control de Horas</title>
  7. <!-- InstanceEndEditable -->
  8. <style type="text/css">
  9. <!--
  10. body {
  11.     font: 100%/1.4 Verdana, Arial, Helvetica, sans-serif;
  12.     background: #4E5869;
  13.     margin: 0;
  14.     padding: 0;
  15.     color: #000;
  16. }
  17.  
  18. /* ~~ Selectores de elemento/etiqueta ~~ */
  19. ul, ol, dl { /* Debido a las diferencias existentes entre los navegadores, es recomendable no añadir relleno ni márgenes en las listas. Para lograr coherencia, puede especificar las cantidades deseadas aquí o en los elementos de lista (LI, DT, DD) que contienen. Recuerde que lo que haga aquí se aplicará en cascada en la lista .nav, a no ser que escriba un selector más específico. */
  20.     padding: 0;
  21.     margin: 0;
  22. }
  23. h1, h2, h3, h4, h5, h6, p {
  24.     margin-top: 0;   /* la eliminación del margen superior resuelve un problema que origina que los márgenes escapen de la etiqueta div contenedora. El margen inferior restante lo mantendrá separado de los elementos de que le sigan. */
  25.     padding-right: 15px;
  26.     padding-left: 15px; /* la adición de relleno a los lados del elemento dentro de las divs, en lugar de en las divs propiamente dichas, elimina todas las matemáticas de modelo de cuadro. Una div anidada con relleno lateral también puede usarse como método alternativo. */
  27. }
  28. a img { /* este selector elimina el borde azul predeterminado que se muestra en algunos navegadores alrededor de una imagen cuando está rodeada por un vínculo */
  29.     border: none;
  30. }
  31.  
  32. /* ~~ La aplicación de estilo a los vínculos del sitio debe permanecer en este orden (incluido el grupo de selectores que crea el efecto hover -paso por encima-). ~~ */
  33. a:link {
  34.     color:#414958;
  35.     text-decoration: underline; /* a no ser que aplique estilos a los vínculos para que tengan un aspecto muy exclusivo, es recomendable proporcionar subrayados para facilitar una identificación visual rápida */
  36. }
  37. a:visited {
  38.     color: #4E5869;
  39.     text-decoration: underline;
  40. }
  41. a:hover, a:active, a:focus { /* este grupo de selectores proporcionará a un usuario que navegue mediante el teclado la misma experiencia de hover (paso por encima) que experimenta un usuario que emplea un ratón. */
  42.     text-decoration: none;
  43. }
  44.  
  45. /* ~~ este contenedor rodea a todas las demás divs, lo que les asigna su anchura basada en porcentaje ~~ */
  46. .container {
  47.     width: 90%;
  48.     max-width: 1260px;/* puede que sea conveniente una anchura máxima (max-width) para evitar que este diseño sea demasiado ancho en un monitor grande. Esto mantiene una longitud de línea más legible. IE6 no respeta esta declaración. */
  49.     min-width: 780px;/* puede que sea conveniente una anchura mínima (min-width) para evitar que este diseño sea demasiado estrecho. Esto permite que la longitud de línea sea más legible en las columnas laterales. IE6 no respeta esta declaración. */
  50.     background: #FFF;
  51.     margin: 0 auto; /* el valor automático de los lados, unido a la anchura, centra el diseño. No es necesario si establece la anchura de .container en el 100%. */
  52. }
  53.  
  54. /* ~~no se asigna una anchura al encabezado. Se extenderá por toda la anchura del diseño. Contiene un marcador de posición de imagen que debe sustituirse por su propio logotipo vinculado~~ */
  55. .header {
  56.     background: #6F7D94;
  57. }
  58.  
  59. /* ~~ Esta es la información de diseño. ~~
  60.  
  61. 1) El relleno sólo se sitúa en la parte superior y/o inferior de la div. Los elementos situados dentro de esta div tienen relleno a los lados. Esto le ahorra las "matemáticas de modelo de cuadro". Recuerde que si añade relleno o borde lateral a la div propiamente dicha, éste se añadirá a la anchura que defina para crear la anchura *total*. También puede optar por eliminar el relleno del elemento en la div y colocar una segunda div dentro de ésta sin anchura y el relleno necesario para el diseño deseado.
  62.  
  63. */
  64. .content {
  65.     padding: 10px 0;
  66.     width:100%;
  67. }
  68.  
  69. /* ~~ Este selector agrupado da espacio a las listas del área de .content ~~ */
  70. .content ul, .content ol {
  71.     padding: 0 15px 15px 40px; /* este relleno reproduce en espejo el relleno derecho de la regla de encabezados y de párrafo incluida más arriba. El relleno se ha colocado en la parte inferior para que el espacio existente entre otros elementos de la lista y a la izquierda cree la sangría. Estos pueden ajustarse como se desee. */
  72. }
  73.  
  74. /* ~~ El pie de página ~~ */
  75. .footer {
  76.     padding: 10px 0;
  77.     background: #6F7D94;
  78. }
  79.  
  80. /* ~~ clases float/clear varias ~~ */
  81. .fltrt {  /* esta clase puede utilizarse para que un elemento flote en la parte derecha de la página. El elemento flotante debe preceder al elemento junto al que debe aparecer en la página. */
  82.     float: right;
  83.     margin-left: 8px;
  84. }
  85. .fltlft { /* esta clase puede utilizarse para que un elemento flote en la parte izquierda de la página. El elemento flotante debe preceder al elemento junto al que debe aparecer en la página. */
  86.     float: left;
  87.     margin-right: 8px;
  88. }
  89. .clearfloat { /* esta clase puede situarse en una <br /> o div vacía como elemento final tras la última div flotante (dentro de #container) si #footer se elimina o se saca fuera de #container */
  90.     clear:both;
  91.     height:0;
  92.     font-size: 1px;
  93.     line-height: 0px;
  94. }
  95. -->
  96. </style>
  97. <!-- InstanceBeginEditable name="head" -->
  98. <script src="../SpryAssets/SpryValidationSelect.js" type="text/javascript"></script>
  99. <script src="../SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
  100. <script src="../SpryAssets/SpryValidationTextarea.js" type="text/javascript"></script>
  101. <link href="../SpryAssets/SpryValidationSelect.css" rel="stylesheet" type="text/css" />
  102. <link href="../SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" />
  103. <link href="../SpryAssets/SpryValidationTextarea.css" rel="stylesheet" type="text/css" />
  104. <script src="../SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
  105. <link href="../SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css" />
  106. <link href="estilo_tabla.css" rel="stylesheet" type="text/css"/>
  107. <!-- InstanceEndEditable -->
  108. </head>
  109.  
  110. <body>
  111.  
  112. <div class="container">
  113.   <div class="header"><a href="index.php"><img src="http://www.forosdelweb.com/f18/imagenes/logo.png" alt="Insertar logotipo aquí" name="Insert_logo" width="143" height="59" id="Insert_logo" style="background: #8090AB; display:block;" /></a>
  114.     <!-- end .header --></div>
  115.   <div class="content"><!-- end .content -->
  116.   <ul id="MenuBar1" class="MenuBarHorizontal">
  117.       <li><a href="ingresar_horas.php">Ingresar Horas</a>      </li>
  118.       <li><a href="validar_horas.php">Validar Horas</a></li>
  119. </ul>
  120. <!-- InstanceBeginEditable name="contenido" -->
  121.    <link rel="stylesheet" type="text/css" href="estilo_form.css" />
  122. <?php
  123.     include("../admin/conexion.php");
  124.    
  125.     $con=conectar();
  126.    
  127.     $iniciales_consultorU=$_POST['iniciales_consultor'];
  128.    
  129.     $select="SELECT codigo_reporte_horas, iniciales_consultor, DATE_FORMAT(fecha, '%d/%m/%Y'), nombre_cliente, nombre_proyecto, nombre_sub_proyecto, nombre_actividad, nombre_sub_actividad, gerente_proyecto, horas, status FROM reporte_horas WHERE iniciales_consultor='$iniciales_consultorU' and status=0";
  130.     $resultado=mysql_query($select,$con);
  131.     $valida=mysql_num_rows($resultado);
  132.     if($valida<=0)
  133.     {
  134.     ?>
  135.     <script type="text/javascript">alert("No se han encontrado registros. Por favor, verifique los datos e intente nuevamente");</script>
  136.     <script type="text/javascript">window.location="validar_horas.php";</script>
  137.     <?php
  138.     }
  139.     ?>
  140.     <table border="1" align="center">
  141.     <thead><tr><th>Iniciales Consultor</th><th>Fecha</th><th>Nombre Cliente</th><th>Nombre Proyecto</th><th>Nombre Sub-Proyecto</th><th>Nombre Actividad</th><th>Nombre Sub-Actividad</th><th>Gerente Proyecto</th><th>Horas</th><th>Status</th></tr></thead>
  142.     <?
  143.     while($var=mysql_fetch_array($resultado))
  144.     {
  145.  
  146.         echo '<tr>';
  147.         echo '<td>',$var['1'], '</td>';
  148.         echo '<td>',$var['2'], '</td>';
  149.         echo '<td>',$var['3'], '</td>';
  150.         echo '<td>',$var['4'], '</td>';
  151.         echo '<td>',$var['5'], '</td>';
  152.         echo '<td>',$var['6'], '</td>';
  153.         echo '<td>',$var['7'], '</td>';
  154.         echo '<td>',$var['8'], '</td>';
  155.         echo '<td>',$var['9'], '</td>';
  156.         echo "<td><input type='checkbox' name='actualizar[]' value='".$var['0'].",".$var['10']."' /></td>";
  157.         echo '</tr>';
  158.     }
  159.     ?>
  160.     </table>
  161.         <form name="form1" method="post" action="update_horas.php">
  162.             <input type="submit" name="Enviar" id="Enviar" value="Enviar" style="margin-left:15%; margin-right:30%; margin-top;50px;"/>
  163.             <input type="reset" name="Cancelar" id="Cancelar" value="Cancelar" style="margin-top:50px;"/>
  164.         </form>
  165.     <?php
  166.  
  167.     mysql_free_result($resultado);
  168.     mysql_close($con);
  169.     ?>
  170. <!-- InstanceEndEditable --></div>
  171.   <!-- end .container --></div>
  172. </body>
  173. <!-- InstanceEnd --></html>

Este archivo es donde sale la tabla junto con los checkbox

Etiquetas: dinamicamente, registro, tabla
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 11:18.