Foros del Web » Programando para Internet » PHP »

insert dentro de for

Estas en el tema de insert dentro de for en el foro de PHP en Foros del Web. ¿hola a todos disculpen habra una manera de usar insert into dentro de un for esto para que se hagan tantas inserciones dependiendo de la ...
  #1 (permalink)  
Antiguo 18/02/2010, 16:02
 
Fecha de Ingreso: agosto-2009
Ubicación: tlalnepantla
Mensajes: 97
Antigüedad: 14 años, 8 meses
Puntos: 0
insert dentro de for

¿hola a todos disculpen habra una manera de usar insert into dentro de un for esto para que se hagan tantas inserciones dependiendo de la condicion del ciclo?
  #2 (permalink)  
Antiguo 18/02/2010, 16:12
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: insert dentro de for

Lo ideal sería no meter el insert dentro de un for. Postea lo que tienes y buscamos la manera de hacerlo sin el for.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 18/02/2010, 16:17
 
Fecha de Ingreso: agosto-2009
Ubicación: tlalnepantla
Mensajes: 97
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: insert dentro de for

ok aqui esta mi codigo la idea es que me haga el insert tantas veces como el resultado del sum pero cuando lo ejecuto me marca el siguiente error:
Warning: pg_query() [function.pg-query]: Query failed: ERROR: insert or update on table "prs_atributos_detalle" violates foreign key constraint "fk_prs_atri_reference_prs_atri" DETAIL: Key (id_atributo)=(0) is not present in table "prs_atributos_solicitud". espero me puedan ayudar

Código PHP:
Ver original
  1. //OBTENEMOS EL NUMERO TOTAL DE FILAS A INSERTAR
  2.                 $numfilas="SELECT COUNT(*)  as total FROM prs_atributos_solicitud WHERE idtipo=$idtipo";
  3.                 $filas=pg_query($connection,$numfilas) or die ("ERROR EN $numfilas");
  4.                 if($encontradas = 1)
  5.                 {
  6.                 $encontradas = pg_fetch_object($filas, 0) ;
  7.                 $total = $encontradas->total;
  8.                 }
  9.                 for ($insert=0 ; $insert<$total ; $insert++)
  10.                 {
  11.                 $primera="INSERT INTO prs_atributos_detalle (idprs_atrib_detalle,id_detallesolicitud,id_atributo,valor)
  12.                 VALUES ($idprs_atrib_detalle,$id_detallesolicit,0,'xxx')";
  13.                 pg_query($connection,$primera) or die ("error en $primera");
  14.                 }
  #4 (permalink)  
Antiguo 18/02/2010, 17:01
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: insert dentro de for

A ver, partamos por el principio

Código PHP:
Ver original
  1. if($encontradas = 1)

Eso está malo, eso es asignación, no comparación. Cámbialo por esto :

Código PHP:
Ver original
  1. if($encontradas == 1)

Con respecto al error...

Si lo lees bien, te darás cuenta que el campo id_atributo es una foreign key, y está recibiendo un valor que no existe en el campo de igual nombre pero en la tabla prs_atributos_solicitud no existe. En otras palabras : El campo id_atributo de la tabla prs_atributos_detalle, debe recibir valores que existan en el campo id_atributo en la tabla prs_atributos_solicitud.

Partamos por tratar de solucionar estas cosas y luego vemos como metemos tantos valores en la tabla sin el for.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 18/02/2010, 17:21
 
Fecha de Ingreso: agosto-2009
Ubicación: tlalnepantla
Mensajes: 97
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: insert dentro de for

Cita:
Iniciado por spider_boy Ver Mensaje
Con respecto al error...

Si lo lees bien, te darás cuenta que el campo id_atributo es una foreign key, y está recibiendo un valor que no existe en el campo de igual nombre pero en la tabla prs_atributos_solicitud no existe. En otras palabras : El campo id_atributo de la tabla prs_atributos_detalle, debe recibir valores que existan en el campo id_atributo en la tabla prs_atributos_solicitud.

Partamos por tratar de solucionar estas cosas y luego vemos como metemos tantos valores en la tabla sin el for.
Gracias por la respuesta es que no entendia el error lo que pasa es que la tabla prs_atributos_solicitud es un catalogo y de esta voy a jalar el id_atributo, pero ahorita para efectos de ver si me salia el for le estoy asignando un valor 1 que ya me acepta ahora me marca este error:

duplicate key violates unique constraint "pk_prs_atributos_detalle"

por que no me esta dando el incremento del campo idprs_atrib_detalle esto lo declaro asi

Código PHP:
Ver original
  1. //VERIFICAR SI HAY DATOS EN LA TABLA PRS_ATRIBUTOS_DETALLE
  2.  
  3. $validados= "SELECT MAX(idprs_atrib_detalle) AS idprs_atrib_detalle FROM prs_atributos_detalle";
  4. $resmayordos=pg_query($connection,$validados) or die ("error en la consulta $validados");
  5. if ($maydos = 1 )
  6. {
  7. $maydos = pg_fetch_object($resmayordos, 0) ;
  8. //SE GUARDA COMO VARIABLE PARA PODER UTILIZARLO
  9. $idprs_atrib_detalle = $maydos ->idprs_atrib_detalle;
  10. }
  11.     if ($idprs_atrib_detalle<0) //SI EL RESULTADO ES NULO INICIALIZAMOS EN 0
  12.     {
  13.     $idprs_atrib_detalle == 0;
  14.     }
  15.         else //DE LO CONTRARIO INCREMENTA EN 1
  16.         {
  17.         $idprs_atrib_detalle ++; //INCREMENTA $IDPRS_SOLICITUDES EN 1
  18.         }

¿por que no me hace el incremento?
  #6 (permalink)  
Antiguo 19/02/2010, 07:42
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: insert dentro de for

Cita:
Iniciado por escorpio_13 Ver Mensaje

duplicate key violates unique constraint "pk_prs_atributos_detalle"
Ese error hace referencia a un valor ya existente, es decir, estás tratando de ingresar un valor que ya existe, y no puede ser duplicado. Si quieres probar bien el tema, tendrás que ingresar más valores en la tabla del catálogo, para poder ingresar más valores en la tabla de los detalles.

Arregla eso, y nos pegas todo lo que tienes, con los cambios hechos, obviamente.

Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #7 (permalink)  
Antiguo 19/02/2010, 07:56
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: insert dentro de for

Código PHP:
Ver original
  1. if ($idprs_atrib_detalle<0) //SI EL RESULTADO ES NULO INICIALIZAMOS EN 0
  2.     {
  3.     $idprs_atrib_detalle == 0;
  4.     }

Ahí estás haciendo al revés de como te dijeron.
Código PHP:
Ver original
  1. if ($idprs_atrib_detalle<0) //SI EL RESULTADO ES NULO INICIALIZAMOS EN 0
  2.     {
  3.     $idprs_atrib_detalle = 0;
  4.     }
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #8 (permalink)  
Antiguo 21/02/2010, 21:14
 
Fecha de Ingreso: agosto-2009
Ubicación: tlalnepantla
Mensajes: 97
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: insert dentro de for

Cita:
Iniciado por spider_boy Ver Mensaje
Ese error hace referencia a un valor ya existente, es decir, estás tratando de ingresar un valor que ya existe, y no puede ser duplicado. Si quieres probar bien el tema, tendrás que ingresar más valores en la tabla del catálogo, para poder ingresar más valores en la tabla de los detalles.

Arregla eso, y nos pegas todo lo que tienes, con los cambios hechos, obviamente.

Nos vemos.
No entiendo lo que me estas diciendo me podrias explicar que relacion tiene lo que me dices con el problema del incremento de mi llame primaria?
  #9 (permalink)  
Antiguo 22/02/2010, 08:11
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: insert dentro de for

A ver... primero debes entender que es una llave o clave foránea, para eso tienes google. Probablemente el aumento de tu clave primaria es correcto, pero no puedes verlo debido a estos errores, si no los solucionas no podrás ver el aumento en acción.

Esto podría ayudarte :

http://es.wikipedia.org/wiki/Normali...e_datos#Claves
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.

Etiquetas: insert
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 22:00.