Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Перенос данных из текстового файла
 
 автор: dirol   (09.12.2010 в 13:40)   письмо автору
 
 

есть текстовый файл с содержанием

Заголовок 1 описание
1.1 текст разный
1.2 текст
1.3 текст разный
1.4 текст
1.5 текст
1.6 текст

Заголовок 2 описание
2.1 текст разный
2.2 текст
2.3 текст разный
2.4 текст
2.5 текст
2.6 текст

Помогите вывести текст в масив для залития в базу данных.
чтобы был первый заголовок с номером 1
потом все что в ходит в первый заголовок каждая строчка под своим номером и т.п со вторым и третьим заголовком

  Ответить  
 
 автор: elenaki   (10.12.2010 в 20:55)   письмо автору
 
   для: dirol   (09.12.2010 в 13:40)
 

заголовки с их содержимым разделяются двумя переводами строк?
тогда грузите файл (если большой, то частями) в переменную, разбивайте ее по двум переводам, полученный массив обходите в цикле и разбивайте по одному переводу строки. первый элемент будет название раздела, все остальное - его содержимое.


<? include "config.inc.php";

ini_set("max_execution_time",999999);

  
$filename "data.txt"
  
// otkrivaem
  
$file fopen($filename"r"); 
  
// chitaem
  
$buffer fread($filefilesize($filename)); 
  
// zakrivaem
  
fclose($file); 

//  echo $buffer; exit;
  
    //$result = mysql_query("delete from books_writers") or die(" $sqlquery <b>failed!</b><br>".mysql_error());
 
  
// delaem massiv iz stroki dannwx
$file_array explode("<br /><br />"$buffer);
//nachalo perebora massiva
foreach ($file_array as $line_num => $line) {
//razbivaem stroku na polya i formiruem zapros
$line_exp explode("<br />"$line);
   
    
    
$sqlquery 'INSERT INTO table VALUES ('
    
$sqlquery .= $line_exp[0];  // название раздела
    
$sqlquery .= ',"'.$line_exp[1] . '"';  // содержимое
    
$sqlquery .= ')';
    
//echo $sqlquery.";<br>";
    
$result mysql_query($sqlquery) or die($sqlquery <b>failed!</b><br>".mysql_error());
     
}

?>

  Ответить  
 
 автор: Trianon   (10.12.2010 в 21:20)   письмо автору
 
   для: elenaki   (10.12.2010 в 20:55)
 

>заголовки с их содержимым разделяются двумя переводами строк?

в исходном посте двойного перевода не увидел, как ни вглядывался...

  Ответить  
 
 автор: kosta_in_net   (12.12.2010 в 07:26)   письмо автору
 
   для: Trianon   (10.12.2010 в 21:20)
 

Думаю, имеется в виду, пустая строка перед "Заголовок 2 описание". Это, конечно, не обязательно два брейка. Раз файл текстовый, это, скорее \r\n\r\n в то время, как остальные строки разделены одной парой \r\n
В итоге:

// delaem massiv iz stroki dannwx 
$file_array = explode("\r\n\r\n", $buffer); 
//nachalo perebora massiva 
foreach ($file_array as $line_num => $line) { 
//razbivaem stroku na polya i formiruem zapros 
$line_exp = explode("\r\n", $line);

  Ответить  
 
 автор: elenaki   (12.12.2010 в 17:43)   письмо автору
 
   для: Trianon   (10.12.2010 в 21:20)
 

я вгляделась в код этой страницы и вот, что увидела.

<br />
&#919;&#944;&#947;&#958;&#955;&#958;&#946;&#958;&#954; 1 &#958;&#959;&#952;&#961;&#944;&#957;&#952;&#949;<br />
1.1 &#962;&#949;&#954;&#961;&#962; &#960;&#944;&#951;&#957;&#971;&#953;<br />
1.2 &#962;&#949;&#954;&#961;&#962;<br />
1.3 &#962;&#949;&#954;&#961;&#962; &#960;&#944;&#951;&#957;&#971;&#953;<br />
1.4 &#962;&#949;&#954;&#961;&#962;<br />
1.5 &#962;&#949;&#954;&#961;&#962;<br />
1.6 &#962;&#949;&#954;&#961;&#962;<br />
<br />
&#919;&#944;&#947;&#958;&#955;&#958;&#946;&#958;&#954; 2 &#958;&#959;&#952;&#961;&#944;&#957;&#952;&#949;<br />
2.1 &#962;&#949;&#954;&#961;&#962; &#960;&#944;&#951;&#957;&#971;&#953;<br />
2.2 &#962;&#949;&#954;&#961;&#962;<br />
2.3 &#962;&#949;&#954;&#961;&#962; &#960;&#944;&#951;&#957;&#971;&#953;<br />
2.4 &#962;&#949;&#954;&#961;&#962;<br />
2.5 &#962;&#949;&#954;&#961;&#962;<br />
2.6 &#962;&#949;&#954;&#961;&#962;<br />
<br />

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

  Ответить  
 
 автор: kosta_in_net   (12.12.2010 в 18:12)   письмо автору
 
   для: elenaki   (12.12.2010 в 17:43)
 

Думаю, фраза "есть текстовый файл с содержанием" означает то, что в содержании именно то, что ниже показано (просто текст).
П. С. На Трианона предлагаю не наезжать. Он - возможно, лучший специалист на форуме.

  Ответить  
 
 автор: Trianon   (12.12.2010 в 18:59)   письмо автору
 
   для: elenaki   (12.12.2010 в 17:43)
 

Неожиданный ход :))

Как, еще одни?

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

В таких вопросах, как мне представляется, следует более четко, вероятно даже более формально описывать формат исходных данных. Либо как вариант, приводить реальные примеры данных, а не этакой вот суррогат.

Кстати, аспект добавления в БД вопросов вызывает не меньше - судя по структуре, заполнять требуется как минимум две таблицы. О чем тредстартер тоже ни разу не пояснил.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования