Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Редактирование PHP файла.
Форумы портала PHP.SU » » Работа с файловой системой и файлами » Редактирование PHP файла.

Страниц (1): [1]
 

1. Prokofe - 13 Июня, 2011 - 23:49:52 - перейти к сообщению
Делаю какое-то подобие админ панели, цель вывести список файлов из директории со страницами (примеры взяты с данного сайта), есть (правда пока не вышло кнопку напротив каждой строки сделать):

PHP:
скопировать код в буфер обмена
  1. <?PHP $dir = "../pages/";
  2.  
  3. // Открыть заведомо существующий каталог и начать считывать его содержимое
  4. if (is_dir($dir)) {
  5.     if ($dh = opendir($dir)) {
  6.         while (($file = readdir($dh)) !== false) {
  7.             print "<li>Файл: $file : тип: " . filetype($dir . $file) . "\n</li>";            
  8.                         }
  9.         closedir($dh);
  10.     }
  11. }
  12. ?>
  13.  
  14.  
  15. <FORM ACTION="edit.php" METHOD=POST>
  16. <INPUT TYPE="submit" value="редактрировать">
  17. </FORM>


и вот по нажатию это самой кнопки чтоб этот файл открылся для редактирования через edit.php:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $fp = fopen("$file", "a"); // Открываем файл в режиме записи
  3. $mytext = "Это строку необходимо нам записать\r\n"; // Исходная строка
  4. $test = fwrite($fp, $mytext); // Запись в файл
  5. if ($test) echo 'Данные в файл успешно занесены.';
  6. else echo 'Ошибка при записи в файл.';
  7. fclose($fp); //Закрытие файла
  8. ?>


конечная цель чтоб это открылось в форме и по нажатию на кнопке закрылось и сохранилось.. Основы подучить бы мне не помешало, но времени совсем в обрез, направьте меня в нужное русло.
2. DeepVarvar - 14 Июня, 2011 - 00:17:24 - перейти к сообщению
http://php.su/functions/?cat=filesystem
3. Prokofe - 14 Июня, 2011 - 08:43:07 - перейти к сообщению
Ну спасибо конечно, но у меня проблема с реализацией задуманного, и не совсем то что я ожидал увидеть..
4. Мелкий - 14 Июня, 2011 - 09:14:56 - перейти к сообщению
Prokofe пишет:
конечная цель чтоб это открылось в форме и по нажатию на кнопке закрылось и сохранилось..

Алгоритм:
прочитать файл, при отправке с формы перезаписать файл.
А-ля:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2. $filename = 'file';
  3. if (isset($_POST['edit'])) {
  4.    file_put_contents($filename,$_POST['edit']);
  5.    }
  6. ?>
  7. <form action="<?=$_SERVER['PHP_SELF']?>" method="POST">
  8. <textarea name="edit"><?=file_get_contents($filename)?></textarea><input type="submit" value="сохранить">
  9. </form>


Prokofe пишет:
и вот по нажатию это самой кнопки чтоб этот файл открылся

Какой файл?
5. White - 14 Июня, 2011 - 11:06:44 - перейти к сообщению
Приблизительно так

Вывод списка файлов:
PHP:
скопировать код в буфер обмена
  1.  
  2. <FORM ACTION="edit.php" METHOD=POST>
  3.  
  4. <?PHP
  5. $dir = "../pages/";
  6. // Открыть заведомо существующий каталог и начать считывать его содержимое
  7.  
  8. if (is_dir($dir)) {
  9.   foreach(glob($dir.'*' as $obj) {
  10.     print "<li><input type=radio name=filename value=".$obj."> ";
  11.     print "Файл: $obj : тип: " . filetype($obj) . "\n</li>";
  12.   }
  13. }
  14. ?>
  15.  
  16. <INPUT TYPE="submit" value="редактрировать">
  17. </FORM>
  18.  


'edit.php':

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.     $file = file($_POST['filename']); // Читаем файл построчно
  4.     echo '<form action="save.php" method="post"><textarea name=fileentry>';
  5.     foreach($file as $value) {
  6.         echo $value."\r\n";
  7.     }
  8.     echo '</textarea><input type=hidden name=filename value='.$_POST['filename'].'><INPUT TYPE="submit" value="Save"></form>';
  9. ?>
  10.  


'save.php':
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $fp = fopen($_POST['filename'], 'w');
  4. fwrite($fp, $_POST['fileentry']);
  5. fclose($fp);
  6. ?>
  7.  

(Добавление)
Цитата:
и по нажатию на кнопке закрылось и сохранилось


здесь как минимум 3 скрипта:

1)Выбор файла и отправка имени второму
2)Редактирование текста файла и отправка имени и текста третьему
3)Сохранение файла и перенаправление назад на первый.

P.S. Если хочешь "интерактивный" редактор пользуй AJAX(хотя посредствами чистого HTML это тоже реализуемо как в примере выше.
6. Prokofe - 14 Июня, 2011 - 13:52:51 - перейти к сообщению
Так, вот выше описанный вариант весьма близок к моей задумке. Правда ошибку выдает пока не понимаю почему:
Цитата:
Parse error: syntax error, unexpected T_AS in W:\html\cms\www\admin\index.php on line 10


а по поводу интерактивного редактора, есть идея прицепить tinyMCE
7. Prokofe - 14 Июня, 2011 - 16:51:46 - перейти к сообщению
Так как быть с ошибкой весь мозг уже разломал
8. Мелкий - 14 Июня, 2011 - 17:09:25 - перейти к сообщению
Prokofe, покажите W:\html\cms\www\admin\index.php , например, 7-13 строки.
9. Prokofe - 14 Июня, 2011 - 17:28:07 - перейти к сообщению
Код взят и выше указанного поста

PHP:
скопировать код в буфер обмена
  1.  
  2. <FORM ACTION="edit.php" METHOD=POST>
  3.  
  4. <?PHP
  5. $dir = "../pages/";
  6. // Открыть заведомо существующий каталог и начать считывать его содержимое
  7.  
  8. if (is_dir($dir)) {
  9.   foreach(glob($dir.'*' as $obj) {
  10.     print "<li><input type=radio name=filename value=".$obj."> ";
  11.     print "Файл: $obj : тип: " . filetype($obj) . "\n</li>";
  12.   }
  13. }
  14. ?>
  15.  
  16. <INPUT TYPE="submit" value="редактрировать">
  17. </FORM>
  18.  
10. White - 14 Июня, 2011 - 17:36:34 - перейти к сообщению
Цитата:
Parse error: syntax error, unexpected T_AS in W:\html\cms\www\admin\index.php on line 10


сорри, скобку забыл

CODE (htmlphp):
скопировать код в буфер обмена
  1. foreach(glob($dir.'*') as $obj) {


Цитата:
а по поводу интерактивного редактора, есть идея прицепить tinyMCE


Для редактирования исходников? Это WYSIWYG редактор, для html кода, здесь он не помощник. Лучше попробуй EditArea.

 

Powered by ExBB FM 1.0 RC1