begin process at 2012 05 30 11:48:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Copie de modele de facture


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Copie de modele de facture

mardi 17 février 2009 à 11:28:23 | Copie de modele de facture

fabian1085

Bonjour,

J ai une fonction ci-dessous qui doit à partir des données passés en parametre lire un fichier modele, modifier les données necessaire et enregistrer ensuite dans un fichier de sortie. Ma fonction marche trés bien, mais le soucis est que je fais un boucle dans laquelle j appele cette fonction, et qd je vais voir le contenu du fichier de sortie une fois ma boucle effectuée, je ne vois que le modele de facture avec les champs modifier du premier passage de ma boucle dans mon fichier et pas les autres. Quelqu'un pourrait il m aider ?

code :
function creerFacture($fact,$client,$intervention)
{
   $nomFichierModele="./modeleFact.rtf";
   $modele=fopen($nomFichierModele,"r");
   if($modele==NULL)
   {
      return -1;
   }
   $sortie="./".date("d-m-Y").".rtf";
   $destination=fopen($sortie,"a+");
   if($destination==NULL)
   {
      return -2;
   }
   //$sortie="./".date("d-m-Y").".rtf";
   $contenu=fread($modele,filesize($nomFichierModele));
   $dateFact=date("d/m/Y");
   $out=str_replace("dateFact",$dateFact,$contenu);
   /**** SUITE DES str_replace ...****/
   fputs($destination,$out);
   fclose($modele);
   fclose($destination);
}

donc cette fonction est appele dans une boucle for, et quand je regarde le resultat, je ne vois que le resultat du premier element de ma boucle et pas la suite.

Merci pour vos reponse 

Fabian 
mardi 17 février 2009 à 22:20:54 | Re : Copie de modele de facture

TychoBrahe

Salut,

Je me permet de réécrire ta fonction en un peu plus simple :

define('TEMPLATE', './modeleFact.rtf');

function        creerFacture($fact, $client, $intervention)
{
  if (($tpl = file_get_contents(TEMPLATE)) === false)
    return -1;
  $dest = './facture_' . $client . date('_d-m-Y') . '.rtf';
  $change = array('dateFact' => date('d-m-Y'),
                  'intervention'    => $intervention,
                  'suite' => 'suite',
                  'toto' => 'titi');
  if (($tpl = file_put_contents($dest, strtr($tpl, $change))) === false)
    return -2;
  return 0;
}

Tu remarquera au passage que j'ai modifié le nom du fichier de sortie, en particulier en y ajoutant le nom du client afin d'éviter que tu n'écrive tout le temps dans la même.
Pour les changements, plutôt que de faire toute une kyrielle de str_replace() on préférera utiliser un seul strtr() avec un tableau. Une bonne chose serais de former le tableau avant l'appel la fonction afin d'éviter de passer trop de paramètres.
Ho, et si le non du template n'est pas destiné a changer autant le mettre en define afin d'écarter définitivement toute modification (une étourderie est vite arrivée, nous sommes tous des humains).

Sinon, est-il possible de voir ta boucle qui appelle ta fonction stp ?
mercredi 18 février 2009 à 19:46:51 | Re : Copie de modele de facture

fabian1085

Le code de ma boucle est assez long, je vais te mettre le principal

for($i=0;$i<=sizeof($monArray);$i++){

//monArray[$i] represante une serie de donnees qui doit etre facturee
/*Batterie de test pour voir si les information sont bonnes*/
....
/*Mise en forme des informations dans des tableau $intervention,$client,$fact*/
....
/*Appel de ma fonction*/
$this->creerFacture($fact, $client, $intervention);
}

Voila. Sinon pour le nom de fichier de sortie, c est justement l'objet de ma question, n'y a-t-il pas moyen de mettre toutes les factures dans le meme fichier afin de ne lancer qu un fichier comprenant tout les factures à l'impression et non pas un fichier par facture ?

Et merci pour ton aide

mercredi 18 février 2009 à 20:11:13 | Re : Copie de modele de facture

TychoBrahe

Réponse acceptée !
Décidément, tu as l'air d'avoir fait du C avant avant de découvrir php ^^ Une petite astuce : en php on peux utiliser foreach() pour parcourir un tableau, c'est bien plus pratique :)
Bref, en effet tu peux plutôt créer le tableau contenant les changements dans ta boucle et le passer en paramètre a ta méthode de création du rtf.
Au passage, si comme je le devine tu n'as pas besoin de différencier une erreur lors de la récupération du template d'une erreur lors de l'écriture du nouveau fichier, autant que ta méthode renvoie true ou false, il y a de vrais booleens en php.

Pour ce qui est de mettre plusieurs factures dans un seul fichier (une facture par page je suppose) c'est tout a fait possible. Je ne connais pas personellement les spécifications du formet rft mais elles sont librement disponibles à l'adresse suivante :
[ Lien ]
Bien entendu tu peux étudier le format rtf en créant des document avec un éditeur wysiwyg puis regardant ce qui a été généré (quoique ça risque d'être dur a lire).


Cette discussion est classée dans : fichier, fonction, boucle, modele, sortie


Répondre à ce message

Sujets en rapport avec ce message

Fonction crypt() pour htpasswd [ par Houzefa ] salut,voilà ya quelques temps j'avais fait un fichier .htpasswd pour mettre un répertoire protégé sur mon site (serveur Apache normal). le mot de pass probleme de boucle for [ par funbidule ] bonjour a tous,j'ai un petit probleme dans un programme:session_start();echo " fichier: $nom_fichier";$extention_autorize="jpg|jpe|gif|bmp|pdf|php";$p Création d'un fichier de fonction [ par Orcus ] Est-ce que l'on peut créer un fichier contenant des fonctions PHP régulièrement appelé, comme en C. Quand je crée ce fichier et que je l'inclus avec i Upload de fichier [ par whiteknight ] Bonjour,j'ai un problème avec la fonction suivante, elle marche correctement mais ne detecte pas tous les type de fichiers.Elle marche que pour le pre pb fonction fopen ??? [ par spike03 ] Salut,j'ai un pb avec la fonction fopen...je travail sur un serveur apache distant, et je veux créer un fichier txt sur ma machine localealors je fais pb avec ma classe [ par windu ] voila, j'utilise 1 classe de connexion (MySQL), classe que j'appelle dasn mon fichier de connexion à la base. tout va bien il me suffit d'inclure ce f Executer le contenu d'une variable [ par ilvec ] Bonjour à tous,tout d'abord, merci de lire (et peut-être de répondre) ma questionVoici mon problème : dans un fichier, j'ai tout plusieurs lignes cont Fonction fopen ? [ par porciner ] Bonjour je voudrais simplement savoir si la fonction fopen utilise beaucoup de ressource ?Si a chaque fois qu'on actualise une page sur mon site ça fa éviter duplicaté dans écriture fichier [ par pyranhaz ] Salut,J'utilise un base MySQL dans lequel j'envoi dans un fichierUsername:password$req = mysql_query("SELECT count(*) from Prestige_Etape_2 ORDER BY L préchargement d'images [ par putch ] voial j'ai un souci avec une fonction que je souhaite réaliser.Celle-ci doit précharger dans le navigateur toutes les images d'un répertoire.function


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales