Foros del Web » Programando para Internet » PHP »

insertar valor checkbox en BD

Estas en el tema de insertar valor checkbox en BD en el foro de PHP en Foros del Web. Tengo una tabla con checkbox y lo que quiero es que los mensajes que se seleccionen se cambie el estado a leido, he estado mirando ...
  #1 (permalink)  
Antiguo 21/04/2010, 04:15
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 1 mes
Puntos: 0
insertar valor checkbox en BD

Tengo una tabla con checkbox y lo que quiero es que los mensajes que se seleccionen se cambie el estado a leido, he estado mirando por le foro pero no me aclaro muy bien con lo que he vist ode for each.

He llegado a algo como esto


$mens_array = $_POST['mens'];

$cadena= implode (",", $mens_array);

foreach($_POST['mens_array'] as $m)

y aki iria el update
$consulta=mysql_query("UPDATE TContacto SET leido = 'si' WHERE contacto_ID =¿? )";


Código PHP:
Ver original
  1. <form name="frm" action="php/estadomensajes.php" method="POST" onSubmit="return validar(this)">
  2.  
  3.       <table  border="1" cellpadding="0" cellspacing="2" bordercolor="#000000">
  4.       <?php
  5.  
  6.     echo "<tr> \n";
  7.     echo "<td bgcolor=\"#FFFFCC\"><center>ID</center></td> \n";
  8.     echo "<td bgcolor=\"#FFFFCC\"><center>E-mail</center></td> \n";
  9.     echo "<td bgcolor=\"#FFFFCC\"><center>Fecha</center></td> \n";
  10.     echo "<td bgcolor=\"#FFFFCC\">Marcar</td> \n";
  11.     echo "</tr> \n";
  12.  
  13.     do {
  14.    
  15.         echo "<tr> \n";
  16.         ?>
  17.  
  18.         <?php
  19.             echo "<td><center><a href=detallesmensaje.php?ID=$row[contacto_ID]>".$row["contacto_ID"]."</center></td> \n";
  20.            
  21.             echo "<td><center>".$row["email"]."</center></td>\n";
  22.                
  23.             $f = explode("-", $row[fecha]);
  24.            
  25.             echo "<td><center>".$f[2]."-".$f[1]."-".$f[0]."</center></td> \n";
  26.             ?>
  27.             <td><center><input type="checkbox" name="mens[]" value="<?php $row["contacto_ID"]?>"></center></td>
  28.             <?php
  29.             echo "<td><center>".$row["contacto_ID"]."</center></td>\n";
  30.  
  31.            
  32.         echo "</tr> \n";
  33.    
  34.     } while ($row = mysql_fetch_array($result));
  35.    
  36.     ?>
  37.       </table>
  38.  
  39.       <input name="leido" type="submit" class="btn" value="Marcar como leido" />
  40.     </form>
  #2 (permalink)  
Antiguo 21/04/2010, 05:14
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: insertar valor checkbox en BD

si, te faltaría mandarlo a la bbdd

harias la conexion y elegirias la bbdd

yo lo haría con un while porque siempre uso estos, pero da igual el bucle que elijas.

$mens_array = $_POST['mens'];

$a=0;
while(count($mens_array)>$a)
{
$idusuario=$_SESSION['id'];
mysql_query("UPDATE TContacto SET leido = 'si' WHERE contacto_ID ='$idusuario';
a++;
}

No obstante, comento que ahí no aclaras el post que guardas :S
  #3 (permalink)  
Antiguo 21/04/2010, 05:45
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: insertar valor checkbox en BD

La parte de conexion de la base de datos y todo eso ya lo hago antes pero era por no poner todo, mi problema es coger los checkboxs seleccionados en el formulario y despues modificar los mensajes que han sido seleccionados mediante los checkboxs.

La parte esta no la entiendo

$idusuario=$_SESSION['id'];

Como puedo recoger el valor del checkbox?

<td><center><input type="checkbox" name="mens[]" value="<?php $row["contacto_ID"]?>"></center></td>
  #4 (permalink)  
Antiguo 21/04/2010, 08:31
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: insertar valor checkbox en BD

Tienes mas o menos la idea, puedes recorrer el array $_POST['mens'] y en cada iteracion del ciclo que uses haces un update, tu error en el post original es que $_POST['mens_array'] no existe.
O tambien puedes juntarlos todos en una cadena (como lo haces con implode) y al hacer el update usas la sintaxis "...where campo in(valor1,valor2,...)"
  #5 (permalink)  
Antiguo 21/04/2010, 09:59
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: insertar valor checkbox en BD

darkasecas gracias por contestar ahora tengo asi el codigo, pero mi problema es que no se que poner en el where del update, no se cual es el valor que recojo del checkbox.

$mens_array = $_POST['mens'];

$i=0;
$aux = count($mens_array);

while($aux>$i)
{
mysql_query("UPDATE TContacto SET leido = 'si' WHERE contacto_ID ='¿?'");
$i++;
}
  #6 (permalink)  
Antiguo 21/04/2010, 10:37
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: insertar valor checkbox en BD

Como, no sabes lo que estas haciendo con ese codigo?
$mens_array es el array con los valores de los checkboxes
$i es el indice con el que estas recorriendo el array
  #7 (permalink)  
Antiguo 21/04/2010, 11:14
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: insertar valor checkbox en BD

Perdon si no me explico bien, no es que no entienda lo que estoy haciendo.
Se que en array $mens_array estan los valores de los checkboxs, pero hago un echo para ver si estan guardados los indices y no me muestra nada

echo $mens_array[0];

Y elementos si que hay porque hago count($mens_array); y me da 1,2 dependiendo de los checboxs marcados

Perdon por las molestias
  #8 (permalink)  
Antiguo 21/04/2010, 11:22
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: insertar valor checkbox en BD

A ver...

Para recuperar el array de los checkbox...

Código PHP:
Ver original
  1. $_POST['mens'];

Eso lo tienes claro no?

Ahora bien, si estás seguro que viene con datos:

Código PHP:
Ver original
  1. $sql = 'UPDATE tabla SET campo_a_actualizar=1 WHERE id_tabla in ('.implode($_POST['mens']).')'

Busca sobre implode si no sabes que hace

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #9 (permalink)  
Antiguo 21/04/2010, 11:23
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: insertar valor checkbox en BD

haz un var_dump() de $_POST y de $mens_array para ver que contienen.
Y checa en el formulario si los values de los checkboxes salen correctamente.
  #10 (permalink)  
Antiguo 21/04/2010, 12:34
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: insertar valor checkbox en BD

Gracias por las aclaraciones ya he mirado lo que hace var_dump() y implode
Pero ahora me da error al ejecutar la sentencia

No se si esta bien escrita o falla alguna comilla

Código MySQL:
Ver original
  1. mysql_query = ('UPDATE TContacto SET leido = 'si' WHERE contacto_ID IN ('.implode($_POST['mens']).')');
  #11 (permalink)  
Antiguo 21/04/2010, 12:39
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: insertar valor checkbox en BD

Siempre ayuda si dices que error te marca...
En fin, tienes una cadena que incluye comillas simples, delimitada por comillas simples.
1)Escapa las comillas que estan dentro de la cadena, o
2)Delimita la cadena con comillas dobles
  #12 (permalink)  
