Foros del Web » Programando para Internet » PHP »

Alguien me podria ayudar a resolver este pequeño problema?

Estas en el tema de Alguien me podria ayudar a resolver este pequeño problema? en el foro de PHP en Foros del Web. Buenas, soy nuevo en el foro, pero hace un montón que os sigo, voy leyendo articulos y siempre e encontrado solucion, menos hoy! Estoy haciendo ...
  #1 (permalink)  
Antiguo 12/11/2012, 12:04
 
Fecha de Ingreso: noviembre-2012
Mensajes: 4
Antigüedad: 12 años
Puntos: 0
Pregunta Alguien me podria ayudar a resolver este pequeño problema?

Buenas, soy nuevo en el foro, pero hace un montón que os sigo, voy leyendo articulos y siempre e encontrado solucion, menos hoy!

Estoy haciendo un pequeño programa para la hosteleria para que puedan crear el archivo policial y mandarlo a traves por internet en vez de fax y otros medios.

El programa me funciona todo bien, menos una pequeña parte que no se como hacer para que me salga el resultado que quiero. De todo el archivo del .php os dejo aqui la parte donde me falla.

Código PHP:
function ExportToCSV()
{
    global 
$rs,$nPageSize,$strTableName,$conn,$eventObj;
    
header("Content-Type: application/csv");
    
header("Content-Disposition: attachment;Filename=REGISTRE_VIATGERS2.csv");
    
    if(
$eventObj->exists("ListFetchArray"))
        
$row $eventObj->ListFetchArray($rs);
    else
        
$row db_fetch_array($rs);    
//    if(!$row)
//        return;
    
        
        
    
$totals=array();

    
// write header
    
$outstr1="";
    if(
$outstr1!="")
        
$outstr1.=",";
    
$outstr1.= "1";
    if(
$outstr1!="")
        
$outstr1.=",";
    
$outstr1.= "CODIHOTEL";
    if(
$outstr1!="")
        
$outstr1.=",";
    
$outstr1.= "NOM HOTEL";
    if(
$outstr1!="")
        
$outstr1.=",";
    if(
$outstr1!="")
        
$outstr1.=",";
    if(
$outstr1!="")
        
$outstr1.=",";
    if(
$outstr1!="")
        
$outstr1.=",";
    echo 
$outstr1;
    echo 
"\r\n";

// write data rows

    
$iNumberOfRows 0;
    
$i=0;
    while((!
$nPageSize || $iNumberOfRows<$nPageSize) && $row)
    {
        
        
        
$values = array();
            
$format="";
            
$values["TREG"] = GetData($row,"TREG",$format);
            
$format="";
            
$values["DNI"] = GetData($row,"DNI",$format);
            
$format="";
            
$values["PASAPORT"] = GetData($row,"PASAPORT",$format);
            
$format="";
            
$values["TIPUSDOC"] = GetData($row,"TIPUSDOC",$format);
            
$format="";
            
$values["DATA EXP_DNI"] = GetData($row,"DATA EXP_DNI",$format);
            
$format="";
            
$values["COGNOM1"] = GetData($row,"COGNOM1",$format);
            
$format="";
            
$values["COGNOM2"] = GetData($row,"COGNOM2",$format);
            
$format="";
            
$values["NOM"] = GetData($row,"NOM",$format);
            
$format="";
            
$values["SEXE"] = GetData($row,"SEXE",$format);
            
$format="";
            
$values["DATANATAL"] = GetData($row,"DATANATAL",$format);
            
$format="";
            
$values["NACIONALITAT"] = GetData($row,"NACIONALITAT",$format);
            
$format="";
            
$values["DATAENTRCLIENT"] = GetData($row,"DATAENTRCLIENT",$format);

        
$eventRes true;
        if (
$eventObj->exists('BeforeOut'))
        {            
            
$eventRes $eventObj->BeforeOut($row,$values);
        }
        if (
$eventRes)
        {
            
$outstr2="";            
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["TREG"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["DNI"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["PASAPORT"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["TIPUSDOC"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["DATA EXP_DNI"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["COGNOM1"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["COGNOM2"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["NOM"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["SEXE"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["DATANATAL"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["NACIONALITAT"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["DATAENTRCLIENT"]).'"';
            echo 
$outstr2;
        }
        
        
$iNumberOfRows++;
        if(
$eventObj->exists("ListFetchArray"))
            
$row $eventObj->ListFetchArray($rs);
        else
            
$row db_fetch_array($rs);    
            
        if(((!
$nPageSize || $iNumberOfRows<$nPageSize) && $row) && $eventRes)
            echo 
"\r\n";
    
$i++;
    }
    
    
    echo 
$i;

Esta funcion lo que hace es crear un archivo y dentro de el, escribe los datos de la base de datos. Aqui tenemos 2 partes:

1.-
Código PHP:
// write header
    
$outstr1="";
    if(
$outstr1!="")
        
$outstr1.=",";
    
$outstr1.= "1";
    if(
$outstr1!="")
        
$outstr1.=",";
    
$outstr1.= "CODIHOTEL";
    if(
$outstr1!="")
        
$outstr1.=",";
    
$outstr1.= "NOM HOTEL";
    if(
$outstr1!="")
        
$outstr1.=",";
    if(
$outstr1!="")
        
$outstr1.=",";
    if(
$outstr1!="")
        
$outstr1.=",";
    if(
$outstr1!="")
        
$outstr1.=",";
    echo 
$outstr1;
    echo 
"\r\n"
En la primera parte, como vemos, nos escribira "1,CODIHOTEL,NOM HOTEL,,,,".
Dentro de este contenido me falta "1,CODIHOTEL,NOM HOTEL,FECHA,HORA,REGISTO,"
FECHA: 20121112 (la fecha actual)
HORA:1834 (la hora actual)
REGISTRO: 66 (por ejemplo, el numero de registros de clientes que se han escrito a continuacion)

Los que son de color azul son textos fijos y los de color rojo cada vez que se genera el archivo se tendrán que actualizar automáticamente.

2.-
Código PHP:
// write data rows

    
$iNumberOfRows 0;
    
$i=0;
    while((!
$nPageSize || $iNumberOfRows<$nPageSize) && $row)
    {
        
        
        
$values = array();
            
$format="";
            
$values["TREG"] = GetData($row,"TREG",$format);
            
$format="";
            
$values["DNI"] = GetData($row,"DNI",$format);
            
$format="";
            
$values["PASAPORT"] = GetData($row,"PASAPORT",$format);
            
$format="";
            
$values["TIPUSDOC"] = GetData($row,"TIPUSDOC",$format);
            
$format="";
            
$values["DATA EXP_DNI"] = GetData($row,"DATA EXP_DNI",$format);
            
$format="";
            
$values["COGNOM1"] = GetData($row,"COGNOM1",$format);
            
$format="";
            
$values["COGNOM2"] = GetData($row,"COGNOM2",$format);
            
$format="";
            
$values["NOM"] = GetData($row,"NOM",$format);
            
$format="";
            
$values["SEXE"] = GetData($row,"SEXE",$format);
            
$format="";
            
$values["DATANATAL"] = GetData($row,"DATANATAL",$format);
            
$format="";
            
$values["NACIONALITAT"] = GetData($row,"NACIONALITAT",$format);
            
$format="";
            
$values["DATAENTRCLIENT"] = GetData($row,"DATAENTRCLIENT",$format);

        
$eventRes true;
        if (
$eventObj->exists('BeforeOut'))
        {            
            
$eventRes $eventObj->BeforeOut($row,$values);
        }
        if (
$eventRes)
        {
            
$outstr2="";            
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["TREG"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["DNI"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["PASAPORT"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["TIPUSDOC"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["DATA EXP_DNI"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["COGNOM1"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["COGNOM2"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["NOM"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["SEXE"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["DATANATAL"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["NACIONALITAT"]).'"';
            if(
$outstr2!="")
                
$outstr2.=",";
            
$outstr2.='"'.str_replace('"','""',$values["DATAENTRCLIENT"]).'"';
            echo 
$outstr2;
        }
        
        
$iNumberOfRows++;
        if(
$eventObj->exists("ListFetchArray"))
            
$row $eventObj->ListFetchArray($rs);
        else
            
$row db_fetch_array($rs);    
            
        if(((!
$nPageSize || $iNumberOfRows<$nPageSize) && $row) && $eventRes)
            echo 
"\r\n";
    
$i++;
    }
    
    
    echo 
$i;

La 2ª parte es la que hace la consulta a la base de datos y escribe los datos en el fixhero. Esta parte me funciona bien, solo que tengo un $i (lo vereis al final con un echo para provar que funcionase bien). Este $i seria el que tiene que ir a la parte de arriba en el REGISTRO y no se como hacerlo, e probado de varias maneras y me da error, como por ejemplo:
Código PHP:
// write header
    
$outstr1="";
    if(
$outstr1!="")
        
$outstr1.=",";
    
$outstr1.= "1";
    if(
$outstr1!="")
        
$outstr1.=",";
    
$outstr1.= "CODIHOTEL";
    if(
$outstr1!="")
        
$outstr1.=",";
    
$outstr1.= "NOM HOTEL";
    if(
$outstr1!="")
        
$outstr1.=",";
    if(
$outstr1!="")
        
$outstr1.=",";
    if(
$outstr1!="")
        
$outstr1.=",";
    
$outstr1.= $i;      ////aqui esta xD
    
if($outstr1!="")
        
$outstr1.=",";
    echo 
$outstr1;
    echo 
"\r\n"
Supongo que no lo aceptara por que esta parte es la de arriba, y el resto esta abajo. El error que me no me lo muestra en la web, sino impreso en el archivo, ya que no me sale nada de lo que me tendria que salir y me sale un monton de codigo.
Aqui una muestra hecha a mano de lo que me tendria que salir tal qual os lo e puesto.
Código:
1,CODIHOTEL,NOM HOTEL,20121112,1853,3,
"2","","123456789","P","","PEPA","","JULIA","F","12345678","ALEMANIA","20090804"
"2","","321654987","P","","JULIA","","NATALIE","F","14785236","ALEMANIA","20090804"
"2","","987654321","P","","ALBERTO","","ROBERT","M","96385214","UK","20090804"3
Si alguien me pudiera ayudar con lo de poner el contador de registros para que me lo imprimiera en la primera parte y lo de la fecha y la hora tal cual muestro aqui se lo agradecería muchísimo!!!

PD: Perdón por el desorden pero estoy en la tienda (negocio propio) y al estar entrando gente todo el rato me voy perdiendo. Gracias de antemano!

Etiquetas: pequeño, registro, resolver
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 08:29.