2016-07-20 5 views
1

ich mit file_put_contentswie Wert in txt-Datei mit php

Dies ist ein Wert (nicht überschrieben werden!) In eine txt-Datei hinzufügen möchten hinzufügen, was ich bisher habe:

$fileUserId = fopen("fileUserId.txt", "w") or die("Unable to open file!"); 
$UserIdtxt = $UserID."||"; 
file_put_contents("fileUserId.txt", $UserIdtxt, FILE_APPEND); 
fclose($fileUserId); 

$UserID ist eine ganze Zahl, wie 1, 2, 3 usw.

Also, wenn die der Benutzer-ID 1 ist, die fileUserId.txt sieht wie folgt aus:

1||

Wenn ein anderer Benutzer mit ID 2, die fileUserId.txt sollte wie folgt aussehen:

1||2||

Aber er überschreibt die Datei, so dass es diese wird:

2||

Was mache ich falsch?

Antwort

5

Entfernen Sie die und fclose Linie und Sie sind in Ordnung. file_put_contents tut dies intern. Und fopen("fileUserId.txt", "w") löscht die Datei.

Hinweis:

'w' Open nur zum Schreiben; Platzieren Sie den Dateizeiger am Anfang von die Datei und schneiden Sie die Datei auf Null Länge. Wenn die Datei nicht existiert, versuchen Sie, sie zu erstellen.

+0

Nun, das funktioniert gut. das einzige, was jetzt passiert: er setzt eine "0" dazwischen; Das ist also der Inhalt von ** fileUserId.txt ** '1 || 0 || 63 || 0 || 24 ||' –

+0

@JackMaessen Plus; das letzte '||' ist nicht wirklich notwendig, da es keinen Wert nach '24' gibt .... Sehen Sie sich den alternativen Ansatz an ... aber Sie sollten dies als Lösung akzeptieren ... vielleicht bietet er Ihnen eine Alternative ... – Poiz

+0

'1 || 0 || 63 || 0 || 24 ||' das ist dann ein anderes Problem mit Ihrem Code, den Sie benutzen. – JustOnUnderMillions

1

Sie können es auch anders machen. Der kommentierte Code unten veranschaulicht, wie:

<?php 

    $txtFile = __DIR__ . "/fileUserId.txt"; 
    $UserID  = 9; //<== THIS VALUE IS FOR TESTING PURPOSES, 
        //<== YOU SHOULD HAVE ACCESS TO THE ORIGINAL $UserID; 

    //CHECK THAT THE FILE EXISTS AT ALL 
    if(file_exists($txtFile)){ 
     // GET THE CONTENTS OF THE FILE... & STORE IT AS A STRING IN A VARIABLE 
     $fileData  = file_get_contents($txtFile); 

     // SPLIT THE ENTRIES BY THE DELIMITER (||) 
     $arrEntries  = preg_split("#\|\|#", $fileData); 

     // ADD THE CURRENT $UserID TO THE $arrEntries ARRAY 
     $arrEntries[] = $UserID; 

     // RE-CONVERT THE ARRAY TO A STRING... 
     $strData  = implode("||", $arrEntries); 

     // SAVE THE TEXT FILE BACK AGAIN... 
     file_put_contents($txtFile, $strData); 
    }else{ 
     // IF FILE DOES NOT EXIST ALREADY, SIMPLY CREATE IT 
     // AND ADD THE CURRENT $UserID AS THE FIRST ENTRY... 
     file_put_contents($txtFile, $UserID); 
    } 
+0

So: Sightseeing-Weg nach Rom! ;) – JustOnUnderMillions

+0

@JustOnUnderMillions ;-) Nein! ** Weg zu deinem Zuhause !!! ** ;-) – Poiz