Foros del Web » Programando para Internet » PHP »

Como pasar datos de varias checkbox a la base de datos?

Estas en el tema de Como pasar datos de varias checkbox a la base de datos? en el foro de PHP en Foros del Web. Buenas, les presento mi nuevo problema ^^ Yo genero las checkbox con este codigo Código: <?php $sql = "SELECT * FROM foros order by id ...
  #1 (permalink)  
Antiguo 11/03/2009, 02:52
 
Fecha de Ingreso: mayo-2008
Ubicación: En algun lado!
Mensajes: 86
Antigüedad: 15 años, 11 meses
Puntos: 1
Problemas con explode y mostrar datos...

Buenas, les presento mi nuevo problema ^^

Yo genero las checkbox con este codigo
Código:
<?php 
			$sql = "SELECT * FROM foros order by id asc";
			$query = mysql_query($sql);
			while ($row=mysql_fetch_array($query)) 
			{ echo '<input type="checkbox" name="foro[]" value="si">'. $row["foro"].'&nbsp;&nbsp;&nbsp;'; } ?>
y quiero que solo las checkboxes marcadas se pasen a la base de datos.
Para eso segun lei otros temas de este foro tengo que usar foreach.

Pero ahi me quede porque no se como hacer para que se almacenen los checkboxes marcados...

El tema es que necesito que los checkboxes marcados se guarden en una BD diferente de "foros", en otra que se llame "videos"

Empece asi
Código:
$foroarray = $_REQUEST[foro];
foreach ($foroarray as $id)
pero me estanque

Les comento para que sirve el script. Lo que yo hago es tener una lista de x elementos, cuando ese elemento ya lo publique en un foro, yo completo el formulario e inserto en la BD en cual postee y en cual no (por eso el value es "si" y la tabla tiene como valor default "no"). Despues esa tabla se muestra indicando Si o No dependendiendo de los valores en la BD

Espero me puedan ayudar, una vez mas!

Saludos!

Última edición por malcomxar; 12/03/2009 a las 21:34
  #2 (permalink)  
Antiguo 11/03/2009, 03:01
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Como pasar datos de varias checkbox a la base de datos?

Pues ya solo te queda poner la consulta.

El valor del checkbox debería de ser algún campo identificativo de cada registro, usualmente ID.

Luego, en el foreach, lo completas haciendo la consulta y trabajando con $id.

Código php:
Ver original
  1. $foroarray = $_REQUEST[foro];
  2. foreach ($foroarray as $id) {
  3. mysq_query("update...  where id=".$id);
  4. echo "Se actualizó el registro <strong> ".$id."</strong>
  5. }

No puse comillas en el WHERE ID porque supongo que es un valor numérico. Cuidado con eso.

Pues eso, que ya lo tenías hecho.
  #3 (permalink)  
Antiguo 11/03/2009, 08:43
 
Fecha de Ingreso: mayo-2008
Ubicación: En algun lado!
Mensajes: 86
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Como pasar datos de varias checkbox a la base de datos?

Gracias Bonez por la respuesta pero el asunto es que yo no estoy haciendo un update, estoy haciendo un insert (o los dos me sirven??)

El problema que tengo al hacer la consulta es como hacer para que me inserte el value del checkbox en campos separados y no todo en el mismo.

Saludos!
  #4 (permalink)  
Antiguo 11/03/2009, 14:08
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Como pasar datos de varias checkbox a la base de datos?

Te vale el mismo código también vaya.

Lo que hace foreach es recorrer todos los valores del array y en cada una ejecuta lo que tú quieras. En éste caso puse una consulta sql (puse un update, pero puedes poner un delete o un insert) y un echo. $id sería el valor del checkbox, de ahí ya puedes hacer lo que quieras.
  #5 (permalink)  
Antiguo 11/03/2009, 17:05
 
Fecha de Ingreso: abril-2008
Mensajes: 8
Antigüedad: 16 años
Puntos: 1
Respuesta: Como pasar datos de varias checkbox a la base de datos?

Hola malcomxar... ps... yo tenia el mismo problema que tu..pero ya quedo resuelto, tratare de explicarte y ponerte mi codigo para ver si te sirve...

Yo tmb genero los checkbox con informacion de una tabla (en una base de datos)

Código:
while($l=mysql_fetch_array($r))
{ ?>
   <input type="checkbox" name="seccion[]" id="seccion" value="<?=$l[id]?>" ><span class="deportes"><?=$l[seccion]?> </span>
}
Yo le paso el valor de mi Id que tiene en la tabla ese registro. :value="<?=$l[id]?>"

Ahora la forma de usar el foreach:

Código:
$secciones=" ";
	foreach($_REQUEST['seccion'] as $seccion)
	{ 
		$secciones.=$seccion.",";
   		
	}
Yo aqui voy concatenando los valores seleccionados separandolos con una ","
todo eso tendra el arreglo por ejemplo: [1,2,5,6] (son los seleccionados con el check)

Despues de esto ya podras hacer su insert en tu tabla videos....

Bueno espero te sirva y que me haya explicado....=)...suerte....
  #6 (permalink)  
Antiguo 11/03/2009, 22:14
 
Fecha de Ingreso: mayo-2008
Ubicación: En algun lado!
Mensajes: 86
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Como pasar datos de varias checkbox a la base de datos?

Gracias Bonex y venus_ere

Teniendo en cuenta lo que me dijeron, tengo esta bd

