Foros del Web » Programando para Internet » PHP »

Insertar varios registros: INSERT INTO y la funcion implode

Estas en el tema de Insertar varios registros: INSERT INTO y la funcion implode en el foro de PHP en Foros del Web. Buen dia. Agradeciendo su ayuda en lo siguiente: Intento hacer una sentencia que me permita insertar en base de datos diferentes registros para unos elementos ...
  #1 (permalink)  
Antiguo 09/06/2011, 22:35
 
Fecha de Ingreso: mayo-2011
Ubicación: Venezuela
Mensajes: 18
Antigüedad: 13 años
Puntos: 0
Pregunta Insertar varios registros: INSERT INTO y la funcion implode

Buen dia.

Agradeciendo su ayuda en lo siguiente:

Intento hacer una sentencia que me permita insertar en base de datos diferentes registros para unos elementos con especificos codigos.

Ejemplo:

Tengo en BD una tabla con ID:1,2,3,4...,n

Un usuario manda un formulario con una variable $_POST['check'] que contiene un array con los ID seleccionados en un conjunto de checkbox con name=check.

Al recibir tengo:

$lista=array_keys($_POST['check']);

Por lo que yo quiero insertar en una tabla de base de datos para los ID contenidos en $lista, meter un registro asi:

$insertar="INSERT INTO tabla (id_t,id,det) VALUES (null,'".implode(',',$lista)."','Hola')";

Al referenciar y hacer Echo "echo $insertar.'<br>';" obtengo:

INSERT INTO tabla (id_t,id,det) VALUES (null,'1,2,3,4','Hola')

Esta sentencia me marca error en la sintaxis,

Acudo y necesito de los oficios de un buen Guru que brinde una luz para estructurar una sentencia MYSQL que permita hacer lo que quiero y con una sola linea?.

Gracias....
  #2 (permalink)  
Antiguo 10/06/2011, 04:07
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: Insertar varios registros: INSERT INTO y la funcion implode

Vamos por partes:

INSERT INTO tabla (id_t,id,det)

Entiendo que tienes una tabla que se llama "tabla" con tres campos. ¿El campo "id" de que tipo es?. Según como lo has puesto sería de tipo string.
Yo entiendo que es un valor numérico y lo que quieres es insertar un registro por cada id que está en el array $lista.
Si es eso lo que quieres hacer tienes que hacer un bucle, recorriendo el array $lista e insertando un registro por cada valor.
Si no es eso lo que quieres hacer intenta aclarar mejor tu problema.
  #3 (permalink)  
Antiguo 10/06/2011, 12:08
 
Fecha de Ingreso: mayo-2011
Ubicación: Venezuela
Mensajes: 18
Antigüedad: 13 años
Puntos: 0
Respuesta: Insertar varios registros: INSERT INTO y la funcion implode

Gracias Nexus10. Aunque pense que se podria usar la misma estrcutura del "IN" para el insert, luego de un dia de lecturas y pruebas y con tu consejo desiste del enfoque.
Como dices realize un bucle el cual funciono a la perfeccion:

//Se almacenan los valores del array POST correspondientes al Checkbox
$lista=array_keys($_POST['check']);

foreach($lista as $val)
{
$sel="SELECT * FROM tabla WHERE id_t='$val'";

//echo $sel_i.'<br>';

$query=mysql_query($sel)or die (mysql_error().' Error consultando: '.mysql_errno());
$num=mysql_num_rows($query);
if ($num == 0)
{
if ($flag==0)
{
$insertar="INSERT INTO tabla (id_t,id,det) VALUES (null,'$val','Hola')";
}

if ($flag==1)
{
$insertar="INSERT INTO tabla (id_t,id,det) VALUES (null,'$val','Chao')";
//echo $insertar.'<br>';
$query=mysql_query($insertar)or die (mysql_errno().' No se pudo insertar: '.mysql_error());
}
}

Este ragmento me permite tomar el valor del array y discriminar la sentencia Select adecuada para el proceso que quiero.

Gracias por su ayuda. Que esto le sirva a otro.
  #4 (permalink)  
Antiguo 10/06/2011, 12:08
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 16 años, 5 meses
Puntos: 25
Pregunta Respuesta: Insertar varios registros: INSERT INTO y la funcion implode

prueba con:

Código PHP:
$lista $_POST['check'];
for(
$i=0$i<count($lista); $i++){
  
mysql_query("INSERT INTO tabla VALUES (0, ".$lista[$i].")");

__________________
blog: hector2c.wordpress.com
email: [email protected]
  #5 (permalink)  
Antiguo 10/06/2011, 12:10
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 16 años, 5 meses
Puntos: 25
Respuesta: Insertar varios registros: INSERT INTO y la funcion implode

recuerda poner un if(isset($_POST['check'])) al inicio y final del código que te envie, ya que en caso no exista valor alguno marcara error... suerte!
__________________
blog: hector2c.wordpress.com
email: [email protected]

Etiquetas: mysql
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 09:36.