Foros del Web » Programando para Internet » PHP »

Envio de datos a bd con select múltiple

Estas en el tema de Envio de datos a bd con select múltiple en el foro de PHP en Foros del Web. Hola, buenos días... Tengo una duda al enviar información a una base de datos, con un select múltiple . Les comento: Tengo el siguiente select ...
  #1 (permalink)  
Antiguo 19/06/2014, 08:39
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 7 meses
Puntos: 27
Envio de datos a bd con select múltiple

Hola, buenos días...

Tengo una duda al enviar información a una base de datos, con un select múltiple. Les comento:

Tengo el siguiente select:

Código PHP:
<?php include("bd/query-listado-revistas.php"); ?>
   <select name="revistas[]" multiple class="select-type-b">
       <?php while($rowSelectRevista mysqli_fetch_assoc($sqlSelectRevista)){ ?>    
       <option value="<?php echo $rowSelectRevista['id_revista']; ?>"><?php echo $rowSelectRevista['rev_titulo']; ?></option>                          
       <?php ?>                                                                                
   </select>
y recibo la información de esta forma:

Código PHP:
$param20 $_POST['revistas']; 
y la proceso con un update a mi base de datos:

Código PHP:
$param trim(mysqli_real_escape_string($connect$_POST['id']));
$sqlUpdateDistribuidor mysqli_query($connect"Update cat_distribuidor Set dist_gpo_revistas = '$param20' Where id_distribuidor = $param"); 
Bueno... la información se actualiza correctamente, sin embargo en el campo donde se guardarán los datos del select múltiple (revistas[]), me lo guarda como "Array", mi pregunta es.... ¿eso es correcto?¿o me debería guardar las diferentes opciones seleccionadas? Es decir:

El select múltiple, trae datos de una bd, como estos:

Código HTML:
<option value="1">Architect</option>
<option value="2">Architectural Digest</option>
<option value="3">Better Homes & Garden</option>
<option value="4">Car and Driver</option>
<option value="5">Food & Wine</option> 
No me debería guardar, si selecciono la opción 1,3,5, los valores de 1, 3, 5 en lugar de ponerme la palabra "Array"?

Nunca he enviado información de un select múltiple, por ello mis dudas.

De antemano agradezco sus comentarios. Saludos a todos!!
  #2 (permalink)  
Antiguo 23/06/2014, 16:30
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 2 meses
Puntos: 123
Respuesta: Envio de datos a bd con select múltiple

Necesitas recorrer el array, no lo puedes imprimir tal cual.

si quieres imprimir el array tal cual puedes utilizar print_r()
http://es1.php.net/print_r

Pero lo que necesitas utilizar foreach() para recorrerlo

http://php.net//manual/es/control-st...es.foreach.php

Tambien podrias utilizar un for() para recorrerlo
http://www.php.net/manual/es/control-structures.for.php

Código PHP:
Ver original
  1. <?php
  2. for($i = 0; $i < count($array); ++$i) {
  3.     echo $array[$i];
  4. }
  5. ?>

Última edición por xerifandtomas; 23/06/2014 a las 16:37
  #3 (permalink)  
Antiguo 23/06/2014, 16:49
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 11 meses
Puntos: 12
Respuesta: Envio de datos a bd con select múltiple

la respuesta que te imprime es correcto el array debe estar asi:

$loquetienesentuselect(1,2,3); <- y ese es todo un array

Tu debes guardar el valor, por lo tanto usa esto

echo $loquetienesentuselect[0]; <- ese valor debera guardarse en la base de datos,

si necesitas guardar todos los valores y que vayan recorriendo todos los registros, usa un foreach como antes te sugieren
  #4 (permalink)  
Antiguo 23/06/2014, 17:05
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Envio de datos a bd con select múltiple

Como lo que llega al archivo que procesa los datos es un array, utiliza la función implode, con la cual convertirás al array en una cadena conformada por los valores que contiene y unidos por un caracter que elijas, que en este caso tendría que ser una coma.

Código PHP:
Ver original
  1. $param20 = implode(', ', $_POST['revistas']);

De esta manera, el valor de $param20 será '1, 2, 3' y ya podrás insertar esa secuencia de valores en la BD.

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

Etiquetas: bd, múltiple, mysql, 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 12:23.