Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   ayuda para insercciones en php despues de descomponer un archivo .txt (https://www.clubdelphi.com/foros/showthread.php?t=69660)

richy08 31-08-2010 20:18:04

ayuda para insercciones en php despues de descomponer un archivo .txt
 
buenas tardes compañeros logre separar campo a campo un archivo de txt, pero ahora me veo en la problematica de las insercciones debido a la estructura que tiene el archivo la estructura mas sencilla de este archivo es como esto lo que pinto de color rojo es lo que ira en la parte del maestro de la tabla, lo de azul va en la parte del detalle, cada booking es un registro nuevo maestro-detalle.

Código:

Comp. code : PVRTRA  Timon Tours Airport Transfers
 Category  : ALLE    Return Transfers to Club Marival Resort


From date :  14-AUG-2010

 No          Booking            Conf Pax name
  1        607872(2)                  MR  NURANEY, NIZAR
                                      MRS  NURANEY, SALMA
                                      MS  NURANEY, NAVIDA
                                      MR  NGUYEN, KHANG QUOC
                                      MRS  VELJI, ZOREEN
                                      MR  VELJI, MEBS
 
  + CHLD                            MSTR VELJI, IMRAN                  Age:7
    + CHLD                            MISS VELJI, JAIDE                  Age:4


-> 7 PF 14-AUG-10 WS2306 YEG/PVR  DEP 10:45 ARR 16:46
      8 PF 21-AUG-10 WS2307 PVR/YEG  DEP 17:35 ARR 21:36


 No          Booking            Conf Pax name
  2        631974(6)                  MR  OGBEBOR, JOSEPH
                                              MRS  OGBEBOR, OYINDAMOLA
    + CHLD                            MSTR OGBEBOR, PAUL                Age:10
    + CHLD                            MSTR OGBEBOR, JOSEPH OSASUEHI      Age:8
    + CHLD                            MISS OGBEBOR, GABRIELLE            Age:6


    -> 7 PF 14-AUG-10 WS2306 YEG/PVR  DEP 10:45 ARR 16:46
      8 PF 21-AUG-10 WS2307 PVR/YEG  DEP 17:35 ARR 21:36

para este ejemplo no tengo problemas pero ahi partes del archivo con esta estructura

Código:

Comp. code : PVRTRA  Timon Tours Airport Transfers
 Category  : ALLE    Return Transfers to Club Marival Resort


From date :  14-AUG-2010

 No          Booking            Conf Pax name
  1        607872(2)                  MR  NURANEY, NIZAR
                                      MRS  NURANEY, SALMA
                                      MS  NURANEY, NAVIDA
                                      MR  NGUYEN, KHANG QUOC
                                      MRS  VELJI, ZOREEN
                                      MR  VELJI, MEBS
 
  + CHLD                            MSTR VELJI, IMRAN                  Age:7
    + CHLD                            MISS VELJI, JAIDE                  Age:4


 No          Booking            Conf Pax name
  2        631974(6)                  MR  OGBEBOR, JOSEPH
                                              MRS  OGBEBOR, OYINDAMOLA
    + CHLD                            MSTR OGBEBOR, PAUL                Age:10
    + CHLD                            MSTR OGBEBOR, JOSEPH OSASUEHI      Age:8
    + CHLD                            MISS OGBEBOR, GABRIELLE            Age:6


    -> 7 PF 14-AUG-10 WS2306 YEG/PVR  DEP 10:45 ARR 16:46
      8 PF 21-AUG-10 WS2307 PVR/YEG  DEP 17:35 ARR 21:36

como se ve los dos booking comparten esta informacion

Código:

-> 7 PF 14-AUG-10 WS2306 YEG/PVR  DEP 10:45 ARR 16:46
      8 PF 21-AUG-10 WS2307 PVR/YEG  DEP 17:35 ARR 21:36

es ahi el problema de que las lineas se van leyendo secuencialmente y no encuentro la forma de como parar la primera inserccion y almacenarla en alguna estructura y al detectar que que en el siguiente booking ya puedo hacer las dos insercciones recuperar la informacion y hacer las dos insercciones



gracias por cualquier comentario

movorack 31-08-2010 20:37:30

no se... y si almacenas todo en un objeto como primer paso y luego desde el objeto haces las operaciones de inserción?

richy08 31-08-2010 20:42:17

movorack gracias por la respuesta pero como que tipo de objeto se te ocurre??

AzidRain 31-08-2010 20:55:26

creo que te faltan campos, lo que marcas con rojo no son candidatos a campos ya que por ejemplo, hay algunos menores que aparecen ahi y sus datos no tienen columna, eso hay que tomarlo en cuenta.

Ahora bien, tu problemas sencillo, lees todos los datos de cada reservación y los guardas momentaneamente en una estructura o archivo temporal hasta que encuentres la información que "cierra" la reservación (booking). Es decir después de leer y guardar el texto del booking esperaras encontrar como primeros caracters ya sea un "->" indicando que ahi termina ese registro con los datos de su salida y llegada o bien un "No" que indica que hay otro registro más que comparte los mismos datos.

O en términos más claros, si encuentro un "->" leo las dos líneas y grabo el registro completo con sus datos, si encuentro un "No" sigo leyendo y guardando lo que encuentre hasta que me tope con un "->", entonces guardo todo lo que haya tenido almacenado previamente y lo asocio con ese dato de salida y regreso.

richy08 31-08-2010 21:04:17

Cita:

Empezado por AzidRain (Mensaje 375138)
creo que te faltan campos, lo que marcas con rojo no son candidatos a campos ya que por ejemplo, hay algunos menores que aparecen ahi y sus datos no tienen columna, eso hay que tomarlo en cuenta.

Ahora bien, tu problemas sencillo, lees todos los datos de cada reservación y los guardas momentaneamente en una estructura o archivo temporal hasta que encuentres la información que "cierra" la reservación (booking). Es decir después de leer y guardar el texto del booking esperaras encontrar como primeros caracters ya sea un "->" indicando que ahi termina ese registro con los datos de su salida y llegada o bien un "No" que indica que hay otro registro más que comparte los mismos datos.

O en términos más claros, si encuentro un "->" leo las dos líneas y grabo el registro completo con sus datos, si encuentro un "No" sigo leyendo y guardando lo que encuentre hasta que me tope con un "->", entonces guardo todo lo que haya tenido almacenado previamente y lo asocio con ese dato de salida y regreso.


hola AzidRain gracias por la respuesta., bueno lo primero que comentas del desmenbre de los datos eso ya lo tengo solucionado y pues valla lo que describes es exactamente lo que uso para hacer le desmenbre de los datos, la cuestion es que igual y no me explique bien cada booking es una inserccion en la tabla maestros, los integrates de cada booking van al detalle, valla sera algo tan facil que mi cerebro no logra hilarlo :p.

richy08 01-09-2010 17:59:09

hola que tal ya logre hacer otra cadena basado en el archivo mencionado ahora me surge otra duda de como separar la nueva cadena, he estado viendo que la funcion explode me puede ayudar pero no logro hacer la funcion que me ayude hacer dicho proceso anexo la nueva cadena que forme.

delimitadores para la nueva cadena
Código:


#****************************************************
# ¬  "separador para el hotel"                                                      *
# #  "separador del booling"                                                        *
# ;  "separador del nombre"                                                        *
# [] "separador acompañantes adulto"                                          *
# {} "separador acompañantes niños"                                            *
# °    "separador info vuelo"                                                        *
#****************************************************

Código:

Club Marival Resort ¬ 607872# MR NURANEY, NIZAR ; [ MRS NURANEY, SALMA - MS NURANEY, NAVIDA - MR NGUYEN, KHANG QUOC - MRS VELJI, ZOREEN - MR VELJI, MEBS -] { + CHLD MSTR VELJI, IMRAN Age:7 - + CHLD MISS VELJI, JAIDE Age:4 -} ° 8?
Club Marival Resort ¬ 631974# MR OGBEBOR, JOSEPH ; [ MRS OGBEBOR, OYINDAMOLA -] { + CHLD MSTR OGBEBOR, PAUL Age:10 - + CHLD MSTR OGBEBOR, JOSEPH OSASUEHI Age:8 - + CHLD MISS OGBEBOR, GABRIELLE Age:6 -} -> 7 PF 14-AUG-10 WS2306 YEG/PVR DEP 10:45 ARR 16:46 | 8 PF 21-AUG-10 WS2307 PVR/YEG DEP 17:35 ARR 21:36 |° 5?

gracias por cualquier comentario :D

AzidRain 01-09-2010 18:03:34

Es como te digo, entiendo que en efecto cada booking te va a representar un registro maestro y los pasajeros serán el detalle del booking. Con base en el archivo txt que pones, cada booking puede compartir o no datos de salida y regreso. El algoritmo que te comenté es el correcto solo tienes que desglosarlo y aplicarlo y te va a funcionar.

richy08 01-09-2010 18:09:55

gracias azidrain en efecto ese es el algoritmo que uso si te fijas las nuevas cadenas que he formado ya estan listas para ser separadas e insertadas, ahora lo que pienso hacer es

1.- primeramente el caracter "?" me indica que ahi termina un booking, dicha cadena ya trae todos los datos (excepto la info de vuelo cuando es compartida entre varios booking).

2.- despues de que separe la cadena en un arreglo tengo que buscar el caracter "->" que me indica que el booking esta completa (no comparte informacion de vuelo con otro booking) y hacer la inserccion si comparte el booking tengo que recorrer el arreglo hasta que encuentre el caracter que me indica el vuelo insertoy tengo que regresar el arreglo para insertar los booking que quedaron atras.

pero el problema es que no tengo mucha experiencia con esas funciones bueno seguire investigando

AzidRain 01-09-2010 19:43:24

Mmm, creo que no hay necesidad de meter todo en un array y de ahi partir, lo podrías hacer con una estructura tipo record, leer las lineas, analizarlas, guardar los datos en el record y continuar.

richy08 01-09-2010 19:48:42

mmm valla me empiezo confundir entones cres que es mejor leer la linea e insertarla directamente a la bd??, pero como controlarias los booking que comparten informacion de vuelo??

AzidRain 01-09-2010 20:53:51

Nooo...la linea la lees la analizas y la la guardas en una estructura,digamos un record o un array lo que mejor te acomode. Sigues leyendo hasta detectar si hay otro registro o bien encuentras los datos del vuelo. Si encuentras los datos del vuelo todo lo que tengas en tu estructura lo pasas a la BD asociándola con el vuelo correspondiente (pueden ser una o mas reservaciones). Está relativamente sencillo, no veo donde te atoras.

richy08 01-09-2010 20:59:05

valla eso es exactemente lo que describo arriba :confused: tal ves no me explique bien, en lo que me atoro es en el manejo de arreglos jeje hace tiempo que no usaba esas estructuras de hecho nunca las he usado en php.

AzidRain 01-09-2010 22:24:14

Ya caigo..estaba pensando en Delphi..
jiji

richy08 01-09-2010 22:38:05

jaja si en delphi se me haria mas facil :D pero valla requerimiento es requerimiento asi es que lo tendre que sacar en php jaja


La franja horaria es GMT +2. Ahora son las 05:46:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi