|
|
|
| имеется следующий программный код
<?php
// Осуществляем соединение с базой данных
require_once("../config.php");
if(empty($_FILES['csv']['tmp_name']))
puterror("Ошибка при отправке csv-файла");
if(!($fp = fopen($_FILES['csv']['tmp_name'],"rb")))
puterror("Ошибка при открытии отправленного файла");
// Читаем содержимое файла
$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 product values ";
// Разбиваем строку по отдельным словам, используя
// разделитель $separator
foreach($strtmp as $value)
{
// Если строка пуста - выходим из цикла. Пустые строки могут появится,
// если в конце csv-файла находятся пустые строки.
if(empty($value)) break;
// Определяем район
switch(substr(strtolower(strtok($value,$separator)), 0, 3))
{
case 'Склад':
$status = "sklad";
break;
case 'Заказ':
$status = "zakaz";
break;
}
$name = strtok($separator);
$cenabez = strtok($separator);
$cenaroz = strtok($separator);
// Преобразуем прямые кавычки в обратные
$name = str_replace("'","`",$name);
$status = str_replace("'","`",$status);
$cenabez = str_replace("'","`",$cenabez);
$cenaroz = str_replace("'","`",$cenaroz);
// пришлось объявить переменные чтобы занести данные в таблицу ((
$name='asass';
$cenaroz=212;
$status=sklad;
// Формируем и выполняем SQL-запрос на добавление позиции
$insert_query .= "(NULL,'$name',$cenabez,$cenaroz,'$status','show',0,".$_POST['id_catalog']."),";
}
// Из запроса $insert_query удаляем последнюю запятую
$insert_query = substr($insert_query,0,strlen($insert_query)-1);
// Удаляем предыдущие записей
$query_delete = "delete from product where id_catalog=".$_POST['id_catalog'];
mysql_query($query_delete);
// Выполняем SQL-запросы
if( mysql_query($insert_query))
{
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id_parent=".$_POST['id_catalog']."'>
</HEAD></HTML>";
}
else
{
echo $insert_query;
echo "<br>";
}
?>
|
правильно работает только с полем $cenabeznal!да и то импортирует из фала в обратном порядке ((. Скажите пожалуйста что здесь не так и в какой последовательности и как нужно писать функции для работы со строками! Вот моя таблица
CREATE TABLE `product` (
`id_product` int(11) NOT NULL auto_increment,
`name` tinytext NOT NULL,
`cenabez` tinyint(4) NOT NULL default '0',
`cenaroz` tinyint(4) NOT NULL default '0',
`status` enum('sklad','zakaz') NOT NULL default 'sklad',
`hide` enum('show','hide') NOT NULL default 'show',
`pos` int(11) NOT NULL default '0',
PRIMARY KEY (`id_product`)
) TYPE=MyISAM;
|
Заранее спасибо... | |
|
|