placement d'un fichier dans un repertoire X ou Y avec fopen / php
Hors ligneKefren Le 18/04/2008 à 17:42 Profil de Kefren Configuration de Kefren

Voila je crée un fichier automatiquement lorsque que le client fais une commande grâce à :


<?php
$connexion 
mysql_connect($serv_bdd$user_bdd$mdp_bdd)
or die (
"Erreur lors de la connexion.<br />\nMySQL a retourné : "mysql_error());

mysql_select_db($nom_bdd$connexion)
or die (
"Erreur lors de la connexion.<br />\nMySQL a retourné : "mysql_error());

$txt_file "com_".$numcom.".txt";

$create_txt fopen($txt_file,"w");
     
$req
'SELECT * FROM commande_clt WHERE num_com = '.$numcom;

$select mysql_query($req,$connexion);

while(
$com=mysql_fetch_array($select,MYSQL_ASSOC))
{
     fwrite($create_txt,($com['num_com']."|".$com['code_clt']."|".$com['reference_art']."|".$com['designation']."|".$com['qte_art']."|".$com['puht']."|".$com['tauxtvaprod']."|".$com['unite_vente']."|".$com['pxtotprodht']."|".$com['pxtotpanierht']."|".$com['cumultva1']."|".$com['cumultva2']."|".$com['prix_cout_transport']."|".$com['prix_tot_com_ttc']."|".$com['date_com']."\r\n"));
}

fclose ($create_txt);     

mysql_close
();
?>


Est-il possible de placer ce fichier dans un repertoire particulier lors de sa création ?
--
Si les poules traversent juste devant les voitures ... c'est pour aller de l'autre coté de la route !!!
Hors ligneDarko91 Le 18/04/2008 à 17:54 Profil de Darko91 Configuration de Darko91

I'M BACK !!!




Normalement, oui

tu l'enregistre format .txt


--
Boire ou conduire, il faut choisir ! Moi je suis courageux je fais les deux est ton ami
Hors ligneAnthony Le 18/04/2008 à 18:20 Profil de Anthony Configuration de Anthony

Admin
Bah oui dans la variable du nom du fichier, tu mets un répertoire et ça ira se sauvegarder dans ce répertoire ;)

Sinon attention à la variable $numcom car à mon avis elle n'est pas sécurisée. Attention si c'est une variable provenant d'url tu dois utiliser $_GET['numcom'] et pas $numcom :) et vérifie bien que c'est une variable numérique : ctype_digit()
--

Hors ligneKefren Le 18/04/2008 à 18:35 Profil de Kefren Configuration de Kefren

En fait j'ai déjà essayé de mettre dans mon nom de fichier le répertoire :



$txt_file = "/nom_du_dossier/com_".$numcom.".txt";


Mais ça n'avait pas fonctionner... c'est pour ca que je suis venu ici ;)

En ce qui concerne ma variable $numcom, je recupere la valeur sur la meme page comme ce-ci :



$com1 = mysql_query("SELECT max(num_com) FROM commande_clt");

$numcom = mysql_result($com1, 0, 0) + 1;


Darko91 a écrit :

Normalement, oui

tu l'enregistre format .txt


Je ne vois pas le rapport entre l'emplacement et le format du fichier o_O

En plus si tu avais lu tu aurais vu qu'il était déjà enregistré au format .txt et puis un fichier est un fichier sous n'importe quel format, ça reste un fichier donc déplaçable ?!?
--
Si les poules traversent juste devant les voitures ... c'est pour aller de l'autre coté de la route !!!
Hors ligneAnthony Le 18/04/2008 à 18:52 Profil de Anthony Configuration de Anthony

Admin
Ah oui il faut que ton dossier existe pour pouvoir enregistrer le fichier dedans :) Donc si tu fais fopen('dqsfdsqdsfdsfdsf/machin.jpg', 'w') ça marchera pas, il faudra faire un mkdir('dqsfdsqdsfdsfdsf') avant :)

Sinon pour ce qui est de la variable, le mysql_result est totalement dépassé, mais tu peux simplifier ta requête au lieu d'en faire deux :

$req= 'SELECT num_com,code_clt, etc ... (pas de SELECT * c'est pas bien) FROM commande_clt WHERE num_com = SELECT MAX(num_com) FROM commande_clt';

N'oublie pas un index sur le champ commande_clt dans la structure de la table :)
--

Hors ligneKefren Le 18/04/2008 à 19:19 Profil de Kefren Configuration de Kefren

Ben j'utilise un mysql_result car la requete me renvoi qu'un seul résultat, et si j'en fais deux requete c'est que je fais des traitement entre les deux ;)

D'abord je récupère le numéro de la dernière commande enregistrée puis j'ajoute 1 pour y enregistrer celle qui est validée puis je garde le numéro de la commande qui viens d'être enregistrer pour faire mon selct * pour créer un fichier contenant toues les lignes concernant ma commande ...

Alors mon cher Anthony mes dossiers existent !! Je les ai créés avant de changer le nom du fichier (cad avant de rajouter le nom du dossier dans le fichier) et j'ai testé ça avant de venir te déranger ;)
--
Si les poules traversent juste devant les voitures ... c'est pour aller de l'autre coté de la route !!!
Hors ligneAnthony Le 19/04/2008 à 12:09 Profil de Anthony Configuration de Anthony

Admin
Essaie de faire un chmod('dossier', 0777); avant d'enregistrer le fichier :)
--

Hors ligneKefren Le 20/04/2008 à 23:25 Profil de Kefren Configuration de Kefren

nikel merci Antho encore une fois
--
Si les poules traversent juste devant les voitures ... c'est pour aller de l'autre coté de la route !!!
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels