Bonjour,

Je suis en pleine création d'un site d'une communauté de jeux et je travail actuellement sur la création d'un panel pour notre serveur de jeux minecraft.

Tout ce passe bien mais je ne trouve plus du tout la technique pour lire et écrire dans un fichier situé sur le serveur (j’accède au fichier en http).
Le but de la lecture est de savoir combien nous avons d'argent en jeux et pouvoir payer (loyer ou autre) directement via le site.
Mon fichier ce présente sous cette forme :

tonne95 balance:2957.0 status:0
1234 balance:3020.0 status:0
oneill balance:3000.0 status:0
popaulnareff balance:3010.0 status:0
thomas balance:2150.0 status:0
adam03100 balance:3506.0 status:0

Ce que j'aimerai récupérer et voir modifier, c'est ce qui ce situe après "balance:" sans avoir "statue:0".
Connaissant le nom du joueur en question via le panel, j'en demande a votre aide pour savoir si vous auriez une solution :)

Merci d'avance
Adam

6 réponses


extrarox
Réponse acceptée

Salut,

Essaye ça :

$fichier = @fopen("CHEMIN+NOMDUFICHIER", "r");
if ($fichier) {
    while (($buffer = fgets($fichier, 4096)) !== false) {
        $colonne = explode(" ", $buffer);
        $valeur = explode(":", $colonne[1]);
        echo $valeur[1];//Ou autre selon ce que tu veux en faire
    }
    if (!feof($fichier)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($fichier);
}

A+

extrarox
Réponse acceptée

En fait le explode ça coupe selon un caractère que tu mets entre guillemet, en gros pour afficher que "1 nom", il faut faire un if.

Juste après le explode de $buffer, tu as dans colonne[0] le nom, dans colonne[1] balance:chiffre et dans colonne[2] status:0

donc si tu fais un if sur colonne[0] et que tu compare à un nom tu affiches, sinon il se passe rien.

Je te laisse deviner le code ;) Faut bien que tu apprennes^^

Salut,

Tu peux utiliser cette fonction pour lire ligne à ligne.
fgets

A+

BlackDev
Auteur

Merci de vos réponses !

J'ai beau essayer, je ne comprend pas le raisonnement pour trouver "2957.0" alors que je connais "tonne95" dans :

tonne95 balance:2957.0 status:0

Merci d'avance

BlackDev
Auteur

Merci pour ce code, il fonctionne bien.
Par contre c'est peut être moi qui n'ai pas compris quelque chose mais comment fait-on pour afficher que la valeur du membre tonne95 par exemple ?

J'ai essayé avec ça mais ça provoque des erreurs php :

<?php
$fichier = @fopen("http://88.173.72.140/accounts.mini", "r");
if ($fichier) {
    while (($buffer = fgets($fichier, 4096)) !== false) {
        $colonne = explode(" ", $buffer);

        $valeur = explode("tonne95 balance:", $colonne[1]);

        echo $valeur[1];//Ou autre selon ce que tu veux en faire
    }
    if (!feof($fichier)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($fichier);
}
?>

Merci encore de votre aide.

BlackDev
Auteur

Merci beaucoup, j'ai bien trouvé la solution avec le if.

Merci encore pour ces explications, à très bientôt !