Как ввести контент в БД

Тема в разделе "Базы данных", создана пользователем bobkli, 4 сен 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. bobkli

    bobkli Местный

    Регистр.:
    2 ноя 2007
    Сообщения:
    691
    Симпатии:
    116
    Ребята есть проблема, не как немого решить его
    Есть 2 тхт файла в одном такой текст
    Нуллед.вс
    Нуллед.сс
    Нуллед.ин
    А во втором файле
    Нуллед.вс – это форум и т.д. и т.п.
    Нуллед.сс – это зеркало форума нулледа
    Нуллед.Ин – это второе зеркало нулледа

    То есть первая строка в первом файле относиться к первой строке в втором файле
    Как это все можно засунуть в БД не подскажете может уже готовые срипты есть или хотябы с похожими функциями
     
  2. COKOJI

    COKOJI Писатель

    Регистр.:
    25 сен 2008
    Сообщения:
    5
    Симпатии:
    0
    какова структура бд ? тебе нужно в одну таблицу это занести или в две ?
    и зачем тебе первый файл, если во втором есть те же самые данные ?
     
  3. rex1963

    rex1963

    Регистр.:
    19 фев 2007
    Сообщения:
    228
    Симпатии:
    47
    Вопрос решаем, хотя, я бы объединил два текстовых в один csv файл, для более точного соответствия, а затем бы передал бы в скрипт.
    Форма для отправки:
    HTML:
    <form enctype='multipart/form-data' action='путь к скрипту' method='post'>
    <input size='61' class='input' type='file' name='csv' value=''>
    разделитель<input type='text' name='separator' value=''>
    <input class='button' type='submit' value=''>
    </form>
    Скрипт-обработчик:
    PHP:
    <?php
     set_time_limit
    (0);
      
    //Error_Reporting(E_ALL & ~E_NOTICE); 
      // Осуществляем соединение с базой данных
    $dblocation "localhost";
    $dbname "№№№№№";
    $dbuser "№№№№№";
    $dbpasswd "№№№№";
    // Устанавливаем соединение с базой данных
      
    $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
      if (!
    $dbcnx) exit( "<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" );
      if (! @
    mysql_select_db($dbname,$dbcnx)) exit ( "<P>В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" );
      
      if(empty(
    $_FILES['csv']['tmp_name']))
         exit(
    "Ошибка при отправке csv-файла");
      if(!(
    $fp fopen($_FILES['csv']['tmp_name'],"rb"))) 
          exit(
    "Ошибка при открытии отправленного файла");
        
    // Читаем содержимое файла
        
    $buffer fread($fp,filesize($_FILES['csv']['tmp_name']));
        
    // Закрываем файл
        
    fclose($fp);
        
    // Удаляем файл
        
    unlink($_FILES['csv']['tmp_name']);
        
    // Присваиваем по умолчанию 
        
    $separator ";";
        
    // Если передан параметр separator изменяем значение переменной $separator
        
    $separator $_POST['separator'];
        
    // Если имеются пустые позиции забиваем их прочерком -
        
    $buffer str_replace($separator.$separator$separator."-".$separator,$buffer);
        
    $buffer str_replace("\n".$separator"\n-".$separator,$buffer);
        
    $buffer str_replace($separator."\n"$separator."-\n",$buffer);
        
    // Разбиваем файл по строкам, каждую из которых заносим
        // в отдельный элемент массива $strtmp
        
    $tok strtok($buffer,"\n");
        while (
    $tok)
        {
          
    $tok strtok("\n");
       
    $strtmp[] = $tok;
        }
        
    // Начало формирования SQL-запроса на вставку данных из
        // csv-файла

     
    $insert_query "insert into название таблицы values ";
        
    // Разбиваем строку по отдельным словам, используя
        // разделитель $separator
        
    foreach($strtmp as $value)
        {
          
    // Если строка пуста - выходим из цикла. Пустые строки могут появится,
          // если в конце csv-файла находятся пустые строки.
          
    if(empty($value)) break;
        
         
    //первое поле
     
    $pole1 strtok($value,$separator);
      
    // второе поле
     
    $pole2 strtok($separator);
    // Формируем запрос  
          // Преобразуем прямые кавычки в обратные
          
    $pole1 str_replace("'","`"$pole1);
         
    $pole2 str_replace("'","`",$pole2);
         
         
    // Формируем и выполняем SQL-запрос на добавление позиции
        
          
    $insert_query .= "(NULL,
                            '
    $pole1',
                            '
    $pole2'),";
         }
    // Из запроса $insert_query удаляем последнюю запятую
        
    $insert_query substr($insert_query,0,strlen($insert_query)-1);
    // Выполняем SQL-запросы
        
    if(mysql_query($insert_query))
        {
          echo 
    "<HTML><HEAD>
                <META HTTP-EQUIV='Refresh' CONTENT='0; URL=адрес страницы успешного результата'>
                </HEAD></HTML>"
    ;
        }
        else
        {
    //при ошибке - выводится запросы для контроля
          
    echo $insert_query;
          echo 
    "<br>";
        }
    ?>    
    Как мне кажется, с текстовыми файлами могут быть сбои, когда число строк в одном файле будет не соответствовать числу строк в другом.
    Делается где-то так
    PHP:
    // читаем файлы и разбиваем их
    $filename1=file_get_contents($_SERVER['DOCUMENT_ROOT']."/fail1.txt"); 
     
    $filename1=explode("\n"$filename1);
    $filename2=file_get_contents($_SERVER['DOCUMENT_ROOT']."/fail2.txt"); 
     
    $filename2=explode("\n"$filename2);
    В цикле формируешь запросы к базе
     
    bobkli нравится это.
Статус темы:
Закрыта.