11-10-2008, 12:13 PM
|
#2 (permalink)
|
|
The Contributor
Join Date: Nov 2008
Location: Norway
Posts: 58
Thanks: 20
|
Hello,
Quote:
Originally Posted by Peuplarchie
- Clean my code, I clean the list and display only the txt file, but I do it 2 time same for where I display it, I'm sure there is a better way..?
|
I removed the else part and moved the code to open the folder and display all files till after the fwrite() part. The code to display the files is not repeated anymore.
Quote:
Originally Posted by Peuplarchie
- Sort last added message on top.
|
Done, using krsort() and storing the files in an array.
Quote:
Originally Posted by Peuplarchie
- When I add text, the page does not refresh and show what I just enter, I have to add another text to see it, on and on...
|
Done, by having the code to write to the file before we open the folder and display the files.
Quote:
Originally Posted by Peuplarchie
- Could I get the result of the listing into an array ?
|
Done.
If I were you, I would consider using some CSS to clean up the code further. I am using inline CSS, but you should move it all to an external CSS file. Let me know if you are having any trouble with this code!
PHP Code:
<?php
// Turn on error reporting ini_set( 'display_errors', 'yes' );
// Is submit button pressed? if( isset( $_POST['submit'] ) ) { // Store new content in a variable $new_content = $_POST['update'];
// Array containing all files $file_list = array();
// Filename on file we are writing to $filename = date( 'Y' ) . '-' . date( 'm' ) . '-' . date( 'd' ) . '-' . date( 'G' ) . '-' . date( 'i' ) . '-' . date( 's' ) . '.txt';
// Open the file and erase the contents if any $content_file = fopen( $filename, 'w' );
// Write the data to the file fwrite( $content_file, $new_content );
// Close the file fclose( $content_file );
// Confirm the file was updated echo '<h2>File successfully updated!</h2>'; } // Set path to our directory (for easier use) // Remember the last slash (/)! $directory_path = './';
// Return .txt files found in the directory foreach( glob( $directory_path . '*.txt' ) as $file ) { // Put some file data in variables $name = basename( $file ); $size = filesize( $file ); $content = implode( file( $file ) ); // Generate file stats $stats = stat( $file ); // Last time the file was modificated $mod_time = $stats['mtime'];
// Do your thing, for example add the info to an array // or output it directly $file_list[$mod_time]['filename'] = $name; $file_list[$mod_time]['filesize'] = $size; $file_list[$mod_time]['content'] = $content; $file_list[$mod_time]['mod_time'] = $mod_time; // Sort array by modification time (key) in reverse order krsort( $file_list ); }
// Display the form ?> <form action="/YOUR FILE.php" method="post"> <label for="update">File content:</label> <textarea name="update" id="update" cols="50" rows="10"></textarea> <button type="submit" name="submit">Update</button> </form>
<h2>List of files:</h2> <table style="border: 1px solid #555; border-collapse: separate; font-size: 12px; width: 800px"> <tr> <th>Filename:</th> <th>Filesize:</th> <th>Content:</th> <th>Last modified:</th> </tr> <?php
// Return all files from array // Since the array contains multiple arrays, we must // use i.e. $files['name'] to access the data foreach( $file_list as $files ) { echo '<tr> <td style="border: 1px solid #555; padding: 4px; text-align: center; width: 200px;"><a href="' . $files['filename'] . '">' . $files['filename'] . '</a></td> <td style="border: 1px solid #555; padding: 4px; text-align: center; width: 60px;">' . $files['filesize'] . ' kb</td> <td style="border: 1px solid #555; padding: 4px; ">' . nl2br( $files['content'] ) . '</td> <td style="border: 1px solid #555; padding: 4px; text-align: center; width: 120px">' . date( 'Y/m/d - H:i:s', $files['mod_time'] ) . '</td> </tr>'; }
echo '</table>';
?>
I have tested the code myself, and it seems to work perfectly.
Yours, Runar
|
|
|