Foros del Web » Programando para Internet » PHP »

ayuda con FOR

Estas en el tema de ayuda con FOR en el foro de PHP en Foros del Web. hola a todos de nuevo yo jajajaja oigan miren tengo que hacer un insert el cual lo estoy metiendo dentro de un for ya que ...
  #1 (permalink)  
Antiguo 15/02/2010, 16:57
 
Fecha de Ingreso: agosto-2009
Ubicación: tlalnepantla
Mensajes: 97
Antigüedad: 14 años, 8 meses
Puntos: 0
ayuda con FOR

hola a todos de nuevo yo jajajaja oigan miren tengo que hacer un insert el cual lo estoy metiendo dentro de un for ya que lo tengo que repetir tantas veces como el resultado de un count , obiamente mas de una vez pero cuando lo ejecuto me marca error por que estoy violando las reglas de llave foranea me podrian ayudar aqui les pongo el codigo

//OBTENEMOS EL NUMERO TOTAL DE FILAS A INSERTAR
$numfilas="SELECT COUNT(*) as total FROM prs_atributos_solicitud WHERE idtipo=$idtipo";
$filas=pg_query($connection,$numfilas) or die ("ERROR EN $numfilas");
if($encontradas = 1)
{
$encontradas = pg_fetch_object($filas, 0) ;
$total = $encontradas->total;
}
for ($insert=0 ; $insert<$total ; $insert++)
{
$primera="INSERT INTO prs_atributos_detalle (idprs_atrib_detalle,id_detallesolicitud,id_atribu to,valor) VALUES ($idprs_atrib_detalle,$id_detallesolicitud,0,'xxx' )";
pg_query($connection,$primera);
}


y el error que me marca es este:

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 porfavor
  #2 (permalink)  
Antiguo 15/02/2010, 17:18
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: ayuda con FOR

esta mas claro que el agua , estas violando una clave foránea, lo que debes hacer es cerciorarte de que los insert contengan los datos correspondientes a la tabla foránea

si quieres puedes impedir la revisión de dichas claves, pero a tu riesgo de corromper la data:
Código PHP:
$sqlcheck="SET FOREIGN_KEY_CHECKS=0;"
  #3 (permalink)  
Antiguo 15/02/2010, 17:23
 
Fecha de Ingreso: agosto-2009
Ubicación: tlalnepantla
Mensajes: 97
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ayuda con FOR

Cita:
Iniciado por maycolalvarez Ver Mensaje
esta mas claro que el agua , estas violando una clave foránea, lo que debes hacer es cerciorarte de que los insert contengan los datos correspondientes a la tabla foránea

si quieres puedes impedir la revisión de dichas claves, pero a tu riesgo de corromper la data:
Código PHP:
$sqlcheck="SET FOREIGN_KEY_CHECKS=0;"
ok eso lo ago con el siguiente codigo como las tablas no tienen autoincremento lo hago de forma manual asi

//VERIFICAR SI HAY DATOS EN LA TABLA PRS_ATRIBUTOS_DETALLE

$validados= "SELECT MAX(idprs_atrib_detalle) AS idprs_atrib_detalle FROM prs_atributos_detalle";
$resmayordos=pg_query($connection,$validados) or die ("error en la consulta $validados");
if ($maydos = 1 )
{
$maydos = pg_fetch_object($resmayordos, 0) ;
//SE GUARDA COMO VARIABLE PARA PODER UTILIZARLO
$idprs_atrib_detalle = $maydos ->idprs_atrib_detalle;
}
if ($idprs_atrib_detalle<0) //SI EL RESULTADO ES NULO INICIALIZAMOS EN 0
{
$idprs_atrib_detalle == 0;
}
else //DE LO CONTRARIO INCREMENTA EN 1
{
$idprs_atrib_detalle ++; //INCREMENTA $IDPRS_SOLICITUDES EN 1
}
//OBTENEMOS EL ID DE LA TABLA ANTERIOR
$maxdos="SELECT MAX(id_detallesolicitud) AS id_detallesolicitud FROM prs_detalle_solicitud";
$mayordos=pg_query($connection,$maxdos) or die ("error en $maxdos");
if ($resultdos = 1 )
{
$resultdos = pg_fetch_object($mayordos, 0) ;
$id_detallesolicitud = $resultdos ->id_detallesolicitud;
}
  #4 (permalink)  
Antiguo 15/02/2010, 17:30
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: ayuda con FOR

por favor coloca el codigo dentro de highlight porque se hace difícil de leer
  #5 (permalink)  
Antiguo 15/02/2010, 17:34
 
Fecha de Ingreso: agosto-2009
Ubicación: tlalnepantla
Mensajes: 97
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ayuda con FOR

