PHP - GENERAR ARCHIVO CSV CON PHP Y SQL

   
Vista:

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por Gray (15 intervenciones) el 17/09/2014 22:19:48
Hola a Todos, tengo un problema, espero que alguien pueda ayudarme.

Quiero hacer en PHP que me genere un Layout formato(CSV) los datos los quiero extraer desde una BD SQL, he buscando varios ejemplo pero todos son con Mysq he probado y marca errores.

Aqui el ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
include database.php
 
$csv_end = "
";
$csv_sep = "|";
//$csv_file = "layout_solicitud.csv";  
$csv="";
$sql=mysql_query("SELECT idSolicitud,idUserSmx,monto,concepto from solicitudAnticipo")or die(mysql_error());
//$res=mysql_query($sql);  
while ($row = mysql_fetch_array($sql))
 
{
    $csv.=$row['idSolicitud'].$csv_sep.$row['idUserSmx'].$csv_sep.$row['monto'].$csv_sep.$row['concepto'].$csv_end;
}
//Generamos el csv de todos los datos  
header("Content-Description: File Transfer");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=layout_solicitud.csv");
echo $csv;
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por Gonzalo (338 intervenciones) el 17/09/2014 22:29:07
el formato csv es el mas facil de exportar, solo escribes los campos entre comas.

1
2
3
4
5
6
7
8
$csv.=$row['idSolicitud'] . ',' .
$csv_sep . ',' .
$row['idUserSmx'] . ',' .
$csv_sep . ',' .
$row['monto'] . ',' .
$csv_sep . ',' .
$row['concepto'] . ',' .
$csv_end ."\n";

aqui lo que debes cuidar es poner los campos de texto entre ".

suerte, salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por Gray (15 intervenciones) el 17/09/2014 23:13:39
No pasa los datos genera el archivo pero no pasa ningun dato manda el siguiente error.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<p>Severity: Warning</p>
<p>Message:  mysql_fetch_array() expects parameter 1 to be resource
<p>Line Number: 899</p>
 