Código:
CREATE TABLE IF NOT EXISTS `videos` (
  `id` int(11) NOT NULL auto_increment,
  `titulo` varchar(255) NOT NULL,
  `imagen` varchar(255) NOT NULL default 'no',
  `ks` varchar(100) NOT NULL default 'no',
  `df` varchar(100) NOT NULL default 'no',
  `up` varchar(100) NOT NULL default 'no',
  `allforos` varchar(100) NOT NULL default 'no',
  PRIMARY KEY  (`id`)
y logre insertar los datos con el siguiente codigo

Código PHP:
$titulo $_REQUEST[titulo];
$imagen $_REQUEST[imagen];
$ks $_REQUEST[ks];
$df $_REQUEST[df];
$up $_REQUEST[up];
$foroarray $_REQUEST[foro];

foreach (
$foroarray as $foros)
$ids .=$foros.","; }
echo 
$ids;
$sql "INSERT INTO videos(titulo,imagen,ks,df,up,allforos) VALUES ('$titulo','$imagen','$ks','$df','$up','$ids')";
mysql_query($sql); }
if (
mysql_query) {
echo 
'Video agregado'; }
else {
echo 
mysql_error(); } }

?> 
En forosall se ingresan los checkbox marcados de modo concatenado como me dijo venus (por ejemplo 3,4,5)

Para mostrar los datos uso un explode() asi

Código PHP:
<?php $sql "SELECT * FROM videos order by titulo ASC";
                
$query mysql_query($sql);
                while (
$row=mysql_fetch_array($query))
                { 
                
$trozos explode(","$row[allforos]);
                if (
$trozos[0]=" ") { echo '<img title="Video No Disponible" src="no.gif" /><br>'; }
                else { echo 
'<img src="yes.gif" />'; }
                
                if (
$trozos[1]=" ") { echo '<img title="Video No Disponible" src="no.gif" /><br>'; }
                else { echo 
'<img src="yes.gif" />'; }
                
                if (
$trozos[2]=" ") { echo '<img title="Video No Disponible" src="no.gif" /><br>'; }
                else { echo 
'<img src="yes.gif" />'; }
                
                if (
$trozos[3]=" ") { echo '<img title="Video No Disponible" src="no.gif" /><br>'; }
                else { echo 
'<img src="yes.gif" />'; }
                
                if (
$trozos[4]=" ") { echo '<img title="Video No Disponible" src="no.gif" /><br>'; }
                else { echo 
'<img src="yes.gif" />'; }
                
                if (
$trozos[5]=" ") { echo '<img title="Video No Disponible" src="no.gif" /><br>'; }
                else { echo 
'<img src="yes.gif" />'; }
                
                if (
$trozos[6]=" ") { echo $trozos[6]; echo '<img title="Video No Disponible" src="no.gif" /><br>'; }
                else { echo 
'<img src="yes.gif" />'; }
                    
                     } 
?>
Pero en pantalla por mas que el $trozos[X] tenga algo en la base de datos siempre me muestra la imagen "no.gif"

Última edición por malcomxar; 12/03/2009 a las 02:03
  #7 (permalink)  
Antiguo 12/03/2009, 12:07
 
Fecha de Ingreso: mayo-2008
Ubicación: En algun lado!
Mensajes: 86
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Como pasar datos de varias checkbox a la base de datos?

Alguien??? :(
  #8 (permalink)  
Antiguo 13/03/2009, 09:11
 
Fecha de Ingreso: abril-2008
Mensajes: 8
Antigüedad: 16 años
Puntos: 1
Respuesta: Como pasar datos de varias checkbox a la base de datos?

Hola...malcomxar....

Perdon no habia podido entrar al foro, pero veamos....primero igual te aconsejo que como la informacion de lo que quieres imprimir es la misma para todo, utilices un contador, esto seria mas o menos asi:

Código:
<? 
$sql = "SELECT * FROM videos order by titulo ASC"; 
$query = mysql_query($sql); 
while ($row=mysql_fetch_array($query)) 
{  
	$trozos = explode(",", $row[allforos]); 
	$cont=0;
	while($trozos[$cont])
	{
		if ($trozos[$cont]=" ")
		{ echo '<img title="Video No Disponible" src="no.gif" /><br>'; } 
		else 
		{ echo '<img src="yes.gif" />'; } 
		$cont++;
	}  
}
?>
Ahora... tal vez tu condicion no este bien, entiendo que preguntas que si lo que trae $trozos esta vacio, te ponga no.gif y si tiene algo es la de yes.gif?? estoy en lo correcto??... igual podrias ponerle mejor que si tiene 0 trozos...

Mira.. te pongo aqui algo que yo puse en mi codigo igual y sea lo mismo...

Código:
<?
$separar = explode(",",$res[suplementos]);
if ($res[suplementos]==0){echo ' ';} // Esto yo lo puse por si no se selecciono ningun checkbox el $res[suplementos] es el campo donde guarde los seleccionados.
else
{
	//Aqui ya va mi codigo para que muestre los seleccionados
}
?>

Bueno espero haber podido ayudar, de igual manera informanos o explica un poco mas detallado lo que quieres.... talvez no entendi bien :S, se me da no entender a veces... jejeje....bueno te cuidas y mucha suerte....
  #9 (permalink)  
Antiguo 13/03/2009, 09:25
 
Fecha de Ingreso: abril-2008
Mensajes: 8
Antigüedad: 16 años
Puntos: 1
Respuesta: Como pasar datos de varias checkbox a la base de datos?

Hay... sabes que... no no funciona con eso del 0 que te digo.... tratare de analizarlo mas y te aviso... hojala alguien mas pueda ayudar pronto... jeje,... sorry eh :$
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 15:59.