Foros del Web » Programando para Internet » PHP »

select multiple cargado con php

Estas en el tema de select multiple cargado con php en el foro de PHP en Foros del Web. Hola tengo el siguiente codigo: <select name="txt_ageografica" multiple size="6"> <? $query= mysql_query("SELECT id, txt_ageografica FROM proyectos_geografia"); ?> <option value="<?= tohtml($fldtxt_ageografica) ?>" ><?= tohtml($fldtxt_ageografica) ?> <? ...
  #1 (permalink)  
Antiguo 01/08/2003, 09:34
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
Pregunta select multiple cargado con php

Hola tengo el siguiente codigo:

<select name="txt_ageografica" multiple size="6">
<?

$query= mysql_query("SELECT id, txt_ageografica FROM proyectos_geografia");
?>
<option value="<?= tohtml($fldtxt_ageografica) ?>" ><?= tohtml($fldtxt_ageografica) ?>
<?
while ($row = mysql_fetch_row($query)) { ?>
<option value="<? echo "$row[0]"; ?>"><? echo "$row[1]"; }?></select>



esto lo estoy haciendo en un formulario de agregar un registro a la base de datos.. me han pedido que quieren seleccionar 2 o mas valores de la lista y que estos se agreguen automaticamente a la base de datos, pues aqui lo hace pero solo para una selección, yo pense que colocandole multiple se iban las que uno queria pero no es asi...

como puedo hacer para que cuando el usuario seleccione varias categorias estas se incluyan en la base de datos en el campo txt_agegrafica de mysql db

??


Gracias


  #2 (permalink)  
Antiguo 01/08/2003, 14:28
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Lo primero es renombrar el campo select para que PHP lo entienda como un array:

<select name="txt_ageografica[]" multiple size="6">

Con [] logras que HP recoga los distintos valores seleccionados en un array. Luego recoges ese array con:
Código PHP:
$areas=$_POST['txt_ageografica']; // o con $_GET si el formulario es GET
// $areas es un array con los valores
// se pueden mostrar
foreach ($areas as $area) {
  echo 
$area.'<br>';

La parte de meterla en base de datos, ya depende de ti.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 04/08/2003, 09:27
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
Exclamación no me sirivo :(

Hola estuve probando como me decias pero al ingresar el registro en la base de datos en el campo ageografica me sale la palabra Array, modifique el codigo segun tus intrucciones:

<select name="txt_ageografica[ ]" multiple size="6">

<?

$query= mysql_query("SELECT id, txt_ageografica FROM proyectos_geografia");


while ($row = mysql_fetch_row($query)) { ?>

<option value="<? echo "$row[1]"; ?>"><? echo "$row[1]"; }?></select>

no me muestra los valores seleccionados..

  #4 (permalink)  
Antiguo 04/08/2003, 09:58
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Pues precisamente es eso... que hacerlo de esa manera te va a entregar un array en lugar de un valor.

Si por ejemplo lo quisieras en un solo campo, separando por comas los diferentes options seleccionados, podrías hacer algo así...

$ageo=implode(",",$_POST[txt_ageografica]);

Salud!!
__________________
Manoloweb
  #5 (permalink)  
Antiguo 04/08/2003, 11:01
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
pues no me resulta, creo q no me entienden.. como hago para insertar ese select multiple en la base de datos, tengo que especificar algo en el query?? de INSERT?


y luego es en otra página como extraigo ese array...


disculpen si los molesto pero es que no entiendo estoy muy bien

  #6 (permalink)  
Antiguo 04/08/2003, 11:12
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Je je... creo que tu no nos entiendes...

$ageo=implode(",",$_POST[txt_ageografica]);

Entonces la variable $ageo es la que insertas en tu BD, normalito, asi como si fuera un texto.

Pero creo que aqui lo mas importante es que definas que es lo que quieres hacer con las opciones seleccionadas, y como y donde vas a mostrarlas mas adelante. Es posible que debas hacer otra tabla para guardar las opciones, o quien sabe, tal vez solo guardar los valores separados por comas te sea suficiente.

De hecho no veo donde guardas el resultado del formulario, así que es dificil adivinarle.

__________________
Manoloweb
  #7 (permalink)  
Antiguo 04/08/2003, 11:34
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
Exclamación explicación:

Ok te explico desde el principio


tengo un formulario con varios campos... entre ellos se cuentra el "área geográfica" que es un select en el form ... y sus campos se encuentran en una tabla llamada proyectos_geografia en ella tengo el campo id y txt_geografica...

bueno ya en el form en la celda de la tabla de area geografica pues hago un select multiple de todas las areas que estan guardadas en la tabla proyectos_geografia, asi:

//-------------------

<select name="txt_ageografica[ ]" multiple size="6">

<?

$query= mysql_query("SELECT id, txt_ageografica FROM proyectos_geografia");


while ($row = mysql_fetch_row($query)) { ?>

<option value="<? echo "$row[1]"; ?>"><? echo "$row[1]"; }?></select>

//-------------------

ok luego el me despliega las opciones en el select y como es multiple elijo las que quiero en dicho caso, y luego inserto el registro a la base de datos..

lo que estoy viendo cuando examino la tabla a donde ingreso los datos (tabla proyectos) es que en el campo txt_ageografia (tabla proyectos) hay un valor llamado " Array ", no se si es una sola palabra o que se yo si los datos que yo seleccione estan guardados...

de todas formas no sé si hay que modificar la fila txt_ageografia de la tabla proyectos en el phpmyadmin y colocarle un valor especial para que cuando yo ingrese el registro pues guarde los campos que seleccione!

y la otra es que tengo una pagina de mostrar los proyectos,, entonces ahi pues esta el campo area geografica y ahi quiero mostrar los valores que seleccione en el momento que hice la insercion del registro.. y no se como mostrar eso porque actualmente lo muestro pero me resulta la palabra "Array"

no se si me explique bien


gracias !
  #8 (permalink)  
Antiguo 04/08/2003, 11:43
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Bueno pues efectivamente SOLO te esta guardando la palabra "Array" y no el array mismo.

Para guardar los valores seleccionados usa el codigo que te pasé...

$ageo=implode(",",$_POST[txt_ageografica]);

Y en el INSET a tu BD, usa la variable $ageo, en lugar de txt_ageografica, esto te guardará en la BD la lista de todas las opciones seleccionadas, separadas por comas...

por ejemplo "1,8,14,21"
__________________
Manoloweb
  #9 (permalink)  
Antiguo 04/08/2003, 12:20
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
yap

Oye muchas gracias!!

si me sirvio y ahora si coloca las selecciones que uno pico en el select y las muestra separadas por coma ( , )






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 07:03.