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

42 messages dans ce sujet

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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);

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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]


		}

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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);

}

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

c'est quoi cette table peel_facture

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

C'est la table peel_commande

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

merci willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

merci willy

Tout a fait.

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping