Foros del Web » Programando para Internet » PHP »

capturar los campos de un select multiple y guardar en mysql

Estas en el tema de capturar los campos de un select multiple y guardar en mysql en el foro de PHP en Foros del Web. hola amigos, estoy empleando un select multiple con un select+textarea el cual manipulo con un codigo javascript que fue posteado en el area de javascript, ...
  #1 (permalink)  
Antiguo 01/07/2010, 15:12
 
Fecha de Ingreso: marzo-2010
Ubicación: Venezuela
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 1
capturar los campos de un select multiple y guardar en mysql

hola amigos, estoy empleando un select multiple con un select+textarea el cual manipulo con un codigo javascript que fue posteado en el area de javascript, el cual funciona justo como necesito, sin embargo mi problema es que no termino de dar con la forma de capturar las opciones seleccionadas para proceder a guardarlas en mysql, he leido que se deben trabajar las opciones como un vector sin embargo no creo entender del todo bien ya que no me captura ningun dato. A continuación lo que tengo

Código Javascript:
Ver original
  1. function pasar(from,to){
  2.     var _from = from.options;
  3.         for (var i=0 ;i < _from.length; i++){
  4.             var opt = _from[i];
  5.             if(opt.selected){
  6.                 var n = document.createElement("option");
  7.                 n.value = opt.value;
  8.                 n.text = opt.text;
  9.                 n.selected = 1;
  10.                 try{ to.add(n,null); from.remove(i,null)
  11.                 }catch(e){  to.add(n); from.remove(i) }
  12.                 i--
  13.             }
  14.         }
  15.     }

Código HTML:
<select style="width:136px"  name="combo1" id="combo1" size="5" multiple="" >
              <option value="color">color</option>
              <option value="rojo">rojo</option>
              <option value="azul">azul</option>
              <option value="verde">verde</option>
              <option value="amarillo">amarillo</option>
            </select>
            <td >
<input  type="button" onClick="pasar(combo1,combo2)" value="&gt;&gt;" />
            <input type="button" onClick="pasar(combo2,combo1)" value="&lt;&lt;" /></td>
            <td >
            <select  multiple=""  name="combo2[]" id="combo2"  size="5">
            </select></td>
            
Código PHP:
                       for ($i=0;$i<count($combo2);$i++){
            echo 
"$combo2[$i],";
            } 
En la ejecución del query tengo lo siguiente:

Código MySQL:
Ver original
  1. $sql="Insert into color values('$combo2[],')";
  2. $resultado= mysql_query($sql)or die("Error en query: " . mysql_error() );

Cuando ejecuto el query en lugar de mostrar las opciones seleccionadas me muestra "array"
  #2 (permalink)  
Antiguo 01/07/2010, 17:38
Avatar de bocho0610  
Fecha de Ingreso: enero-2010
Ubicación: <? echo "Santiago, Chile"; ?>
Mensajes: 341
Antigüedad: 14 años, 3 meses
Puntos: 26
Respuesta: capturar los campos de un select multiple y guardar en mysql

es porque debes tambien poner el contador.

'$combo2[$i]'
__________________
Sigueme en Twitter!
Septimoarte.cl <-- Un mundo en cine.
  #3 (permalink)  
Antiguo 02/07/2010, 10:11
 
Fecha de Ingreso: marzo-2010
Ubicación: Venezuela
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: capturar los campos de un select multiple y guardar en mysql

Gracias!!! bocho0610 ya probe colocando '$combo2[$i]', pero tampoco me trae los datos, solo me muestra el registro en blanco ' '.
  #4 (permalink)  
Antiguo 02/07/2010, 10:23
Avatar de funkii  
Fecha de Ingreso: junio-2010
Mensajes: 64
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: capturar los campos de un select multiple y guardar en mysql

no tendrias que tambien agregarle la posicion de la variable i en $sql?
osea:

Código PHP:
Ver original
  1. $sql="Insert into color values('$combo2[i]')";
  2. $resultado= mysql_query($sql)OR die("Error en query: " . mysql_error() );
  #5 (permalink)  
Antiguo 02/07/2010, 13:04
 
Fecha de Ingreso: marzo-2010
Ubicación: Venezuela
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: capturar los campos de un select multiple y guardar en mysql

si es lo que me recomendo bocho610, sin embargo no funciona, sigue sin traerme los datos que selecciono.
  #6 (permalink)  
Antiguo 02/07/2010, 13:27
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: capturar los campos de un select multiple y guardar en mysql

Debes agregarle un boton de envio, para que una vez selecionados los items los envies:

Código PHP:

//agregale al formulario la etiqueta <form> y un submit
//asi action="" llamara a la misma pagina

<form action="" method="post">

//tu select aqui
//luego el boton de envio
<p /><input type="submit" value="Enviar Valores Seleccionados">

</form>


//mas abajo coloca esto y veras como los valores del segundo select
//son recibidos, puedes recibir el del primero tambien, etc

<?php
if($_POST['combo2'] != ""){
echo 
"<pre>";
var_dump($_POST['combo2']);
echo 
"</pre>";
}
?>
  #7 (permalink)  
Antiguo 02/07/2010, 14:18
 
Fecha de Ingreso: marzo-2010
Ubicación: Venezuela
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: capturar los campos de un select multiple y guardar en mysql

Si wiwi74 efectivamente como me comentas captura a la perfección todos los campos que selecciono. Ahora mi problema es que mi form obligatoriamente me redirecciona a otro formulario que es donde ejecuto el insert y los datos no pasan a esta pagina, el query lo hago asi:

Código PHP:
$sql="Insert into mitabla values( '$_POST[combo2]')"
  #8 (permalink)  
Antiguo 02/07/2010, 15:26
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: capturar los campos de un select multiple y guardar en mysql

No entiendo bien, si en el action de primer formulario colocas esto:

action="pagina_a_llamar.php" ira a esa pagina y el envio post sera hecho

si en el method se asigna "post" o "get"


Esto:

Código PHP:

<?php 
if($_POST['combo2'] != ""){ 
echo 
"<pre>"
var_dump($_POST['combo2']); 
echo 
"</pre>"

?> 

//coloca estas lineas en la otra pagia (a la que llamas) y verifica.

...Que funcionaba llamando a la misma pagina (action="") funcionara llamando a otra pagina.

Ahora si en tu otra pagina tienes otro form, y haces otro envio puede que la info anterior se pierda si no tomas los recaudos necesarios.

Y esto funcionara si tu tabla tiene un solo campo:

Código PHP:

$sql
="Insert into mitabla values('".$_POST['combo2']."');"
  #9 (permalink)  
Antiguo 06/07/2010, 07:59
 
Fecha de Ingreso: marzo-2010
Ubicación: Venezuela
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: capturar los campos de un select multiple y guardar en mysql

Gracias por la pronta respuesta, sin embargo la pude ver hoy sorry!!!, wiwi74 realice las modificaciones tal como me indicas y esto es lo que me lanza al enviar el formulario a la pagina donde ejecuto mi query:

Código MySQL:
Ver original
  1. array(2) {
  2.   [0]=>
  3.   string(15) "rojo"
  4.   [1]=>
  5.   string(19) "azul"
  6. }
  7.  
  8. Insert into mitabla values(campo1,'campo2','campo3','campo4','Array','campo5')

Donde 'Array' deberia mostrarme los datos que tengo en el select multiple. Es decir, (rojo, azul).

El insert:
Código PHP:
$sql="Insert into mitabla values($campo1,'$campo2','$campo3','$campo4','".$_POST['combo2']."','$campo5'); 
No se que este realizando mal, que no me quiere tomar los valores al guardar el insert.

Etiquetas: campos, mysql, select
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 20:00.