За последние 24 часа нас посетили 62997 программистов и 1741 робот. Сейчас ищут 762 программиста ...

Сохранение данных из формы в файл

Тема в разделе "PHP для новичков", создана пользователем stunt, 10 янв 2008.

  1. stunt

    stunt Активный пользователь

    С нами с:
    10 янв 2008
    Сообщения:
    35
    Симпатии:
    0
    в одной папке лежат файлы 1.php и редактируемый файл index.html3.
    С помощью пхп открываем содержимое файла index.html3 в поле textarea. Как потом сохранить отредактированные данные в этот же файл ?

    То что начал делать:
    1.php:
    PHP:
    1. <html>
    2. <body>
    3. <form >
    4. <textarea name="body" rows="20" cols="105" class="enter">
    5. <?
    6.  $fi = "index.html3";
    7.  $fp = fopen ($fi, "r");
    8.  $content = fread ($fp, filesize ($fi));
    9.  echo  $content;
    10.  // и не забываем закрыть файл
    11.  fclose ($fp);
    12. ?>
    13. </textarea><br>
    14. <input type="submit" value="отправить" name="edit">
    15. </form>
    16. </body>
    17. </html>
    Файл index.html3
    HTML:
    1.  <h1>Привет, измени меня на что нибудь другое</h1>
     
  2. Hawk

    Hawk Активный пользователь

    С нами с:
    30 авг 2007
    Сообщения:
    201
    Симпатии:
    0
    Адрес:
    Беларусь
    если я правильно понял что ты хочешь то наверное чтото типа того:

    Код (Text):
    1. if (isset($_REQUEST['edit'])) {
    2.   $fi = "index.html3";
    3.   $fp = fopen ($fi, "w+");
    4.   $content = fwrite ($fp, $_REQUEST['body']);
    5.   fclose ($fp);
    6. }
     
  3. stunt

    stunt Активный пользователь

    С нами с:
    10 янв 2008
    Сообщения:
    35
    Симпатии:
    0
    у меня кое что получилось, но скрипт не работает. Посмотрите что не так?

    1.php
    PHP:
    1. <html>
    2. <body>
    3. <form >
    4. <textarea name="body" rows="20" cols="105" class="enter">
    5. <?
    6.  $fi = "index.html3";
    7.  $fp = fopen ($fi, "r");
    8.  $content = fread ($fp, filesize ($fi));
    9.  echo  $content;
    10.  // и не забываем закрыть файл
    11.  fclose ($fp);
    12. ?>
    13. </textarea><br>
    14. <input type="submit" value="отправить" name="edit">
    15. </form>
    16. <?
    17. $fi = "index.html3";
    18. $w=fopen($fi,'w');
    19. fputs($w,$body); // 7
    20. fclose($w);
    21. ?>
    22. </body>
    23. </html>
    index.html3:

    HTML:
    1. <h1>Привет, измени меня на что нибудь другое</h1>
    2.  
    3.  
    4.  <p>Молодца, поменял</p>
     
  4. Hawk

    Hawk Активный пользователь

    С нами с:
    30 авг 2007
    Сообщения:
    201
    Симпатии:
    0
    Адрес:
    Беларусь
    почитай про функции
    file_get_content и file_put_content

    а форму надо так офрмлять...
    <form name="" action="" method="post">
    ...
    </form>

    так же можешь поинтересоваться функцией flock()
     
  5. stunt

    stunt Активный пользователь

    С нами с:
    10 янв 2008
    Сообщения:
    35
    Симпатии:
    0
    вычитал здесь только общий вид
    string file_get_contents ( string filename [, bool use_include_path [, resource context [, int offset [, int maxlen]]]] ), а пример применения найти не могу.
    Пожалуйста подскажите как её применить в моем примере
     
  6. Hawk

    Hawk Активный пользователь

    С нами с:
    30 авг 2007
    Сообщения:
    201
    Симпатии:
    0
    Адрес:
    Беларусь
    Код (Text):
    1.  
    2.  <?
    3.   $content = file_get_contents("index.html3")
    4.   echo  $content;
    5.  ?>
     
  7. Professor

    Professor Активный пользователь

    С нами с:
    2 янв 2008
    Сообщения:
    121
    Симпатии:
    0
    Адрес:
    г. Одесса, Украина
    Вот что я получил, слегка модифицировав твой скрипт.
    PHP:
    1.  
    2. <?
    3. if (isset ($_POST['body'])) {
    4.  $fi = "index.html3";
    5.  $w = fopen ($fi, "w");
    6.  fwrite ($w, $_POST['body']);
    7.  fclose ($w);
    8. }
    9. ?>
    10. <html>
    11.  <body>
    12.   <form action="" method="POST">
    13.   <textarea name="body" rows="20" cols="105" class="enter">
    14.   <?
    15.    $fi = "index.html3";
    16.    $fp = fopen ($fi, "r");
    17.    $content = fread ($fp, filesize ($fi));
    18.    echo  $content;
    19.    // и не забываем закрыть файл
    20.    fclose ($fp);
    21.   ?>
    22.   </textarea><br>
    23.   <input type="submit" value="отправить" name="edit">
    24.   </form>
    25.  </body>
    26. </html>
    А вообще я бы посоветовал побольше поработать с файлами, читая параллельно учебники. Чем больше опыта (и всё равно - удачного или нет) - тем лучше получается.
     
  8. stunt

    stunt Активный пользователь

    С нами с:
    10 янв 2008
    Сообщения:
    35
    Симпатии:
    0
    1.php
    PHP:
    1. <?
    2. Error_Reporting(E_ALL & ~E_NOTICE);
    3. ?>
    4. <html>
    5.  <body>
    6.  <form method=post>
    7.  <textarea  name=body rows="20" cols="105" ><?
    8.      $fileName = "index.html";
    9.      if(is_file($fileName)){
    10.           if($fd = @fopen($fileName, "r")){
    11.                $string .= @fread($fd, filesize($fileName));
    12.                fclose($fd);
    13.           }
    14.      }
    15.      echo $string;
    16. ?></textarea><br>
    17.  <input type="submit" value="отправить" name="edit">
    18.  </form>
    19.  <?
    20.  function complete(){
    21.  
    22.  $fi = "index.html";
    23.  $w=fopen($fi,'w');
    24.  fputs($w,$_POST[body]);
    25.  fclose($w);
    26.   echo '<h3>Данные обновлены</h3>';
    27.  }
    28.  ?>
    29.  <?
    30.   if($_POST['edit']) complete();
    31.  ?>
    32.  </body>
    33.  </html>
    Редактируемый файл index.html


    Теперь все работает