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

Langage PHP Discussion :

[Système] création d'un .txt


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 16
    Points
    16
    Par défaut [Système] création d'un .txt
    Bonjour,
    je veux récupérer les enregistrements de ma BDD MySql et les enregistrer dans en local (sur mon lecteur z: )dans un fichier txt.

    Mais voilà, j'ai un BUG!
    Warning: fopen(z:/participant.txt) [function.fopen]: failed to open stream: No such file or directory in /home/montagna/public_html/_CYCLO_bdd-txt.php on line 16

    Ci joint mon code, en espérant que vous y trouverez ce qui cloche

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?php
    //////////////////////////////////////////////////////////////////////////////////////////////////
    //                      LECTURE DANS LA BASE DE DONNEES                                         //
    //////////////////////////////////////////////////////////////////////////////////////////////////
    include("connexion.inc");
    mysql_connect("$host","$user","$password");
    mysql_select_db($database);
     
    if(file_exists("z:/participant.txt"))
       {
    unlink("z:/participant.txt");
    $fichiertxt=fopen("z:/participant.txt","a");
       }
    else
       {
    $fichiertxt=fopen("z:/participant.txt","a");
    }
     
    $req="select * from participant";
    $result=mysql_query($req);
    $lignes=mysql_num_rows($result);
     
    $i=0;
    if($lignes==0){
    	echo "<br><br><center>Il n'existe aucune inscription pour le moment!</center>";
     
    }else{
    	for ($i=0;$i<$lignes;$i++)
    	{
    	$enr=mysql_fetch_row($result);
     
    	fputs($fichiertxt,$enr[0]."#".$enr[1]."#".$enr[2]."#".$enr[3]."#".$enr[4]."#".$enr[5]."#".$enr[6]."#".$enr[7]."#".$enr[8]."#".$enr[9]."#".$enr[10]."#".$enr[11]."#".$enr[12]."#".$enr[13]."#".$enr[14]."#".$enr[15]."\r\n");
     
    	}
    	fclose($fichiertxt);
    	mysql_close();
    }
    ?>


    Merci de votre aide...

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    euhh il me semble pas que tu puisse ecrire en php sur un lecteur distant ...

    tu peux ecrire a partir de la racine de ton serveur uniquement !

    A verifier mais je pense que l erreur vient surtout de la !

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    En fait, sur mon site (www.montagnac-ac.com), j'ai réalisé un compteur de visite à base d'un fichier txt qui est incrémenté de 1 à chaque passage sur la page index.php. Ce fichier txt est sur le serveur où est hébergé mon site.

    En fait, là, c'est un peu l'inverse que je veux faire:
    Je veux récupérer les données d'une table de ma base de données et les écrire EN LOCAL sur ma clé USB (et non pas sur le serveur distant qui est mon hébergeur).

    Quand j'essaie de faire fonctionner mon script (ci dessus) en LOCALHOST, j'arrive très bien à récupérer les données de ma BDD et de les écrire dans le fichier "participant.txt" sur ma clé USB.
    Mais quand je veux faire fonctionner ce script sur le serveur distant (donc chez mon hébergeur) pour récupérer les vrais données (et non pas les données bidons que j'ai sur mon localhost), et bien... march'pas!!!

    Sais tu du cela peut venir?

    Merci.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Salut,

    l'erreur dit qu'il ne trouve pas le fichier, donc le chemin que tu utilises n'est pas le bon..

    Tu dois utiliser les chemins relatifs; si ton fichier est dans le même répertoire que ton script:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $fichiertxt=fopen("participant.txt","a");

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Pardon Billoum, mais j'ai pas tout compris ce que tu entends dans chemin relatif...

    Ceci dit, si le fichier n'est pas trouvé, je demande justement à ce qu'il soit créé, et s'il existe, je fait un unlink pour le supprimer et ainsi le recréer vierge.

    En plus, mon script est exécuté chez mon hébergeur (hosteur.fr), et mon fichier participant.txt, je veux le créer sur mon PC...

    Peut être que c'est impossible, mais je ne voit pas pourquoi l'hébergeur empêcherait de faire ça car ça ne met pas en péril la sécurité de leur serveur!


  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Il n'y a aucun problème à télécharger un fichier sur le poste client.

    Les fonctions fopen, fwrite, ... attendent en paramètre un fichier se trouvant sur le serveur, pas sur ton pc. Donc pour l'instant tu ne fais que créer et remplir un fichier sur le serveur, tu dois encore le télécharger.

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Bon, j'ai bien compris que je ne peux pas créer directement mon .txt sur mon PC à partir du site en ligne.
    Donc, je dois créer ce fichier .txt sur mon serveur d'hébergement puis rapatrier le fichier par la méthode que tu m'indiques.

    HIC: C'est que je n'arrive pas à créer le fichier par le code sur mon serveur.
    Voilà l'erreur:
    Warning: fopen(participant.txt) [function.fopen]: failed to open stream: Permission denied in /home/montagna/public_html/_CYCLO_bdd-txt.php on line 11


    Pourtant le code ne me paraît pas faux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(!file_exists("participant.txt"))
       {
    $fichiertxt=fopen("participant.txt","a");
     
       }
    else
       {
    unlink("participant.txt");
    $fichiertxt=fopen("participant.txt","a");
    }

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Apparemment, tu n'as pas les droit pour écrire dans le fichier,..

    Essaie en changeant les droits sur le fichier avant de faire tes tests:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    chmod("./participant.txt", 0755);

    ou sur le dossier courant:

  9. #9
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut lide les messages d'erreur
    Il est nécessaire de prendre le temps de lire les messages. Je sais, ils sont en anglais.

    HIC: C'est que je n'arrive pas à créer le fichier par le code sur mon serveur.
    Voilà l'erreur:
    Warning: fopen(participant.txt) [function.fopen]: failed to open stream: Permission denied in /home/montagna/public_html/_CYCLO_bdd-txt.php on line 11


    Pourtant le code ne me paraît pas faux:
    Permission denied signifie: permission refusée. Donc ton code peut très bien être parfaitement juste, si tu n'as pas les droits d'écriture, tu ne peux pas éxécuter ton script.

  10. #10
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Billoum, je voulais créer mon fichier .txt dynamiquement, mais je vois que ça n'a pas l'air possible.

    Le problème, c'est que ce fichier .txt, je voulais à chaque fois le supprimer puis le recréer car je voulais importer des données d'une BDD qui augmente au fur et à mesure des inscriptions à une épreuve cycliste

    Mais finalement, en modifiant le chmod à 766 (car 755 ça n'a pas fonctionné) et en créant à la main mon fichier .txt sur le serveur, et bien ça fonctionne.

    J'ouvrirai mon fichier avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fopen("participant.txt","r+");
    de manière à ce que le fichier soit écrasé à chaque appel.

    Voilà.

    Merci beaucoup.

  11. #11
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Bon, maintenant, je créé bien mon fichier .txt. Il s'écrase à chaque fois que je fais appel à la fonction fopen().

    Reste à télécharger ce fichier ainsi créé.

    J'utilise bien ce que tu m'as fourni.
    Il me demande bien d'ouvrir ou de télécharger participant.txt

    Je choisi ouvrir : là, il m'ouvre le bloc note, mais il essaie de m'ouvrir le fichier participant[1].txt !
    Du coup, le bloc note est vide !

    Comme se fesse ?

    Voilà mon code...
    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
    21
    22
    23
    24
    25
    26
    $Fichier_a_telecharger="participant.txt";
    $chemin="/";
    switch(strrchr(basename($Fichier_a_telecharger), ".")) {
     
    case ".gz": $type = "application/x-gzip"; break;
    case ".tgz": $type = "application/x-gzip"; break;
    case ".zip": $type = "application/zip"; break;
    case ".pdf": $type = "application/pdf"; break;
    case ".png": $type = "image/png"; break;
    case ".gif": $type = "image/gif"; break;
    case ".jpg": $type = "image/jpeg"; break;
    case ".txt": $type = "text/plain"; break;
    case ".htm": $type = "text/html"; break;
    case ".html": $type = "text/html"; break;
    default: $type = "application/octet-stream"; break;
     
    }
     
    header("Content-disposition: attachment; filename=$Fichier_a_telecharger"); 
    header("Content-Type: application/force-download"); 
    header("Content-Transfer-Encoding: $type\n"); // Surtout ne pas enlever le \n
    header("Content-Length: ".filesize($chemin . $Fichier_a_telecharger)); 
    header("Pragma: no-cache"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); 
    header("Expires: 0"); 
    readfile($chemin . $Fichier_a_telecharger);

  12. #12
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Si je fais télécharger, il me télécharge bien participant.txt, mais il est vide...

  13. #13
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    j'ai fais plusieurs essais avec des .htm, des .pdf... et à chaque fois que je les ai enregistrés sur mon bureau, j'ai transfèré 0 octet !

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Désolé mais là je vois pas vraiment le problème, mais tu peux ptêt essayer comme dans la FAQ de dvloppez..

  15. #15
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    OK, je jetterai un oeil demain.

    Merci pour ton dévouement.

    Fred.

  16. #16
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut autre solution.
    Es-tu sûr que quelque chose est écrit dans le fichier?? Si c'est le cas as-tu essayé par un $_POST en utiliseant la fonction move_uploaded_file() et la superglobale $_FILES[] ?

  17. #17
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    hoaww,
    je dois avouer que le petit développeur de base que je suis ne connais pas toutes les fonctions PHP que tu viens de me citer. Ce qui est sur, c'est que la réponse à ta question est NON.
    Si tu peux me donner juste une explication du fonctionnement de ce que tu me dis, je chercherai à reproduire ça sur ma page.
    Merci à toi.

  18. #18
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut cherche d'abord un peu
    Le rôle dans ce forum n'est pas d'amener le pain tout fait dans la bouche mais d'indiquer des directions à suivre.

    Je te donne une adresse de site magique http://php.net et dans le moteur de recherche du site, saisis les fonctions que tu ne comprends pas. Etudie les et comprends les. Tu en apprendras comme ça beaucoup plus que si je t'amenais la solution toute faite sur un plateau.

    Bon courage à toi et bienvenu dans le monde de la programmation PHP.

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

Discussions similaires

  1. [Système] Création menu dynamique
    Par delma dans le forum Langage
    Réponses: 1
    Dernier message: 20/10/2006, 20h44
  2. [Système] création et réalisation d'un buckup
    Par zana74 dans le forum Langage
    Réponses: 7
    Dernier message: 01/09/2006, 11h46
  3. [Système] Création moteur templates
    Par alexmorel dans le forum Langage
    Réponses: 8
    Dernier message: 14/08/2006, 20h14
  4. Réponses: 7
    Dernier message: 09/05/2006, 17h41
  5. [Système] insérer un document txt
    Par mel02 dans le forum Langage
    Réponses: 2
    Dernier message: 18/10/2005, 22h05

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