Sign in to follow this  
Followers 0

Creation d'un fichier csv lors de la validation de la commande

42 posts in this topic

Posted · Report post

Etant developpeur debutant en php (j'ai juste vu coment faire apparaitre l'heure en dinamyque...) il me faudrait créer une fonction qui crée un fichier csv lors de la validation de la commande (validation du paiment) avec des renseignement deja isolé lors de l'affichage de la facture

ex :

' n°_facture;ref_client;nom_client;ref_produit;designation_produit;qté_produit;pri

x_UHT_produit;

prix_total_produit(qte*prix_uht);cout_transport;adressse_livraison;cp_livraison;

ville_livraison '

et cette ligne doit etre reppettee pour chaque produits figurant dans la facture

Julien

Share this post


: post
Share on other sites

Posted · Report post

oui vous m'aviez donnez des elements concernant les divers commande et variables utilisables mais le probleme reste entier... mon niveau est pitoyable en php... :/

Mais est ce qu'il serait possible de recuperer des valeurs de variables de la meme page ou d'une page precedante pour créer ce fichier cvs, et comment les recuperee ?

Julien

Share this post


: post
Share on other sites

Posted · Report post

J'ai commencer la fonction :

function facture_csv()

{

$csv_file = $fact."_".$num_facture; // il me fodrait, ici, recuperer le numero de la facture

$create_csv = fopen($csv_file,"w");

fwrite($create_csv,"composant de maligne cité ci dessus");

| ( et ici, recuperer les infos concernant la facture

|

| qui sont affichees dans la page : " achat_maintenant.php "

|

| avant la validation de la commande )

fclose $create_csv);

Share this post


: post
Share on other sites

Posted · Report post

Voila une piste:

function facture_csv($num_facture){

	global $wwwroot;


	$csv_file = $fact."_".$num_facture .".csv"; // la tu appeleras ta fonction comme ceci "facture_csv($num_facture);" en remplacant $num_facture par ton n° de facture


	$create_csv = fopen($csv_file,"w");


	fwrite($create_csv,"composant de ma ligne cité ci dessus");


	// ( et ici, recuperer les infos concernant la facture 


	// qui sont affichees dans la page : " achat_maintenant.php " 


	// avant la validation de la commande ) 


	--> là tu colles ta requete sql qui ramenne tes informations de ta facture et de tes produits s'il faut

	$select = "select ... from peel_... WHERE pc... ORDER BY ...";


	$req = mysql_query($select) or die ('Une erreur de connexion à la base s est produite ' . __LINE__ . '.<p>' . mysql_error());


	while($prod = mysql_fetch_array($req))

		{


			fwrite($create_csv,...); //là tu mets toutes les infos que tu veux en provenance de ta requete SQL, genre $prod['nom'] ou $prod[id]


		}


	fclose ($create_csv); 

}

Developpe teste et dis nous si tu as des soucis.

Willy

Share this post


: post
Share on other sites

Posted · Report post

merci beaucoup

j'ai un dernier soucis en ce qui conserne "l'encadrement des valeurs" :

dans l'ecriture de mon fichier csv j'ai :

fwrite($create_csv,.$com[id]|$com["id_utilisateur"]|.$com["email"]|.$com["id_trans"]|.$com["client_info1"]|.$com["client_info2"]|.$com["motant"]|.$com["total_produit"]|.$com["cout_transport"]|.$com["total_tva"]"\r\n");

et quand je valide ma commande la page qui s'affiche me renvoi ca :

Parse error: parse error, unexpected '.' in /homepages/11/d131874726/htdocs/test/Peel/achat/fin_commande.php on line 71

