Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Как из меняющегося текстового файла делать БД


Автор: Splendid 8.8.2008, 12:17
Задача такая. Есть текстовый файлик в который записываются результаты тестов. Т.е. файлик после прохождения очередного теста дописывается. Выглядит он примерно так:

вид тестирования
входной параметр 1
входной параметр 2
входной параметр 3
результат


Нужно сделать так, чтобы информация из файла записывалась в базу данных в таблицу со столбцами того же вида:

вид тестирования
входной параметр 1
входной параметр 2
входной параметр 3
результат

Как это сделать? И как сделать так, чтобы не записывать все время все данные из файла, а только ДОзаписывать новые?

Автор: Gold Dragon 8.8.2008, 12:32
я что-т оне понял вопрос.. Что нужно  то..?


Делаешь таблицу, например так
Код

CREATE TABLE `tabl` (
`id` INT NOT NULL AUTO_INCREMENT ,
`vid` VARCHAR( 255 ) NOT NULL ,
`param` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `id` ) 
);

хотя нужно знать что за параметры у тебя хранятся. вернее в каком формате...

и добавляешь запись
Код

INSERT INTO `tabl` ( `id` , `vid` , `param` ) 
VALUES (
'', 'бамбук', '11-23-45-67-12-344'
);

Автор: Splendid 8.8.2008, 13:16
вопрос в том, что информация для добавления записи находится в текстовом файле, в том виде, что я написала. Как ее оттуда извлечь?

Автор: skyboy 8.8.2008, 14:00
только средствами sql?

Автор: Splendid 8.8.2008, 14:10
нет, еще php

Автор: Gold Dragon 9.8.2008, 12:09
а какой формат у файла? Т.е. структура

Автор: Splendid 11.8.2008, 08:53
текстовый файлик. Структура типа: 


вид тестирования
входной параметр 1
входной параметр 2
входной параметр 3
результат


если в значениях - то примерно так

1
241245235634
235364
1122
233546463

Автор: HackMan 11.8.2008, 09:09
Ну так в чём сложность? Функцией http://ua.php.net/file файл считывается в массив, а оттуда через foreach() данные заносятся в БД.

Добавлено через 5 минут и 13 секунд
Цитата(Gold Dragon @  8.8.2008,  12:32 Найти цитируемый пост)
INSERT INTO `tabl` ( `id` , `vid` , `param` ) 
VALUES (
'', 'бамбук', '11-23-45-67-12-344'
);

оффтоп, но в этом случае `id` можно опустить, результат будет идентичный
Код

INSERT INTO `tabl`(`vid`, `param`) VALUES ('бамбук', '11-23-45-67-12-344');

А ещё можно и INTO опустить  smile  и вместо (...) VALUES (...) использовать конструкцию SET
Код

INSERT `tabl` SET `vid`='бамбук', `param`='11-23-45-67-12-344'

Автор: Splendid 11.8.2008, 10:05
HackMan, можно пример кода простенький какой-нить, а то что-то я торможу...

Автор: HackMan 11.8.2008, 10:15
Можно, конечно

Код

  $lines = file('data.txt');

  while (count($lines) > 0)
    {
      $type = intval(array_shift($lines));
      $param1 = intval(array_shift($lines));
      $param2 = intval(array_shift($lines));
      $param3 = intval(array_shift($lines));
      $result = intval(array_shift($lines));
      mysql_query("INSERT table SET type=$type, param1=$param1, param2=$param2, param3=$param3, result=$result");
    }


Код не тестировался, написан "с колена", в 10 утра, после бессонной ночи  smile 

Автор: DioNiR 15.8.2008, 16:30
Код
<?php
    $file = file('text.txt');
    $line = sizeof($file);
    if( $line != 0 ) 
    {
        $vid = $file[0];
        $input = array();
        for($i=1;$i<$line;$i++)
        {
            if( $i != ($line-1) )
                $input[] = $file[$i];
        }
        $result = $file[$line-1];
    }
?>

В итоге:
Переменные:
$vid - это вид тестирования
$result - результат
массив:
$input - это входные параметры их может быть сколько угодно


Можно добавить после в конец:
Код

    echo $vid;
    print_r('<pre>');
    print_r($input);
    print_r('</pre>');
    echo $result;

И увидеть как будет выглядеть.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)