Page 1 sur 1

recuperer sous forme .csv ou pdf des informations de ma base

Posté : 18 juin 2014, 16:13
par sam95
bonjour j'ai crée un applicatif ou les intervenants se connectent, ils accèdent à une page ou ils selectionnent une date de début et une date de fin avec un calcul du nombre de jour, il selectionne le projet et le client. j'ai crée un bouton exporter et je souhaiterais qu'il me permette de récuperer pour l'utilisateur qui est connecté toutes les heures qu'il a déclaré avec le nom projet et le nom du client

merci

Re: recuperer sous forme .csv ou pdf des informations de ma

Posté : 18 juin 2014, 16:17
par Elie
Et donc tu veux quoi un devis ?

Re: recuperer sous forme .csv ou pdf des informations de ma

Posté : 18 juin 2014, 16:29
par sam95
j'ai ce bout je commence en php
<?php
//include "page_membre.php";
//include "tableau.php";
//require_once "login.php";
require "connexion.php";
// Connexion à la base de données.
    $connectToDb = mysql_connect("$host", "$user", "$pass");
    // Selection de la base de données concernées.
    mysql_select_db($db);

//export
//fabrication du fichier


/* 
if (!$ID_user)
{

}*/

$user_login = $_POST['user_login'];
var_dump($user_login);
$ID_user = mysql_query("SELECT id_user FROM user WHERE nom_utilisateur = $user_login");
var_dump($ID_user);
//$queryString = "SELECT * FROM temps WHERE user_id_user = '$ID_user'";
/*$queryString = mysql_real_escape_string($queryString);
$reponse = mysql_query($queryString);
//$reponse = mysql_query('SELECT * FROM temps WHERE user_id_user= ' . $ID_user);
//$reponse = $bdd->query("SELECT * FROM temps WHERE id_user_id= $ID_user");
if (!$reponse) {
die('Requête invalide : ' . mysql_error());
}

//Afficher le résultat d'une requête*/
$f= fopen('planning.csv' ,'w');


// Liste les données de la table
// -------------------------------------------
$resQuery = mysql_query("SELECT * FROM table");

header("Content-Type: application/csv-tab-delimited-table");
header("Content-disposition: filename=table.csv");

if (mysql_num_rows($reponse) != 0) {
	// titre des colonnes
	$fields = mysql_num_fields($reponse);
	$i = 0;
	while ($i < $fields) {
		echo mysql_field_name($reponse, $i).";";
		$i++;
	}
	echo "\n";

	// données de la table
	while ($arrSelect = mysql_fetch_array($reponse, MYSQL_ASSOC)) {
		foreach($arrSelect as $elem) {
			echo "$elem;";
		}
	echo "\n";
	}
}






//$fields = array('user', 'projet', 'client', 'temps' );

/*fputcsv($f, $fields);*/

//fermeture;
fclose($f);


//recuperer le contenu
$content = file_get_contents('planning.csv');

//modifier header http
//format csv
header('Content-type: text/csv');
//force download
header('Content-Disposition: attachment; filename="planning_'.date('mY').'.csv"');

print $content;
?>
je voudrais que mon bouton export qui est dans une autre page me crée un fichier qui reprend l'utilisateur connecté les heures effectués et les projets sur lesquels il a travaillé voici ce que j'ai au final
string(7) "antoine"
bool(false)
<br />
<b>Notice</b>: Undefined variable: reponse in <b>C:\xampp\htdocs\planning\export_csv.php</b> on line <b>45</b><br />
<br />
<b>Warning</b>: mysql_num_rows() expects parameter 1 to be resource, null given in <b>C:\xampp\htdocs\planning\export_csv.php</b> on line <b>45</b><br />

Re: recuperer sous forme .csv ou pdf des informations de ma

Posté : 18 juin 2014, 16:51
par moogli
salut,

il faut vraiment que tu ai plus de soin quand tu code, c'est un sacré foutoirs la dedans (par exemple tu double les header ...).

Ce que tu veux faire est relativement simple.

le bouton (seule chose que contient le formulaire a priori) mène vers une page.
cette page effectue le select des information dans la base (à partir de l'id de l'utilisateur que tu stock en session).

a partir de la (il semble que tu ai déjà la requête sql) il te reste a créer le document final.

pour tu csv une simple chaîne de caractère suffit (pas besoin de mettre sa dan un fichier).
pour du PDF je t'oriente vers FPDF, TCPDF ou autre lib php à ta convenance (il y a un poste récent de albat sur le sujet).

le principe est le même dans les deux cas (csv / pdf) seule change le header et la façon de construire le document.
Ton code de façon plus réaliste
<?php

require "connexion.php";
// Connexion à la base de données.
$connectToDb = mysqli_connect($host, $user, $pass, $db);

$queryString = 'SELECT projet, client, temps FROM temps WHERE user_id_user =' . $_SESSION['id utilisateur'];
$reponse = mysqli_query($connectToDb, $queryString);

if (!$reponse) {
    die('Requête invalide : ' . mysqli_error($connectToDb)); // c'est moche ^^
}
$csv = 'user,projet,client,temps'.PHP_EOL;
while ($data = mysqli_fetch_assoc($reponse)){
    $csv = $data['projet'].','.$data['client'].','.$data['temps'].PHP_EOL;
}

//modifier header http
//format csv
header('Content-type: text/csv');
//force download
header('Content-Disposition: attachment; filename="planning_' . date('mY') . '.csv"');
header("Content-Description: File Transfer");
header('Content-Length: '.strlen($csv));

echo $csv;
flush();

Re: recuperer sous forme .csv ou pdf des informations de ma

Posté : 18 juin 2014, 17:01
par sam95
merci néanmoins je tombe sur ce message d'erreur :
Notice: Undefined variable: _SESSION in C:\xampp\htdocs\planning\export_csv.php on line 7
Requête invalide : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Re: recuperer sous forme .csv ou pdf des informations de ma

Posté : 18 juin 2014, 17:27
par moogli
mwé j'en doute pas, la iil te faut connaitre :
- le fonctionnement des session php
- ton appli pour récupérer correctement cette info (qui doit être en session si ce n'est pas le cas il faut l'ajouter à la connexion)


Pour info le copie coller a ces limites et tu en fait les frais :roll:

@+

Re: recuperer sous forme .csv ou pdf des informations de ma

Posté : 19 juin 2014, 12:26
par sam95
bonjour voici quelques modifications



<?php

require 'connexion.php';
// Connexion à la base de données.
$connectToDb = mysql_connect("$host", "$user", "$pass");
// Selection de la base de données concernées.
mysql_select_db($db);
//requete de selection de l'idate

$nom_user = $_POST['user_login'];

$queryUser = "SELECT id_user FROM user WHERE nom_utilisateur = '".$nom_user."'";
$id_user = mysql_query($queryUser);

$f= fopen('planning.csv' ,'w');

$queryString = "SELECT projet_id_projet, nb_jours FROM temps WHERE user_id_user = '".$id_user."'";
$reponse = mysql_query($queryString);

if (!$reponse) {
die('Requête invalide : ' . mysql_error($connectToDb));
}
/*$csv = 'user,projet,client,temps'.PHP_EOL;
while ($data = mysqli_fetch_assoc($reponse)){
$csv = $data['projet'].','.$data['client'].','.$data['temps'].PHP_EOL;
}*/
$queryString2 = "SELECT * FROM temps WHERE id_user_id = '".$id_user."'";
$reponse2 = mysql_query($queryString2);


//modifier header http



if (mysql_num_rows($reponse2) != 0) {
// titre des colonnes
$fields = mysql_num_fields($reponse2);
$i = 0;
while ($i < $fields) {
echo mysql_field_name($reponse2, $i).";";
$i++;
}
echo "\n";

// données de la table
while ($arrSelect = mysql_fetch_array($reponse2, MYSQL_ASSOC)) {
foreach($arrSelect as $elem) {
echo "$elem;";
}
echo "\n";
}
}

//fermeture;
fclose($f);


//recuperer le contenu
$content = file_get_contents('planning.csv');

//modifier header http
//format csv
header('Content-type: text/csv');
//force download
header('Content-Disposition: attachment; filename="planning_'.date('mY').'.csv"');

print $content;
/*echo $csv;*/
flush();

?>


voici mon message du fichier .csv


<br />
<b>Warning</b>: mysql_num_rows() expects parameter 1 to be resource, boolean given in <b>C:\xampp\htdocs\planning\export_csv.php</b> on line <b>36</b><br />

Re: recuperer sous forme .csv ou pdf des informations de ma

Posté : 19 juin 2014, 13:35
par moogli
Requête SQL "2" foireuse.
Il fait toujors vérifier le retour mysql_query.
L'extension mysql est déprécié et sera supprimée dans une prochaine version de php il est préférable d'utiliser l'extension mysqli (comme dans mon exemple).

D'ailleurs il semble que j'ai oublié un point dans mon exemple (dans le while).

@+