Re: file writing question
| From: | Mehdi Achour | Date: | Wed, 14 Jan 2004 12:25:28 +0000 |
| Subject: | Re: file writing question | ||
| References: | 1 | Groups: | php.doc php.general php.qa |
| Request: | Send a blank email to phpdoc+get-969358171@lists.php.net to get a copy of this message | ||
Please send your questions only to php-general ...
Mehdi Achour
Hello all,Thanks in advance. I have a quesetion about writing to files. I amsuccessfully opening a file and writing to it, but I'm having problems inserting text. My file currently has the following structure: *************** [index] 24 1073946700 *************** The second line in the file represents an incremented number. And the third line is a unix timestamp of when the incremented number was last incremented. I will have a script that will allow a user to decrement this number, and revert back to the timestamp that goes along with the decremented value. Basically, my file will need the following structure: *************** [index] 3 1073946709 1073946704 1073946700 *************** Since the incremented number is at 3, there should be 3 timestamps in a "stack" order. Overwriting the sole number for incrementing or decrementing is no problem. However, inserting a new timestamp is where I get stuck. The current timestamp is over-written rather than inserting a new one. Here is my code: <? function hitcount($pagename) { $ctrPos; $timeStampPos; $buffer = ''; $formatName = '[' . $pagename . ']'; $fileHandle = -1; //Make sure the file exists if(file_exists("Reports/hitcount.txt") == TRUE) { //Attempt to open the file with read AND write priveleges $fileHandle = fopen('Reports/hitcount.txt','r+'); //Make sure we have a valid file pointer if($fileHandle) {//Attempt to seek to the given page name section $buffer = fgets($fileHandle, 1024); while(!feof($fileHandle) && $buffer != $formatName . "\r\n") { $buffer = fgets($fileHandle, 1024); }//Make sure we are not EOF if(feof($fileHandle) == FALSE) {//get the current pointer position $ctrPos = ftell($fileHandle);//read the next line which is the current hit count $buffer = fgets($fileHandle, 1024); $timeStampPos = ftell($fileHandle);//increment the hit count $buffer = $buffer + 1;//seek to where we know the hit count is fseek($fileHandle, $ctrPos);//overwrite the hit count fwrite($fileHandle, $buffer . "\r\n");//insert the new time stamp fwrite($fileHandle, time() . "\r\n"); } else { //We ARE EOF so we need to add the new page name here and insert thefirst hit count and timestampfwrite($fileHandle, $formatName . "\r\n"); fwrite($fileHandle, "1\r\n" . time()); }} rewind($fileHandle); echo("File Contents: <BR>***************<BR>"); while(!feof($fileHandle)) {$buffer = fgets($fileHandle, 1024); echo($buffer . "<BR>");} echo("***************<BR>"); fclose($fileHandle); } } ?>