2014-01-04 5 views
0

Я начинаю с php, и я пытаюсь сохранить содержимое textarea внутри файла news.txt.Как сохранить содержимое textarea внутри .txt-файла с помощью php

После сохранения, я покажу результаты на другой странице. Все работает отлично, ddate и заголовок отображаются отлично и даже содержимое textarea, но если я нажимаю enter для создания новой строки, это больше не работает.

вот что происходит и какой-то код.

Примечание: Undefined смещение: 1 в C: \ Virtual Servers \ XAMPP \ HTDOCS \ read.php на линии 17

Примечание: Не определено смещение: 2 в C: \ Virtual Servers \ XAMPP \ HTDOCS \ читать. PHP на линии 18

и мой код:

read.php страница

<html> 
    <head> 
    <style> 
    .news{background:#f1f1f1;width:960px;height:500px;margin-bottom:15px;} 
    .title{color:red;} 
    .date{font-style:italic;} 
    .text{color:green;font-weight:bold;} 
    </style> 
    </head> 
    <body> 
    <?php 
     $i = 0; 
     $array = file("news/news.txt"); 
     foreach($array as $row){ 
      $split = explode('|', "$row"); 
      $data = $split[0]; 
      $titolo = $split[1]; 
      $testo = $split[2]; 
      $i++; 
      print '<div id="'.$i.'" class="news"><div class="date">'.$data.'</div><div class="title">'.$titolo.'</div><div class="text">'.$testo.'</div></div>'; 
      }  
    ?> 

    </body> 
    </html> 

index.php страница:

<div class="container"> 
     <form name="myform" onsubmit="return validateForm()" action="welcome.php" method="post"> 
     <?php echo date('d-m-Y'); ?></br> 
     <h1>Titolo:</h1><input type="text" id="Title" name="titolo" class="textStyleTitle"><br> 
     <p>Testo:</p><textarea id="Text" name="testo" class="textStyleText"></textarea><br> 
     <input type="submit" value="salva"> 
     </form> 
    </div> 

Какие-либо решения?

Большое спасибо.

!! ОБНОВЛЕНИЕ !! С решением, упомянутым ниже, я решил частично. У меня нет никаких ошибок, но вот как это выглядит:

<body> 
    <div id="1" class="news"> 
      <div class="date">04-01-2014</div> 
      <div class="title">Testing title</div> 
      <div class="text">Testing textarea row 1 (enter pressed)</div> 
    </div> 
    <div id="2" class="news"> 
      <div class="date">Testing textarea row 2 (enter pressed)</div> 
      <div class="title"></div><div class="text"></div></div> 
    <div id="3" class="news"> 
      <div class="date">Testing textarea row 3 (enter pressed)</div> 
     <div class="title"></div><div class="text"></div></div> 
    <div id="4" class="news"> 
      <div class="date">Testing textarea row 4</div> 
      <div class="title"></div><div class="text"></div> 
    </div></body> 

unfortunally, то, что я пытаюсь достичь что-то вроде этого:

<body> 
<div id="1" class="news"> 
    <div class="date">04-01-2014</div> 
    <div class="title">Testing title</div> 
    <div class="text">Testing textarea row 1 (enter pressed) 
         Testing textarea row 2 (enter pressed) 
         Testing textarea row 3 (enter pressed) 
         Testing textarea row 4 
    </div> 
</div> 

+0

проверьте индекс перед использованием с помощью 'isset'. Для Ex: 'if (isset ($ split [0])) $ data = $ split [0];' –

+0

, где я должен это использовать? – Nick

ответ

1

сначала удалить котировки на $ строку в взрываются сделать, как показано ниже: $split = explode('|', $row); затем

Использование:

$data = (isset($split[0])?$split[0]:""); 

вместо

$data = $split[0]; 

же для $split[1] и $split[2]

0

Вы сделали ошибка здесь: $split = explode('|','$row'), не нужно устанавливать $row в цитаты, потому что он будет использовать его как string не как массив

Вам необходимо использовать this $split = explode('|',$row), чтобы взорвать вас в строке

0

попробуйте этот код.

foreach($array as $row){ 
      $data = $titolo = $testo = "";// initialize the valiables 
      $split = explode('|', $row); 
      $data = (isset($split[0])?$split[0]:""); 
      $titolo = (isset($split[1])?$split[1]:""); 
      $testo = (isset($split[2])?$split[2]:""); 
      $i++; 
      print '<div id="'.$i.'" class="news"><div class="date">'.$data.'</div><div class="title">'.$titolo.'</div><div class="text">'.$testo.'</div></div>'; 
      }  
+0

это сработало, но не совсем так, как мне нужно. Таким образом, у меня больше нет ошибки, но каждый раз, когда я нажимаю enter, он создает новый div с последовательным идентификатором, и он не переходит в одно и то же просто слово, обертывающее текст ... любое решение для его исправления? – Nick

Смежные вопросы