Antiguo 21/04/2010, 12:43
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: insertar valor checkbox en BD

Perdon que sea tan pesado, supongo que te refieres a esto, las comillas simple dentro de las doble, tambien lo habia intentado y me da el siguiente error por eso habia probado con las simples
Código MySQL:
Ver original
  1. mysql_query = ("UPDATE TContacto SET leido = 'si' WHERE contacto_ID IN ('.implode($_POST['mens']).')");



El error que me da es este
Parse error: parse error in /srv/www/htdocs/javi/GestCamping/WEB_INF/php/estadomensajes.php on line 64
  #13 (permalink)  
Antiguo 21/04/2010, 12:51
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: insertar valor checkbox en BD

Ese error es porque estas abriendo una cadena con comillas dobles, luego la cierras con simples, y despues abres otra con simple y terminas con dobles.
  #14 (permalink)  
Antiguo 21/04/2010, 12:57
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: insertar valor checkbox en BD

Lo siento darkasecas pero no entiendo como poner la sentencia

Porque si quito las comillas simples que estan antes de limplode de da error
Si pongo dobles en vez de simples tambien me da error
Si no pongo ninguna tambien me da error :(
  #15 (permalink)  
Antiguo 21/04/2010, 13:06
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: insertar valor checkbox en BD

creo que se refiere a que al introducir el implode $_POST, no cierras igual que abriste:

mysql_query = ("UPDATE TContacto SET leido = 'si' WHERE contacto_ID IN (".implode($_POST['mens']).")");
  #16 (permalink)  
Antiguo 21/04/2010, 13:11
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: insertar valor checkbox en BD

millan2525 He probado como me dices y me sigue dando el mismo error
  #17 (permalink)  
Antiguo 21/04/2010, 13:35
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: insertar valor checkbox en BD

Hum te falta un parametro en el implode
  #18 (permalink)  
Antiguo 22/04/2010, 04:57
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: insertar valor checkbox en BD

Si ya lo habia cambiado yo pero sigo igual con el error de las comas.
Donde estoy poniendo mal las comillas, y siento mi insistencia

Código MySQL:
Ver original
  1. mysql_query = ("UPDATE TContacto SET leido = 'si' WHERE contacto_ID IN (".implode(",",$_POST['mens']).")");
  #19 (permalink)  
Antiguo 22/04/2010, 08:36
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: insertar valor checkbox en BD

No veo que haya error en esa linea, postea el codigo completo, e indica el error que marca y cual es la linea en la que lo marca.
  #20 (permalink)  
Antiguo 22/04/2010, 08:38
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: insertar valor checkbox en BD

Hazle un echo al consulta para que te salga en pantalla, la copias y la ejecutas en mysql directamente.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #21 (permalink)  
Antiguo 22/04/2010, 09:13
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: insertar valor checkbox en BD

El codigo que tengo es el siguiente

include "../conexion.php";

if(isset($_POST['leido']))
{
echo mysql_query = ("UPDATE TContacto SET leido = 'si' WHERE contacto_ID IN (".implode(",",$_POST['mens']).")");

<?php
}

if(isset($_POST['noleido'])){

.....

El error que me da es:
Parse error: parse error, expecting `','' or `';'' in /srv/www/htdocs/javi/GestCamping/WEB_INF/php/estadomensajes.php on line 36
  #22 (permalink)  
Antiguo 22/04/2010, 09:30
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: insertar valor checkbox en BD

Cita:
Iniciado por darkasecas Ver Mensaje
postea el codigo completo, e indica el error que marca y cual es la linea en la que lo marca.
  #23 (permalink)  
Antiguo 22/04/2010, 09:54
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: insertar valor checkbox en BD

Código PHP:
Ver original
  1. <?php
  2. include "../conexion.php";
  3.  
  4. if(isset($_POST['leido']))
  5. {
  6. echo mysql_query = ("UPDATE TContacto SET leido = 'si' WHERE contacto_ID IN (".implode(",",$_POST['mens']).")");
  7.  
  8. <?php
  9. }
  10.  
  11. if(isset($_POST['noleido']))
  12. {
  13. echo mysql_query = ("UPDATE TContacto SET leido = 'no' WHERE contacto_ID IN (".implode(",",$_POST['mens']).")");
  14.  
  15. <?php
  16. }

El error lo da en esta linea

Código PHP:
Ver original
  1. echo mysql_query = ("UPDATE TContacto SET leido = 'si' WHERE contacto_ID IN (".implode(",",$_POST['mens']).")");

Parse error: parse error, expecting `','' or `';'' in /srv/www/htdocs/javi/GestCamping/WEB_INF/php/estadomensajes.php on line 36

El formulario con los checkboxs esta puesto en el primer mensaje, En este codigo lo unico que hago es poner el leido a si o no en funcion del boton que se haya pulsado en el formulario, me llega bien el array del checkbox: $_POST['mens']
pero me da problema al hacer el update por probleam de puntuacion.
  #24 (permalink)  
Antiguo 22/04/2010, 10:07
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: insertar valor checkbox en BD

Hum que raro porque el error dice linea 36 y el codigo que posteas tiene solo 16 lineas...
En fin, en la linea 8 y 15 tienes un <?php de mas (y al final no cierras con ?>)
  #25 (permalink)  
Antiguo 22/04/2010, 10:26
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: insertar valor checkbox en BD

Lo de las lineas es porque tengo lineas comentadas de haber probado varias cosas que no las he pegado aki, pero vamos ya esta arreglado ya coincide las lineas con la que da el error y ya he añadido las etiquetas php que estaban mal.

Código PHP:
Ver original
  1. <?php
  2. include "../conexion.php";
  3.  
  4. if(isset($_POST['leido']))
  5. {
  6. echo mysql_query ("UPDATE TContacto SET leido = 'si' WHERE contacto_ID IN (".implode(",",$_POST['mens']).")");
  7.  
  8. }
  9.  
  10. if(isset($_POST['noleido']))
  11. {
  12. echo mysql_query ("UPDATE TContacto SET leido = 'no' WHERE contacto_ID IN (".implode(",",$_POST['mens']).")");
  13.  
  14.  
  15. }
  16. ?>

Parse error: parse error, expecting `','' or `';'' in /srv/www/htdocs/javi/GestCamping/WEB_INF/php/estadomensajes2.php on line 6

Última edición por jawir; 22/04/2010 a las 11:16
  #26 (permalink)  
Antiguo 22/04/2010, 11:04
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: insertar valor checkbox en BD

Rayos estoy ciego x_x
Esta visible desde el primer post en que pusiste la consulta, quita el = de las lineas donde haces los query -.-

(y aun te sobra un <?php en la linea 14)
  #27 (permalink)  
Antiguo 22/04/2010, 11:22
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: insertar valor checkbox en BD

Buf se me ha escapado al poner el echo de la consulta, muchas gracias por la paciencia te he dado karma que te lo has ganado pero bien
De nuevo muchas GRACIAS
  #28 (permalink)  
Antiguo 22/04/2010, 13:30
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: insertar valor checkbox en BD

Cita:
Iniciado por darkasecas Ver Mensaje
... (y al final no cierras con ?>)
No hay necesidad de cerrar un archivo ?> si sólo maneja php. El stándar Zend lo permite

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com

Etiquetas: bd, checkbox
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 13:58.