IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

[PHP v5.6.21] Comment créer le fichier résultat avec le même nom que celui du script php mais en .txt ?


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut [PHP v5.6.21] Comment créer le fichier résultat avec le même nom que celui du script php mais en .txt ?
    Bonjour,

    J'ai un hébergement mutualisé chez Ovh.
    J'ai récupéré et installé dans ./www/test/ un script dénommé projet.php

    Lorsque je l’exécute à partir d'un programme écrit en w-langage, je lui passe 2 paramètres dans la ligne de commande.
    Lorsque le script est exécuté sur le serveur ovh, il crée dans le même dossier 'test' un fichier de même nom mais avec l’extension .txt
    A chaque appel, le contenu du fichier s'enrichie d'une nouvelle ligne qui contient une DateHeure, le contenu du paramètre 1 et le contenu du paramètre 2 le tout séparé par une barre "|"
    Si le fichier n'existe pas il est créé lors du premier appel.

    Je ne connais rien au php, mais ce script m'est fort utile.
    J'aimerai l'améliorer pour que le fichier texte créé par ce dernier porte automatiquement le même nom que celui du script php mais avec l’extension .txt
    Actuellement le nom du fichier texte est écrit en dur dans le script et je suis obligé de le modifier à la main pour chaque nouveau projet que j'installe sur le serveur.

    Après de longues recherches, j'ai trouvé une fonction qui renvoi le nom du script : $_SERVER['PHP_SELF'] mais ça renvoi le nom et son extension donc c'est pas bon.
    De toute façon, je ne sais pas comment modifier ce script pour atteindre mon objectif...
    Je remercie d'avance l'âme charitable qui voudra bien me consacrer de son temps pour me donner la solution.

    Voici mon code d'appel en w-langage

    sMonPhp est une chaîne

    // Construction de la chaîne à passer à la requête avec ses deux paramètres
    sMonPhp = "http://nom_du_domaine/test/projet.php"+"?val1="+param1+"&val2="+param2

    SI HTTPRequête(sMonPhp) = Vrai ALORS info("La requête a été envoyée")

    et voici le code du fichier distant : projet.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <?
     
    if (isset($_GET['val1']))  $val1     = $_GET['val1'] ; else  $val1    = "";
    if (isset($_GET['val2']))  $val2     = $_GET['val2'] ; else  $val2    = "";
     
    $space         = " | ";
    $filename    = 'projet.txt';
    $date          = date("YmdHis");
     
    $file           = file_get_contents($filename);
    $ligne         = $date.$space.$val1.$space.$val2.$space."\n".$file ;
     
    $fp             = fopen($filename, "w");
    fwrite($fp, $ligne);
    fclose($fp);
     
    exit();
     
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu veux dire qu'en fait "projet.php" a un nom différent selon le projet (et donc que tu le renommes dans chaque projet) ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Bonsoir et merci pour votre intervention.

    Oui, je renomme le fichier projet.php avec un nom qui fait référence au logiciel qui va l'appeler. (projet.php est pour l'exemple)
    (cf. la procédure d'appel en w-langage)

    Et en même temps j'écris manuellement ce nom dans le script à la place de 'Projet.txt'
    Ensuite j'envoie le fichier dans un répertoire unique sur le serveur.

    Ainsi chacun de mes logiciels exécuté sur un poste connecté à Internet appel son propre fichier php qui crée à son tour le fichier texte du même nom avec une première ligne de paramètres à l’intérieur.
    Selon le cas, mes logiciels appellent si besoin leurs fichiers php respectifs qui ajoutent une nouvelle ligne de paramètres dans leurs fichiers texte respectifs etc..

    La modif que j'aimerais apporter m'éviterais simplement d'ouvrir à chaque fois le fichier php (que je renomme) pour y mettre en dur le nom que j'attribue à ce même fichier php avant de le copier sur le serveur.
    En clair le fichier dans le code serait relatif et non absolu.
    Ainsi si je place dans le répertoire /test/ du serveur par exemple 3 fichiers ayant pour nom aaa.php, bbb.php, ccc.php, lors de leur exécution, ils créeront automatiquement leur fichier texte respectif : aaa.txt, bbb.txt, ccc.txt

    J’espère n'avoir pas été trop confus dans mes explications...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca serait plus efficace d'avoir un fichier de configuration qui contient, entre autres, le nom du projet.
    Ca t'éviterait de renommer projet.php et ça regle aussi le problème du nom du fichier .txt
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Houla, je ne m'attendais pas à avoir une réponse aussi vite !

    Je dois vous prévenir, je suis une bille en php...
    Je dois avouer que je ne comprends pas bien l'utilité du fichier de configuration...
    En quoi il serait écrit ? php? txt ?
    Et surtout son fonctionnement ?
    J'ai déjà du mal à comprendre le petit bout de code en php que j'ai récupéré alors vous comprenez-moi...

    Personnellement, je serai déjà bien content si ce que je demande est faisable !

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu ne veux pas trop modifier, tu peux faire simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $filename = str_replace('.php', '.txt', $_SERVER['PHP_SELF']);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    bonjour Sabotage,

    Merci pour votre intervention et la solution proposée.
    J'ai donc remplacé l'ancienne ligne équivalente et fait un test en ayant supprimé sur le serveur le fichier projet.txt qui m'a servit à tester l'ancien code.

    Malheureusement avec le nouveau code aucun fichier texte n'est créé... (constaté avec FileZilla)
    Et le pire c'est que si je demande un aperçu du contenu de projet.txt dans un champ HTML dans mon logiciel avec une ligne en w-langage comme celle-ci :

    champhtml = "http://nom_de_domaine/test/projet.txt"

    Le champ affiche le contenu de l'ancien fichier projet.txt que j'ai supprimé !
    c'est comme s'il était resté en cache quelque part... alors que physiquement il n'est plus sur le serveur !
    Mais bon ça c'est une autre histoire qui doit être liée à mon w-langage...

    Je vous soumets le code que j'ai modifié pour voir si je n'ai pas fais une boulette;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?
     
    if (isset($_GET['val1']))  $val1     = $_GET['val1'] ; else  $val1    = "";
    if (isset($_GET['val2']))  $val2     = $_GET['val2'] ; else  $val2    = "";
     
    $space         = " | ";
    $filename = str_replace('.php', '.txt', $_SERVER['PHP_SELF']);
    $date         = date("YmdHis");
     
    $file         = file_get_contents($filename);
    $ligne        = $date.$space.$val1.$space.$val2.$space."\n".$file ;
     
    $fp             = fopen($filename, "w");
    fwrite($fp, $ligne);
    fclose($fp);
     
    exit();
     
    ?>

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    ah oui pardon, il faut utiliser basename pour n'avoir que le nom du fichier.
    Avec des simplifications cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $val1 = isset($_GET['val1']) ?  $val1 : '';
    $val2 = isset($_GET['val2']) ?  $val2 : '';
    $space = " | ";
    $filename = str_replace('.php', '.txt', basename($_SERVER['PHP_SELF']));
    $date = date("YmdHis");
     
    $file = file_get_contents($filename);
    file_put_contents($filename, $date.$space.$val1.$space.$val2.$space."\n" . $file);
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Je viens de tester en recréant le fichier php avec votre tout code.

    J'ai une bonne et une mauvaise nouvelle;

    La bonne c'est que ça crée bien le fichier et ça écrit bien dedans.
    La mauvaise c'est que ça n'écrit que la dateHeure et les séparateurs, mais pas les paramètres passées à la requête.
    J'ai remarqué aussi que vous ne fermez pas le fichier, c'est normal ?

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je me suis trompé au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $val1 = isset($_GET['val1']) ?  $_GET['val1'] : '';
    $val2 = isset($_GET['val2']) ?  $_GET['val2'] : '';
    Je n'utilise plus fopen donc je n'ai plus besoin de fclose.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Hourra ! ça marche !

    vu le nombre de msg que vous avez posté pour aider les gens en difficulté, ce n'est pas "Sabotage" que vous auriez du prendre comme pseudo mais "Dépannage"

    Je me pose aussi une question sur la casse des fichiers et des répertoires sur le serveur :

    Hormis les caractères interdits en php, puis-je utiliser comme nom de répertoire destination des majuscules et des minuscules et comme séparateur le tiret (-) ou le trait bas (_) ?
    Par exemple au lieu de 'test' mettre 'Mon_Test' sans que ça pose de problème de compatibilité...

    Idem dans le nom du fichier.php qui du coup va créé le même en .txt ?
    Par exemple au lieu de 'projet.php' mettre 'Mon_Projet-1.php' sans que ça pose là aussi des problèmes de compatibilité ?

    Bien sûr il faudra que je respecte la même casse dans mon code d'appel.

    Merci pour cette précision.

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il n'y a pas de caractères interdits en PHP.
    Par contre les systèmes de fichiers ont des restrictions. Pour Windows ça sera < > : " / \ | ? *
    Si tu te limites aux lettres, underscore et tiret, tu n'auras pas de soucis.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Bonsoir,

    merci pour ces bons conseils et surtout MERCI pour votre intervention spontanée et bénéfique car elle va bien me facilité la vie.
    Désolé si j'ai pas posté ma demande au bon endroit, je pense que c'aurait dû être dans Langage PHP...
    Je vais donc clôturer cette discussion et vous souhaiter une bonne fin de soirée.
    Bien cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Batch] Renommer le fichier output avec le même nom que le fichier input
    Par torvald dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 07/06/2016, 01h56
  2. Comment créer un fichier XML avec plusieurs boucles
    Par Slyvore dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 24/11/2015, 09h33
  3. Réponses: 2
    Dernier message: 30/09/2009, 16h43
  4. Comment créer un fichier binaire avec ces codes
    Par zslovefr dans le forum C++/CLI
    Réponses: 1
    Dernier message: 02/07/2009, 20h34
  5. Comment créer un fichier Excel avec Delphi ?
    Par nancyvoyer dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 30/11/2007, 20h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo