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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Выбор файла и исполнение скрипта без перезагрузки страницы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Стоит тривиальная задача задача но решить не как не получается
werwolf68
Отправлено: 19 Ноября, 2013 - 14:30:50
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




Здравствуйте!
Задача - написать простейший редактор txt.
Самым простой способ реализации вот:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $fil="f/info.txt";
  4. if(!file_exists($fil))
  5. {
  6.  $fp=fopen($fil,"w");
  7.  
  8.  fclose($fp);
  9. }
  10. else{
  11.   $a=file_get_contents("f/info.txt");
  12.    }  
  13. ?>
  14.   <form action=1w.php method=post>
  15.  <textarea type=text rows=20 cols=80 name='a'><?php echo $a;?></textarea><br>
  16.  <input type="submit" value="Сохранить">
  17.  </form>
  18.  

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $d=$_POST['a'];
  4. echo $d;
  5. $fil="f/info.txt";
  6. $fp=fopen($fil,"w");
  7. fwrite($fp,$d);
  8. fclose($fp);
  9. echo "<hr><hr><p><a href=adm1.php>Редактировать</a>";
  10. ?>

Но мне нужно сделать 2 вещи :
1. Сделать возможным выбор файлов ( то есть не прописанный в коде заранее как "f/info.txt" в примере).
2. Сделать редактирование файлов без перезагрузки страницы.
Уже голова болит, что только не пробовал.
Пожалуйста, натолкните новичка на путь истинный! Если кто нить поможет кодом - то вообще классно.
Заранее спасибо!
 
 Top
Deonis
Отправлено: 19 Ноября, 2013 - 16:05:09
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


Помог: 14 раз(а)




Для этого понадобится JS, а если быть точнее, то Ajax. Схема следующая: Выбор файла для редактирования (напр., выпадающий список) > ajax-запрос с именем файла > на сервере вытягиваем контент из этого файла и отправляем его ответом клиенту > полученное содержимое ответа вставляем в ваш textarea. Сохранение после редактирования происходит по тому же принципу.
Вот пример с использованием библиотеки jQuery:
HTML
CODE (html):
скопировать код в буфер обмена
  1. <div id="redactor">
  2.     <select id="file_list">
  3.         <option value="-1"></option>
  4.         <option value="file_1.txt">file_1.txt</option>
  5.         <option value="file_2.txt">file_2.txt</option>
  6.     </select>
  7.     <textarea id="edit_area"></textarea>
  8.     <input type="button" id="btn_save">
  9. </div>

JS/jQuery
CODE (javascript):
скопировать код в буфер обмена
  1. var redactor = $('#redactor')
  2. ,    fileList = $('#file_list')
  3. ,    editArea = $('#edit_area');
  4.  
  5. redactor.on('change', '#file_list', ajaxQuery);
  6. redactor.on('click', '#btn_save', ajaxQuery)
  7. function ajaxQuery(el){
  8.     var _target = el.currentTarget
  9.     ,   _action = _target.id == 'file_list' ? 'load' : 'save'
  10.     ,   _data = _action == 'save' ?  editArea.val() : false
  11.     ,   _filename = fileList .val();
  12.     if(!_filename) return false;
  13.     $.ajax({
  14.         url: '/path/to/handler.php',
  15.         type: 'POST',
  16.         dataType: 'html',
  17.         data: {action: _action, data: _data, filename: _filename},
  18.         success: function(req){
  19.             editArea.val(req);
  20.         }
  21.     });
  22. }

PHP
PHP:
скопировать код в буфер обмена
  1. if(!empty($_POST['action'])) $action = $_POST['action'];
  2. if(!empty($_POST['data'])) $data= $_POST['data'];
  3. if(!empty($_POST['filename'])) $filename= $_POST['filename'];
  4. if(isset($action, $filename)){
  5.     $request = '';
  6.     $path = '/path/to/docs/'.$filename;
  7.     if($action == 'load') {
  8.         $request = file_get_contents($path);
  9.     } else {
  10.         file_put_contents($path, $data);
  11.     }
  12.     echo $request;
  13.     exit;
  14. }


P.S. Для textarea атрибут type не нужен.

(Отредактировано автором: 19 Ноября, 2013 - 16:14:30)

 
 Top
werwolf68
Отправлено: 19 Ноября, 2013 - 19:05:52
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




Так, хорошо. А как получить файл не списком, а выбрать его в проводнике?
 
 Top
caballero
Отправлено: 19 Ноября, 2013 - 19:51:03
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




проводник там вообще ни при чем
тег <input type="file" > позволит выбрать файл с фаловой системмы

Deonis
вы бы прежде писать метр кода хоть поинтресовались откуда он файлы выбирать хочет с сервера или клиента.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Deonis
Отправлено: 19 Ноября, 2013 - 20:21:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


Помог: 14 раз(а)




caballero пишет:
вы бы прежде писать метр кода хоть поинтресовались откуда он файлы выбирать хочет с сервера или клиента.

Ну, титул ̶м̶е̶т̶р̶а̶ мэтра, я себе не присуждал. И судя из кода в вопросе, лично я понял так, что файл уже на сервере и никакого намёка на предварительную его загрузку - я так же не увидел.
 
 Top
caballero
Отправлено: 19 Ноября, 2013 - 21:02:07
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




ТС хочет редактор а значит вероятнее всего файлы берутся с машины клиента

а то что написал человек, задающий на форумах подобные вопросы, можно даже не смотреть.

(Отредактировано автором: 19 Ноября, 2013 - 21:02:29)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
esterio
Отправлено: 19 Ноября, 2013 - 21:42:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)





Еще круче будет, если ТС захочет сохранить на клиенте файл(без закачкы) аля Notepad++
 
 Top
werwolf68
Отправлено: 20 Ноября, 2013 - 20:25:29
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




Да извините, я тут немного протупил. Ну как обычно в принципе.
В общем тему можно закрыть. Всем спасибо!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB