Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/02/2020, à 18:17

Nuliel

[Résolu] fonction file en php

Bonjour,
Je suis en train de m'entraîner sur php.
Je ne comprends pas pourquoi la fonction file qui récupère le contenu d'un fichier ne fonctionne pas dans mon cas.
Voici le code fonctionnel:

Le fichier functions.php

<?php 
function lecture() {
    if (!file_exists('compteur.txt')) 
    {
        return "Fichier introuvable";
    };
    $monfichier = fopen('compteur.txt','r');
    $nb = fgets($monfichier);
    fclose($monfichier);
    return $nb;
};

function increment() {
    $nb = lecture();
    if ($nb === "Fichier introuvable") {
        $nb = "0";
    };
    $monfichier = fopen('compteur.txt','w');
    $a = (int)$nb + 1;
    fwrite($monfichier, $a);
    fclose($monfichier);


};

?>

Le fichier index.php

<?php require 'functions.php' ?>

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>

<h1>Compteur de vues</h1>
<p>Cette page compte le nombre de vues</p>
<?= lecture()?>

</body>
<?php increment()?>
</html> 

Le fichier compteur.txt contient le nombre de fois où la page index.php a été chargée.

Là ça fonctionne vu que j'ai utilisé fgets à la place de file dans la fonction lecture() mais pourquoi avec file cela ne fonctionne pas?
A la base j'avais fait ça

function lecture() {
    if (!file_exists('compteur.txt')) 
    {
        return "Fichier introuvable";
    };
    $monfichier = fopen('compteur.txt','r');
    $nb = file($monfichier);
    fclose($monfichier);
    return $nb[0];
};

mais cela ne fonctionne pas.
Des idées?

Et si vous avez des conseils pour que le code que j'ai produit soit plus propre/lisible... n'hésitez pas wink

Merci

Dernière modification par Nuliel (Le 17/02/2020, à 20:58)

Hors ligne

#2 Le 17/02/2020, à 19:20

nany

Re : [Résolu] fonction file en php

Bonjour,

Naziel a écrit :
function lecture() {
    if (!file_exists('compteur.txt')) 
    {
        return "Fichier introuvable";
    };
    $monfichier = fopen('compteur.txt','r');
    $nb = file($monfichier);
    fclose($monfichier);
    return $nb[0];
};
function lecture() {
    if (!file_exists('compteur.txt')) 
    {
        return "Fichier introuvable";
    };
    $nb = file_get_contents('compteur.txt');
    return $nb;
};

file retourne un tableau.
file_get_contents retourne du texte.
fopen crée une ressource.

Dernière modification par nany (Le 17/02/2020, à 19:21)

Hors ligne

#3 Le 17/02/2020, à 20:46

Nuliel

Re : [Résolu] fonction file en php

nany a écrit :

file retourne un tableau.
file_get_contents retourne du texte.
fopen crée une ressource.

Oui mais
- en utilisant file, j'avais mis return $nb[0] donc normalement je devais récupérer le nombre
- avec file_get_contents je n'ai pas non plus de résultat

Hors ligne

#4 Le 17/02/2020, à 20:52

nany

Re : [Résolu] fonction file en php

    $monfichier = fopen('compteur.txt','r');
    $nb = file($monfichier);

$monfichier est une ressource, file ne peut ouvrir un fichier à partir d’une ressource.

Hors ligne

#5 Le 17/02/2020, à 20:57

Nuliel

Re : [Résolu] fonction file en php

Ah j'avais pas compris, ça fonctionne avec file maintenant aussi.
Merci beaucoup! Et c'est bien plus court!

Dernière modification par Nuliel (Le 17/02/2020, à 20:57)

Hors ligne