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 :: Версия для печати :: вывод текста в textarea
Форумы портала PHP.SU » » Вопросы новичков » вывод текста в textarea

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

1. rango2012 - 01 Ноября, 2012 - 22:02:14 - перейти к сообщению
Не могу разобраться.
необходимо из файла вывести текст, что-либо в нем изменить и сохранить изменения.
Пишу вот такой код:

PHP:
скопировать код в буфер обмена
  1. <form action="" method="post">
  2.                 <textarea cols="100" rows="10" name="pole">
  3.                         <?PHP
  4.                                 $a=file_get_contents("kniga.txt","r");
  5.                                 echo $a;
  6.                         ?>     
  7.                 </textarea>
  8.                
  9.                 <input type="submit" value="Применить изменения" name="submit"/></p>
  10.                                 <?PHP
  11.                                         $t=$_POST['pole'];
  12.                                         file_put_contents('kniga.txt',$t);     
  13.                                 ?>
  14. </form>


Все выводиться и сохраняется. НО когда я сохраняю файл, после обработки данных мне опять показывает еще не измененный файл, и 2-ое когда обновляется страница, то в textarea перед текстом вставляются какие-то пробелы, прилагаю картинку там эти пробелы видны.
Заранее благодарен за разъяснения.
2. DlTA - 01 Ноября, 2012 - 22:23:49 - перейти к сообщению
rango2012 пишет:
>
                        <?PHP
вот это ваши пробелы

а вот че там в начале было написано я не понял
3. rango2012 - 01 Ноября, 2012 - 22:28:21 - перейти к сообщению
Но я насколько понимаю пробелы в коде не учитываются и браузером не отображаются. Или я не прав?
4. armancho7777777 - 01 Ноября, 2012 - 22:30:11 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <textarea cols="100" rows="10" name="pole"><?=file_get_contents("kniga.txt")?></textarea>
  3.  

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if(!empty($_POST['pole']))
  4. {
  5.      $t=$_POST['pole'];
  6.      file_put_contents('kniga.txt',$t);      
  7. }
  8. ?>
  9.  
5. DlTA - 01 Ноября, 2012 - 22:45:42 - перейти к сообщению
rango2012 пишет:
Но я насколько понимаю пробелы в коде не учитываются и браузером не отображаются. Или я не прав?
а это пробелы не в php коде а в HTML, а точнее в контенте textarea, вот они и выводятся
6. Sanches69 - 02 Ноября, 2012 - 09:10:38 - перейти к сообщению
<?PHP
if(!empty($_POST['pole']))
file_put_contents('kniga.txt',$_POST['pole']);
?>

(=
7. rango2012 - 02 Ноября, 2012 - 10:14:06 - перейти к сообщению
Спасибо всем кто откликнулся, с пробелами я разобрался, осталась проблемка с обновлением.

вот код

PHP:
скопировать код в буфер обмена
  1. <body>
  2.        
  3.                 <form action="" method="post">
  4.                     <textarea cols="100" rows="10" name="pole"><?PHP
  5.                            
  6.                                     $a=file_get_contents("kniga.txt","r");
  7.                                     echo $a;
  8.                             ?>    
  9.                     </textarea>
  10.                    
  11.                     <input type="submit" value="Применить изменения" name="submit"/></p>
  12.                                     <?PHP
  13.                                            if(!empty($_POST['pole']))
  14.                                                                                                 {       $t=$_POST['pole'];
  15.                                                                                                         file_put_contents('kniga.txt',$t);
  16.                                                                                                 }  
  17.                                     ?>
  18.                 </form>
  19.         </body>


После нажатия на кнопку для обработки записи в файл, в textarea отображается предыдущий не измененный файл, но после того как я обновляю страницу все отображается как надо.
Может можно как-то обновить информацию отображающуюся в textarea или автоматом запустить обновление страницы? Не знаю как правильно и корректно это сделать. Прикрепляю фото того что происходит для большей наглядности
8. halsoft - 02 Ноября, 2012 - 10:29:54 - перейти к сообщению
В файл нужно записать прежде, чем вы его прочитаете. У вас же сначала происходит чтение, а потом уже запись, поэтому при первом нажатии на кнопку отображается старый текст.

Делайте так

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $t=$_POST['pole'];
  4.  
  5. if(!empty($t)) file_put_contents('kniga.txt',$t);
  6. ?>
  7. <body>
  8.                 <form action="" method="post">
  9.                     <textarea cols="100" rows="10" name="pole"><?=file_get_contents("kniga.txt","r");?></textarea>
  10.                    
  11.                     <input type="submit" value="Применить изменения" name="submit"/></p>
  12.                 </form>
  13.         </body>


Совет: не вводите переменные, если они не несут никакой пользы. В данном случае, у вас было 2 переменных $t и $a. Вторая переменная, скорее всего, нигде больше не используется, поэтому содержание файла лучше всего сразу вывести, чем сохранять его в переменной и выводить эту переменную. Так же и с первой переменной. Вы присвоили ей значение и использовали ее только один раз, никакой информации эта переменная в себе не несла, также она и не сокращала код, даже наоборот.
Заметьте, я использовал эту переменную, чтобы два раза не писать $_POST['pole']. Уже видна целесообразность, хоть и не большая польза.
Резюмируя, используйте переменные только там, где это нужно.
9. rango2012 - 02 Ноября, 2012 - 10:58:12 - перейти к сообщению
Ура заработало!

Вот так написал
PHP:
скопировать код в буфер обмена
  1. <body>
  2.                                 <?PHP
  3.                                 $t=$_POST['pole'];
  4.                                 if(!empty($t)) file_put_contents('kniga.txt',$t);
  5.                                 ?>
  6.                
  7.                                 <form action="" method="post">
  8.                     <textarea cols="100" rows="10" name="pole"><?PHP
  9.                                                                                                                                         echo file_get_contents("kniga.txt","r");
  10.                                         ?></textarea>
  11.                     <input type="submit" value="Применить изменения" name="submit"/></p>
  12.                 </form>
  13.         </body>


Всем большое спасибо

 

Powered by ExBB FM 1.0 RC1