(la ligne 71 c'est la ligne de code que j'ai coller au-dessus

julien

Share this post


: post
Share on other sites

Posted · Report post

meme messaged'erreur avec :

fwrite($create_csv,.$com['id']|$com['id_utilisateur']|.$com['email']|.$com['id_trans']|.$com['client_info1']|.$com['client_info2']|.$com['motant']|.$com['total_produit']|.$com['cout_transport']|.$com['total_tva']"\r\n");

et avec :

fwrite($create_csv,$com['id']|$com['id_utilisateur']|$com['email']|$com['id_trans']|$com['client_info1']|$com['client_info2']|$com['motant']|$com['total_produit']|$com['cout_transport']|$com['total_tva']"\r\n");

Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /homepages/11/d131874726/htdocs/test/Peel/achat/fin_commande.php on line 71

Share this post


: post
Share on other sites

Posted · Report post

Il existe déjà des fichiers csv sur PREMIUM pourquoi ne pas s'inspirer ditrectement de ces derniers ? faudrait simplement remplacer changer les champs

Share this post


: post
Share on other sites

Posted · Report post

Il existe déjà des fichiers csv sur PREMIUM pourquoi ne pas s'inspirer ditrectement de ces derniers ? faudrait simplement remplacer changer les champs

C'est ce qu'il fait.

Share this post


: post
Share on other sites

Posted · Report post

oups ! je retire... il est vrai que j'ai survolé le sujet

Share this post


: post
Share on other sites

Posted · Report post

fwrite($create_csv,$com['id']|$com['id_utilisateur']|$com['email']|$com['id_trans']|$com['client_info1']|$com['client_info2']|$com['motant']|$com['total_produit']|$com['cout_transport']|$com['total_tva']"\r\n");

Un petit cours de php :rolleyes:

Le . sert a concatener 2 chaines de caractère.

Ton $com['id'] en est une.

Le "|" en est une aussi, mais uniquement si tu l'entoures de double quote, signe d'une chaine de caractère.

Pour concatener ces 2 chaines, tu dois faire $com['id'] ."|"

Donc pour ton soucis test avec:

fwrite($create_csv,$com['id']. " | " .$com['id_utilisateur'] ." | " .$com['email'] ." | " .$com['id_trans'] ." | " .$com['client_info1'] ." | " .$com['client_info2'] ." | " .$com['motant'] ." | " .$com['total_produit'] ." | " .$com['cout_transport'] ." | " .$com['total_tva'] ."\r\n");

Ici on supprose que tout ce que tu appels avec $com est bien issus de ta requete SQL qui dois se trouver au dessus...

Willy

Share this post


: post
Share on other sites

Posted · Report post

oups ! je retire... il est vrai que j'ai survolé le sujet

Aucun soucis paulanna :D

J'avais bien vu et c'es normal, on ne peut pas êter partout.

Willy

PS: je sens que la prochaine question va etre comment faire la bonne requete SQL :rolleyes: :P

Share this post


: post
Share on other sites

Posted · Report post

pour la bonne requete sql je connai les info ke je doi y mettre ette que je pioche dans la table peel_commandes donc apres je me sert du nom des champs

en se qui conserne cette fameuse ligne d'ecriture dans le csv

fwrite($create_csv,fwrite($create_csv,$com['id']. " | " .$com['id_utilisateur'] ." | " .$com['email'] ." | " .$com['id_trans'] ." | " .$com['client_info1'] ." | " .$com['client_info2'] ." | " .$com['motant'] ." | " .$com['total_produit'] ." | " .$com['cout_transport'] ." | " .$com['total_tva'] ."\r\n");
une erreur est toujours la : Parse error: parse error, unexpected ';' in /homepages/11/d131874726/htdocs/test/Peel/achat/fin_commande.php on line 71 j'en profite pour te faire un copier/coller de la boucle :
	while($com = mysql_fetch_array($req))

		{


			fwrite($create_csv,fwrite($create_csv,$com['id']. " | " .$com['id_utilisateur'] ." | " .$com['email'] ." | " .$com['id_trans'] ." | " .$com['client_info1'] ." | " .$com['client_info2'] ." | " .$com['motant'] ." | " .$com['total_produit'] ." | " .$com['cout_transport'] ." | " .$com['total_tva'] ."\r\n"); //là tu mets toutes les infos que tu veux en provenance de ta requete SQL, genre $prod['nom'] ou $prod[id]


		}

Julien

Share this post


: post
Share on other sites

Posted · Report post

autant pour moi, jpense qu'il va faloir que j'aille dormir :/

j'ai bien lesinformation que je souhaite le seul probleme c'est que pour la facture n°x ca va m'afficher x fois la meme ligne et je voudrai juste que ca me fasse autant de ligne que de produits presents dans la facture

je reisere la boucle 'tant que' :

	while($com = mysql_fetch_array($req))

		{


			fwrite($create_csv,$com['id']. " | " .$com['id_utilisateur'] ." | " .$com['email'] ." | " .$com['id_trans'] ." | " .$com['client_info1'] ." | " .$com['client_info2'] ." | " .$com['motant'] ." | " .$com['total_produit'] ." | " .$com['cout_transport'] ." | " .$com['total_tva'] ."\r\n"); //là tu mets toutes les infos que tu veux en provenance de ta requete SQL, genre $prod['nom'] ou $prod[id]


		}

Share this post


: post
Share on other sites

Posted · Report post

Le soucis c'est que sans la requete sql, on ne peut rien faire.

Willy

Share this post


: post
Share on other sites

Posted · Report post

enfin je peux juste choisir ce que je decide d'afficher ou pas non ?

Mais le probleme ne vien pas de la requete mais de la boucle " while "

julien

Share this post


: post
Share on other sites

Posted · Report post

enfin je peux juste choisir ce que je decide d'afficher ou pas non ?

Mais le probleme ne vien pas de la requete mais de la boucle " while "

julien

Non, si tu ramennes X fois la même ligne dans ta requete SQL le while ne fera qu'affiché ces X fois également.

Willy

Share this post


: post
Share on other sites

Posted · Report post

je te fai un copier coller de la fonction complete au moins tu aura tout sous les yeux :rolleyes:

function facture_csv($commandeid){

	global $wwwroot;


	$csv_file = "fact_".$commandeid.".csv"; // la tu appeleras ta fonction comme ceci "facture_csv($num_facture);" en remplacant $num_facture par ton n° de facture


	$create_csv = fopen($csv_file,"w");


	fwrite($create_csv,"fact".$commandeid."\r\n");


	$select = "SELECT * FROM `peel_commandes` WHERE 1";


	$req = mysql_query($select) or die ('Une erreur de connexion à la base s est produite ' . __LINE__ . '.<p>' . mysql_error());


	while($com = mysql_fetch_array($req))

		{


			fwrite($create_csv,$com['id']. " | " .$com['id_utilisateur'] ." | " .$com['email'] ." | " .$com['id_trans'] ." | " .$com['client_info1'] ." | " .$com['client_info2'] ." | " .$com['motant'] ." | " .$com['total_produit'] ." | " .$com['cout_transport'] ." | " .$com['total_tva'] ."\r\n"); //là tu mets toutes les infos que tu veux en provenance de ta requete SQL, genre $prod['nom'] ou $prod[id]


		}


	fclose ($create_csv);

}

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

déja avec ta requete tu ramenneras TOUTES les commandes de ta table peel_commandes, c'est ce que tu veux ?

	$select = "SELECT * FROM `peel_commandes` WHERE 1";
Si tu veux seulement ta commande $commandeid il faut que tu l'ajoutes dans le filtre de ta requète SQL.
	$select = "SELECT * FROM `peel_commandes` WHERE id=" .$commandeid;
Dans ton remplissage du fichier, tu écris:
fwrite($create_csv,$com['id']. " | " .$com['id_utilisateur'] ." | " .$com['email'] ." | " .$com['id_trans'] ." | " .$com['client_info1'] ." | " .$com['client_info2'] ." | " .$com['motant'] ." | " .$com['total_produit'] ." | " .$com['cout_transport'] ." | " .$com['total_tva'] ."\r\n");

Pour moi, il y a des erreurs sur:

$com['motant'] --> $com['montant']

Sinon je pense que ta requète SQL en ramenne pas les informations que tu souhaites.

Tu connais le SQL ou pas ?

Si oui, dans la table peel_commandes, tu as uniquement les entetes de commandes, c'est à dire les informations sur la livraison, le prix total, etc..., mais pas sur les articles qu'il y a dedans.

Pour commaitre les articles qui sont dans cette commande il faut que tu fasses une jointure entre la table peel_commandes et peel_commandes_articles sur peel_commandes.id = peel_commandes_articles.commande_id.

Ensuite dans la table peel_commandes_articles, tu auras des informations sur l'article, le prix, la quantité commandées, etc...

Mais si tu veux le nom par exemple ou la catégorie de l'article il faudra que tu fasses une jointure entre la table peel_commandes_articles et la table peel_articles.

Voila, bon dev',

Willy

Share this post


: post
Share on other sites

Posted · Report post

ok merci encore et encore

Pour la requete je devrai y arriver (quand meme) par contre lorsque que l'on ecrit dans le csv :

fwrite($create_csv,$com['id'] (pour 'instant je n'ai qu'une seule table)

mais si je ve " id " de peel_facture et de peel_produit comment vais-je ecrire le " $com[id] " ?

julien

Share this post


: post
Share on other sites

Posted · Report post

c'est quoi cette table peel_facture

Share this post


: post
Share on other sites

Posted · Report post

C'est la table peel_commande

Share this post


: post
Share on other sites

Posted · Report post

ok merci encore et encore

Pour la requete je devrai y arriver (quand meme) par contre lorsque que l'on ecrit dans le csv :

fwrite($create_csv,$com['id'] (pour 'instant je n'ai qu'une seule table)

mais si je ve " id " de peel_facture et de peel_produit comment vais-je ecrire le " $com[id] " ?

julien

A ce moment là tu fais un truc du genre:

$select = "SELECT c.id as id_commande, pc.id as articke_id, ... FROM peel_commandes c, peel_commandes_articles pc WHERE ...;

Et tu appels $com['id_commande']

Willy

Share this post


: post
Share on other sites

Posted · Report post

ok dons je leur donne des alias et ensuite je rappelle les alias

merci willy

Share this post


: post
Share on other sites

Posted · Report post

ok dons je leur donne des alias et ensuite je rappelle les alias

merci willy

Tout a fait.

Willy

Share this post


: post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

Twitter Advisto ecommerce

Facebook PEEL Shopping