0

Tengo una pagina creada en php con motor de base de datos mysql y tengo 2 tablas de las cuales consulto para extraer un archivo de texto delimitado por coma con php.

Esta es la consulta:

$registros=$base->prepare("SELECT * FROM datos_solicitudes INNER JOIN entidades_comerciales ON ID = Id_solicitud WHERE datos_solicitudes.Fecha >= :nFecha_inicial AND datos_solicitudes.Fecha <= :nFecha_final" );      

Y este es el resto del codigo:

$registros->execute(array(':nFecha_inicial'=>$fecha_inicial, ':nFecha_final'=>$fecha_final));

        $registros = $registros->fetchAll( PDO::FETCH_OBJ );

        $archivo = fopen("php://output","w"); /*  Salida de archivo */

    /* Encabezados de la tabla */

    $encabezados = array("ID","Oficina", "Sector", "Nombre", "Correo", "Fecha_creacion", "Prioridad", "Estado", "Asignado", "Fecha_ultima_respuesta", "Expediente", "Orden_servicio", "Tipo_solicitud", "Provincia", "Municipio", "Seccion", "Localidad", "Calle", "Aviso_acceso_finca", "Area_ejecucion", "Oficina_comercial", "Numero_puerta", "Duplicador", "Referencia", "Nombre_finca", "Tipo_finca", "Estado_finca", "Nic_anterior", "Nic_posterior", "CT", "Tipo_suministro", "Tipo_conexion", "Tarifa", "Tension_voltaje", "CGV", "Nombre_suministro", "CoordenadasY", "CoordenadasX", "NIS", "NIF" ); /* Encabezados de la tabla */

    fputcsv($archivo,$encabezados);

    foreach ($registros as $datos) /*Mientras datos existan en la consulta escribira datos */
      {

      fputcsv($archivo,array($datos->Id,
                             $datos->Oficina,
                             $datos->Sector,
                             $datos->Nombre,
                             $datos->Correo,
                             $datos->Fecha,
                             $datos->Prioridad,
                             $datos->Estado,
                             $datos->Asignado,
                             $datos->Fecha_ultima_respuesta,
                             $datos->Expediente,
                             $datos->Orden_servicio,
                             $datos->Tipo_solicitud,
                             $datos->Provincia,
                             $datos->Municipio,
                             $datos->Seccion,
                             $datos->Localidad,
                             $datos->Calle,
                             $datos->Aviso_acceso_finca,
                             $datos->Area_ejecucion,
                             $datos->Oficina_comercial,
                             $datos->Numero_puerta,
                             $datos->Duplicador,
                             $datos->Referencia,
                             $datos->Nombre_finca,
                             $datos->Tipo_finca,
                             $datos->Estado_finca,
                             $datos->Nic_anterior,
                             $datos->Nic_posterior,
                             $datos->CT,
                             $datos->Tipo_suministro,                    
                             $datos->Tipo_conexion,
                             $datos->Tarifa,
                             $datos->Tension_Voltaje,
                             $datos->CGV,
                             $datos->Nombre_suministro,
                             $datos->CoordenadasX,
                             $datos->CoordenadasY,
                             $datos->NIS,                        
                             $datos->NIF));

      }

    fclose($archivo);
    }catch (Exception $e){

            die('Error ' . $e->getMessage());
            echo "Linea del error" . $e->getLine();

        }

Al importar el archivo de texto generado a excel cada cierta cantidad de datos pasa esto:(Esto que dice Sector MAO no debería estar en esa celda)

introducir la descripción de la imagen aquí

Me gustaría saber como evitar esto.

Albert Hidalgo
  • 2,703
  • 2
  • 15
  • 29
  • Prueba usando `LEFT JOIN` en la consulta en vez de `INNER JOIN` para que dé el valor `NULL` a aquellos campos que no tengan datos, ya que, al parecer, cuando en `oficinas` no hay datos, el valor de `sector` se coloca donde debería ir el valor de `oficina`. Si no se resuelve, es posible que haya un problema de codificación en los datos. – A. Cedano Aug 26 '17 at 03:17
  • @A.Cedano Gracias justo en el clavo! pero lo contrario, me percate que los datos que se pasan a otras celdas es porque en esas filas hay mas celdas llenas que en el resto. Ejemplo: las que se ven alineadas (de la fila 335 hacia arriba) no tienen tantos datos como las que salen fuera de orden. – Albert Hidalgo Aug 26 '17 at 03:31
  • Entendido, verifica entonces por qué aparecen _datos de más_ si es un problema de la consulta o de la codificación. Si es lo 2º te podría poner comas de más al interpretar ciertos caracteres. En la línea 342 de la imagen, en la última columna que aparece da la impresión de que tienes problemas con la codificación, **[sugiero que leas esto](https://es.stackoverflow.com/a/59510/29967)**. Además, si el delimitador es la coma `,` es extraño que no funcione en `,Sector Mao"` y que aparezcan esas comillas al final. Asegúrate de que eso es **realmente una coma**, pues puede parecer y no serlo. – A. Cedano Aug 26 '17 at 03:35
  • @A.Cedano Quiero agradecerte por las respuestas y aprovechar que encontré otra manera mejor. Estoy exportando directamente en excel con un método que encontré. – Albert Hidalgo Aug 26 '17 at 17:01

0 Answers0