Foros del Web » Programando para Internet » PHP »

Insertar select multiple a mysql

Estas en el tema de Insertar select multiple a mysql en el foro de PHP en Foros del Web. Que tal, tengo un sistema de noticias, en el cual, cada noticia puede contener mas de una categoria, (aqui mi problema) seleccionandolas a traves de ...
  #1 (permalink)  
Antiguo 23/11/2011, 14:32
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 126
Antigüedad: 13 años, 6 meses
Puntos: 11
Insertar select multiple a mysql

Que tal, tengo un sistema de noticias, en el cual, cada noticia puede contener mas de una categoria, (aqui mi problema) seleccionandolas a traves de un select multiple, asi es como traigo las categorias:

Código PHP:
Ver original
  1. <select name="idCategoria[]" multiple size="6">
  2.       <option value="">Seleccione una categoría</option>
  3.       <option value="">------------------------</option>
  4.       <? foreach ( $arrCategorias as $categoria ) { ?>
  5.       <option value="<? echo $categoria['idCategoria']; ?>">
  6.       <? echo $categoria['valor']; ?></option>
  7.       <? } ?>
  8. </select>

Luego las proceso de esta manera:

Código PHP:
Ver original
  1. if ( isset ($_POST['idCategoria']) )    foreach ($_POST['idCategoria'] as $idCategoria);

Asi es mi tabla donde deberia insertar el select multiple.

id_categorias_noticias auto_incremente
idCategorias
idNoticia

haciendo un echo a $idCategoria, imprimo las categorias seleccionadas de la noticia perfectamente, lo que quiero hacer y no puedo es, insertar ese array en mi tabla mysql, que por cada categoria seleccionada, se agregue un nuevo registro que contega su idCategoria con su idNoticia correspondiente. el idnoticia lo consigo haciendo un mysql_insert_id anteriormente. me explico? basicamente es eso, si selecciono la categoria 1, 2 y 3, me guarde esto en 3 registros con su id noticia correspondiente quedando asi.

id_cat | id_not
1_____|____9
2_____|____9
3_____|____9
  #2 (permalink)  
Antiguo 23/11/2011, 15:32
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Insertar select multiple a mysql

No es la respuesta que buscas, pero te recomiendo mejor insertar un sólo registro, en caso de haber más de una categoría, puedes simplemente concatenar (unir) el arreglo de categorías mediante un caracter, ejemplo:

$categorias=implode("~",$_POST["idCategoria"]);

De esta manera, no necesitas insertar tantos datos en la tabla, pensando que en algún momento habrá miles de registros que serán algo más difíciles de administrar.
  #3 (permalink)  
Antiguo 23/11/2011, 15:58
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Insertar select multiple a mysql

la respuesta esta en no usar un select para las categorias si no un checkbox, asi marcas todas las categorias que quieras, y las categorias irian en una tabla aparte por que es una relacion N:N

o sea un registro puede tener muchas categorias y una categoria muchos registros.
  #4 (permalink)  
Antiguo 23/11/2011, 22:23
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 126
Antigüedad: 13 años, 6 meses
Puntos: 11
Respuesta: Insertar select multiple a mysql

ocp001a, Lo de usar un implode, y separar por comas los registros, lo estube viendo y probando, pero despues de leer y revisar mucho el tema, vi que no es muy recomendable, se hace muy dificil para hacer luego las consultas, es mas, pude guardar las categorias de esta forma, pero se me complica a la hora de traer esos registros. Si sabes como traer los registros, bienvenida sea tu ayuda.. :)

memoadian no es lo mismo usar un select multiple que checkbox? si de esta forma tambien selecciono las categorias que quiero. En que varia? Yo tengo mi tabla categorias, y mi tabla noticias, y aparte estoy tratando de insertar estos registros en mi tercer tabla que relaciona categorias con noticias, para hacer la relacion muchos a muchos como me has mencionado, pero no logro meter el array que lleva los datos de las ids_categorias en mi db, mi real problema creo yo.. es: como inserto un array en una db, y que, por cada id categoria seleccionado, agregue un nuevo registro.
  #5 (permalink)  
Antiguo 23/11/2011, 22:39
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Insertar select multiple a mysql

La verdad pense que era un select simple.

para insertar un array hay que recorrerlo

el select multiple te da un array no?

pues recorrelo
Código PHP:
Ver original
  1. $cat = array('1','2','3','4');
  2.  
  3. foreach($cat as $consulta){
  4.     $sql = INSERT into cats VALUES('$consulta');//o algo asi no recuerdo jaja
  5.     mysql_query();//etc.
  6. }


o sea genera tantas consultas como cantidad de indices en tu array.

Etiquetas: insert, múltiple, 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 17:18.