/****************************************************************

$csv_end = "";   
$csv_sep = "|";    
$csv=""; 
$sql=mysql_query("SELECT * from solicitudAnticipo"); 
while ($row = mysql_fetch_array($sql)) { 
    $csv.=$row['idSolicitud'].$csv_sep.$row['idUserSmx'].$csv_sep.$row['monto'].$csv_sep.$row['concepto'].$csv_end; 
} 
header("Content-Description: File Transfer"); 
header("Content-Type: application/force-download"); 
header("Content-Disposition: attachment; filename=layout_solicitud.csv"); 
echo $csv;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por Gonzalo (338 intervenciones) el 17/09/2014 23:44:51
cual es la linea 899?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por Gray (15 intervenciones) el 17/09/2014 23:47:00
Es esta
while ($row = mysql_fetch_array($sql)) {
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por xve (5512 intervenciones) el 18/09/2014 07:35:29
Hola Gray, es un Warning, no un error... me da la sensación, de que no devuelve ningún registro o algo por el estilo.

Si debajo de la linea:
1
$sql=mysql_query("SELECT * from solicitudAnticipo");

pones:
1
2
3
if (!$sql) {
    die('Invalid query: ' . mysql_error());
}

Haber si te indica que esta pasando...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por Gonzalo (338 intervenciones) el 18/09/2014 16:46:09
no hay clausula where en la orden sql, asi que esta regresando todos los registros, el error se generaria solo si la tabla no tiene registros.

aqui pudiera haber 2 situaciones

1 no activaste la base de datos, te recomendaria usar mysql_select_db("LaBaseDeDatosQueEstasUsando");
2 la orden mysql_fetch_array($sql)) tal vez seria necesario indicar si es por NUM o por ASSOC, por la manera en la que recuperas los registros yo diria que es por assoc.

suerte, salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por Gray (15 intervenciones) el 18/09/2014 18:06:48
Hola, agregue las correcciones y quedo de esta manera.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
include batabase.php;
 
$csv_end = "";
$csv_sep = "|";
$csv="";
$sql=mysql_select_db("REPORTES")or die(mysql_error());
$query=("SELECT idSolicitud,idUserSmx,monto,concepto from REPORTES.dbo.solicitudAnticipo where estatus=1");
 
while ($row = mysql_fetch_assoc($query)) {
 
    $csv.=$row['idSolicitud'].$csv_sep.$row['idUserSmx'].$csv_sep.$row['monto'].$csv_sep.$row['concepto'].$csv_end;
}
header("Content-Description: File Transfer");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=layout_solicitud.csv");
echo $csv;
?>



Al correrlo me marca error de acceso.

Access denied for user ''@'localhost' to database 'reportes'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por Gonzalo (338 intervenciones) el 18/09/2014 18:17:20
debe faltar la orden mysql_connect, debe estar antes de mysql_select_db.

suerte, salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por Gray (15 intervenciones) el 18/09/2014 19:39:54
Lo tengo de esta manera pero no hace la conexión con la BD en SQL, alguna idea?? (Access denied for user ''@'localhost' to database 'reportes')

1
2
3
4
5
6
7
8
9
10
11
12
<?
$csv_end = ""; $csv_sep = "|"; $csv="";
 $serverName = "10.x.x.x\Prueba;";
 $sql=mysql_select_db("REPORTES")or die(mysql_error());
$query=("SELECT idSolicitud,idUserSmx,monto,concepto from REPORTES.dbo.solicitudAnticipo where estatus=1");
 
while ($row = mysql_fetch_array($query))
{ $csv.=$row['idSolicitud'].$csv_sep.$row['idUserSmx'].$csv_sep.$row['monto'].$csv_sep.$row['concepto'].$csv_end; }
header("Content-Description: File Transfer");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=layout_solicitud.csv"); echo $csv;
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por xve (5512 intervenciones) el 18/09/2014 19:55:48
Gray, no entiendo muy bien... si la base de datos es mysql, el servidor es únicamente una IP.

Te falta el mysql_connect() y el mysql_query()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por xve (5512 intervenciones) el 18/09/2014 20:14:25
El error que te da, es porque no has definido ningún usuario... Entiendo que has realizado la conexión contra localhost en otra parte del código, no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por Gonzalo (338 intervenciones) el 18/09/2014 20:43:10
intenta con 127.0.0.1 en lugar de @localhost pero en este caso creo que el servidor mysql debe estar en la misma pc donde esta el servidor de paginas web.

salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por Gray (15 intervenciones) el 18/09/2014 23:09:31
El servidor de la BD es SQL hice la conexión así pero me manda ese error: ( Fatal error: Call to undefined function sqlsrv_connect() in C:\xampp\htdocs\ejemplo.php)


*************************

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
 
$csv_end = "";
$csv_sep = "|";
$csv="";
 
$serverName="sqlsrv:server=10.X.X.X\PRUEBA";
$conn = array("Database"=>"REPORTES","UID"=>"Usr_Reportes","PWD"=>"Reportes@Mexico!");
$conexion = sqlsrv_connect( $serverName, $conn);
if($conexion){
echo('Conectado');
}else{
echo('No se pudo conectar<br/>');
die( print_r( sqlsrv_errors(), true));
}
$sql=$conexion->query("SELECT idSolicitud,idUserSmx,monto,concepto from REPORTES.dbo.solicitudAnticipo where estatus=1");
while ($row = $sql->fetch_object())
 {     $csv.=$row['idSolicitud'].$csv_sep.$row['idUserSmx'].$csv_sep.$row['monto'].$csv_sep.$row['concepto'].$csv_end;
}
header("Content-Description: File Transfer");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=layout_solicitud.csv");
echo $csv;
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por Gonzalo (338 intervenciones) el 18/09/2014 23:27:22
si es un servidro mssql entonces el nombre del servidor no parece ser correcto

debe ser un nombre
una direccion ip
o unnombre\sqlexpress
o una direccion ip ?.?.?.?\sqlexpress

si esta bloqueado a un puerto debes mencionarlo tambien

revisa ese dato.

suerte, salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por Gray (15 intervenciones) el 18/09/2014 23:42:02
Si es un nombre la conexión esta asi pero me manda error en la línea--------> $conexion = sqlsrv_connect( $serverName, $conn);


1
2
3
4
5
6
7
8
9
$serverName="sqlsrv:server=BRSXXQL0109\Queretarox";
$conn = array("Database"=>"REPORTES","UID"=>"Usr_Test","PWD"=>"Test@Mexico!");
$conexion = sqlsrv_connect( $serverName, $conn);
if($conexion){
echo('Conectado');
}else{
echo('No se pudo conectar<br/>');
die( print_r( sqlsrv_errors(), true));
}


Yo pienso que es algún error de versiones de php o libererias en mi servidor, no se sigo buscando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GENERAR ARCHIVO CSV CON PHP Y SQL

Publicado por Gonzalo (338 intervenciones) el 19/09/2014 00:09:46
a ver si este procedimiento te puede ayudar, este es el que yo uso con windows, php, apache y ms-sql, aqui hay un problema, debes encontrar el php_mssql.dll para ms-sql que corresponda a la version de php que tienes, si no lo tienes no va a funcionar, si lo encuentras debe ir dentro del directorio php/ext, en windwos/system y windows/system32 y en php.ini, reseteas el apache y debe funcionar, algunos instaladores de php vienen con ese dll para instalar, asi no es necesario andar buscando el dll.

ajustalo a tus bases de datos.

en este caso conecta con un servidor sql.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$mc=mssql_connect("127.0.0.1","Payroll2014","Live42Day") or die("Connection error.");  //conecta con el server
 
mssql_select_db("PayrollMexico",$mc) or die("Com Selection Error.");//selecciona la base de datos
 
 $SqlCommand="select * from Recibos";
 
$mq=mssql_query($SqlCommand);//pide el query
 
if(mssql_num_rows($mq)>0)
{
while($rs=mssql_fetch_array($mq, MSSQL_ASSOC))
{
echo($rs["IdRecipe"]);
}
}else
{
echo('no hay registros');
}
 
mssql_close($mc);

si fuera un sqlexpress seria de este modo

1
$mc=mssql_connect("127.0.0.1\sqlexpress","Payroll2014","Live42Day") or die("Connection error.");
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Call to undefined function sqlsrv_connect()

Publicado por xve (5512 intervenciones) el 19/09/2014 08:11:02
Hola Gray, nos estas mareando... antes utilizabas instrucciones de MySQL¿?

Si te dice: Call to undefined function sqlsrv_connect() quiere decir que no existe esa función.

Entiendo que no esta instalada o habilitada la librería mssql de sql server. Intenta habilitarla o instalarla. Dependiendo del sistema operativo y tipo de instalación, puede variar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar