<?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>";
}
?>