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 :

fwrite qui ne fonctionne pas


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Par défaut fwrite qui ne fonctionne pas
    Bonjour,
    Je na comprends pas pourquoi je ne peux enregistrer les modifications d'un fichier text après l'avoir ouvert, utilisé la fonction "ereg_replace", après lecture attentive de divers tuto.
    Mon code PHP :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $fp = fopen("../projetBis.php","r+"); //lecture du fichier
    ]while (!feof($fp)) { //on parcoure toutes les lignes
      $page .= fgets($fp, 4096); // lecture du contenu de la ligne
    }
    echo $page; // pour vérifier la lecture
    // la cahine de remplacement
    $num = '<span class="Text-Balise"><a href="javascript:void(0)" class="tooltip">XXXXX<em>Vous pouvez ...</em></a></span>';
    $page = ereg_replace('Votre expxxx initiale', $num, $page);
    echo $page;   // jusque là tout va bien.
    fputs($fp, $page); // là tout ce gâte... Comment enregistre le nouveau fichier ??
    fclose($fp);

    Des idées ?

    D'avance merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Et vous obtenez ?

    Ayant lu intégralement le fichier, le pointeur doit donc se trouver à sa fin. C'est ainsi, j'imagine, que l'écriture s'effectue à sa fin, à la manière du mode append. Il faudrait repositionner le pointeur au début (fonction fseek) ou alors dissocier les deux opérations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $num = '<span class="Text-Balise"><a href="javascript:void(0)" class="tooltip">XXXXX<em>Vous pouvez ...</em></a></span>';
    $fichier = '../projetBis.php';
    file_put_contents($fichier, str_replace('Votre expxxx initiale', $num, file_get_contents($fichier)));

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Par défaut
    Citation Envoyé par julp Voir le message
    Et vous obtenez ?

    Ayant lu intégralement le fichier, le pointeur doit donc se trouver à sa fin. C'est ainsi, j'imagine, que l'écriture s'effectue à sa fin, à la manière du mode append. Il faudrait repositionner le pointeur au début (fonction fseek) ou alors dissocier les deux opérations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $num = '<span class="Text-Balise"><a href="javascript:void(0)" class="tooltip">XXXXX<em>Vous pouvez ...</em></a></span>';
    $fichier = '../projetBis.php';
    file_put_contents($fichier, str_replace('Votre expxxx initiale', $num, file_get_contents($fichier)));
    Merci pour cette réponse

    Mais je n'ai pas tout compris,
    file_put_contents
    assure également la ré-écriture du fichier ? Sinon quelle fonction peut le faire

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    file_puts_content écrit le fichier (requiert une version 5). file_get_contents le lit.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Par défaut
    Citation Envoyé par julp Voir le message
    file_puts_content écrit le fichier (requiert une version 5). file_get_contents le lit.
    Bonsoir et merci,

    Maintenant j'ai compris.

    Malheureusement quand j'actualise le fichier je me prends en pleine figure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Call to undefined function: file_put_contents() in /mnt/133/sdb/1/...FichierFtp.php on line 24
    et la ligne 24 est justement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file_put_contents($fichier, str_replace('Votre exp.. initiale', $num, file_get_contents($fichier)));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call to undefined function: file_put_contents()
    Kesako ??

    Des solutions ?

    D'avance merci

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Y a encore des gens qui utilisent PHP 4 ?

    Il faut réécrire la fonction file_put_contents ou utiliser un équivalent puisque vous n'en disposez pas. Par exemple cette version simplifiée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function file_put_contents($n, $d) {
        $f = @fopen($n, 'w');
        if ($f === false) {
            return 0;
        } else {
            if (is_array($d)) $d = implode($d);
            $bytes_written = fwrite($f, $d);
            fclose($f);
            return $bytes_written;
        }
    }

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Par défaut
    Citation Envoyé par julp Voir le message
    Y a encore des gens qui utilisent PHP 4 ?

    Il faut réécrire la fonction file_put_contents ou utiliser un équivalent puisque vous n'en disposez pas. Par exemple cette version simplifiée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function file_put_contents($n, $d) {
        $f = @fopen($n, 'w');
        if ($f === false) {
            return 0;
        } else {
            if (is_array($d)) $d = implode($d);
            $bytes_written = fwrite($f, $d);
            fclose($f);
            return $bytes_written;
        }
    }
    Merci pour toutes ces réponses, mais je pensais que Free n'acceptait pas fwrite ?
    Suis-je dans l'erreur ?

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Non, pourquoi l'interdirait-elle ? Par contre c'est au niveau des permissions que ça va être gênant (impossibilité de les changer par chmod).

    Au passage, Free met à votre disposition une version 5 : il suffit de modifier l'extension de votre script en .php5.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Par défaut
    Merci à tous,,
    Ca marche super

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

Discussions similaires

  1. Code qui ne fonctionne pas sur Mac
    Par malbaladejo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/01/2005, 12h08
  2. [SQL] Requête à jointure qui ne fonctionne pas
    Par Bensor dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/12/2004, 17h10
  3. Jointure externe qui ne fonctionne pas
    Par Guizz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/02/2004, 13h26
  4. CREATEFILEMAPPING qui ne fonctionne pas???
    Par Jasmine dans le forum MFC
    Réponses: 2
    Dernier message: 06/01/2004, 20h33
  5. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 11h04

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