Cita:
Iniciado por maycolalvarez Ver Mensaje

ok perdon

//VERIFICAR SI HAY DATOS EN LA TABLA PRS_ATRIBUTOS_DETALLE

$validados= "SELECT MAX(idprs_atrib_detalle) AS idprs_atrib_detalle FROM prs_atributos_detalle";
$resmayordos=pg_query($connection,$validados) or die ("error en la consulta $validados");
if ($maydos = 1 )
{
$maydos = pg_fetch_object($resmayordos, 0) ;
//SE GUARDA COMO VARIABLE PARA PODER UTILIZARLO
$idprs_atrib_detalle = $maydos ->idprs_atrib_detalle;
}
if ($idprs_atrib_detalle<0) //SI EL RESULTADO ES NULO INICIALIZAMOS EN 0
{
$idprs_atrib_detalle == 0;
}
else //DE LO CONTRARIO INCREMENTA EN 1
{
$idprs_atrib_detalle ++; //INCREMENTA $IDPRS_SOLICITUDES EN 1
}
//OBTENEMOS EL ID DE LA TABLA ANTERIOR
$maxdos="SELECT MAX(id_detallesolicitud) AS id_detallesolicitud FROM prs_detalle_solicitud";
$mayordos=pg_query($connection,$maxdos) or die ("error en $maxdos");
if ($resultdos = 1 )
{
$resultdos = pg_fetch_object($mayordos, 0) ;
$id_detallesolicitud = $resultdos ->id_detallesolicitud;
}
  #6 (permalink)  
Antiguo 15/02/2010, 21:02
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: ayuda con FOR

El highlight, no la cita :)
Highlight de php:
Código PHP:
Ver original
  1. $variable="valor";
  2. for($i=0;$i<$total;$i++){
  3. //comentario
  4. }
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #7 (permalink)  
Antiguo 16/02/2010, 15:31
 
Fecha de Ingreso: agosto-2009
Ubicación: tlalnepantla
Mensajes: 97
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ayuda con FOR

Código PHP:
Ver original
  1. //INSERTAMOS EN PRS_ATRIBUTOS_DETALLE
  2. //VERIFICAR SI HAY DATOS EN LA TABLA PRS_ATRIBUTOS_DETALLE
  3.  
  4. $validados= "SELECT MAX(idprs_atrib_detalle) AS idprs_atrib_detalle FROM prs_atributos_detalle";
  5. $resmayordos=pg_query($connection,$validados) or die ("error en la consulta $validados");
  6. if ($maydos = 1 )
  7. {
  8. $maydos = pg_fetch_object($resmayordos, 0) ;
  9. //SE GUARDA COMO VARIABLE PARA PODER UTILIZARLO
  10. $idprs_atrib_detalle = $maydos ->idprs_atrib_detalle;
  11. }
  12.     if ($idprs_atrib_detalle<0) //SI EL RESULTADO ES NULO INICIALIZAMOS EN 0
  13.     {
  14.     $idprs_atrib_detalle == 0;
  15.     }
  16.         else //DE LO CONTRARIO INCREMENTA EN 1
  17.         {
  18.         $idprs_atrib_detalle ++; //INCREMENTA $IDPRS_SOLICITUDES EN 1
  19.         }
  20. //OBTENEMOS EL ID DE LA TABLA ANTERIOR
  21. $maxdos="SELECT MAX(id_detallesolicitud) AS id_detallesolicitud FROM prs_detalle_solicitud";
  22. $mayordos=pg_query($connection,$maxdos) or die ("error en $maxdos");
  23. if ($resultdos = 1 )
  24. {
  25. $resultdos = pg_fetch_object($mayordos, 0) ;
  26. $id_detallesolicitud = $resultdos ->id_detallesolicitud;
  27. }
  28. //OBTENEMOS EL NUMERO TOTAL DE FILAS A INSERTAR
  29. $numfilas="SELECT COUNT(*)  as total FROM prs_atributos_solicitud WHERE idtipo=$idtipo";
  30. $filas=pg_query($connection,$numfilas) or die ("ERROR EN $numfilas");
  31. if($encontradas = 1)
  32. {
  33. $encontradas = pg_fetch_object($filas, 0) ;
  34. $total = $encontradas->total;
  35. }
  36. for ($insert=0 ; $insert<$total ; $insert++)
  37. {
  38. $primera="INSERT INTO prs_atributos_detalle (idprs_atrib_detalle,id_detallesolicitud,id_atributo,valor) VALUES ($idprs_atrib_detalle,$id_detallesolicitud,0,'xxx')";
  39. pg_query($connection,$primera);
  40. }
[/QUOTE]

Etiquetas: Ninguno
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 21:08.