Алексей
Новенький
Зарегистрирован: 29.07.2009 Сообщения: 12
|
|
|
|
Таказя задача: Есть и-нет магазин. нужно в БД добавить товары из цсв. Это я седлал. Потом нужно сделать проверку БД на наличие этих товаров. И если таковые есть, то просто обновить данные о них из цсв. Потом в конце выводиться отчет колько всего записей в файле, сколько добавлено и удалено и это я сделал. Еще нужно сделать так: Потом скрипт должен удалять все записи из таблицы, которых нет в ЦСВ. Т.е. те записи, которые есть в БД, а в новом цсв их нет. Вот я не сделал удаление файлов и и почему-то файл в 200кб обрабатывается 45 (!) секунд. Т.е. скрипт работет очень медленно! Ниже сам скрипт. ПОсмотрите почему так. Даже удаление делать не так важно! Я просто не работал над ним. Главное - подскажите, почему он так долго работает!!!!!!
Цитата: |
<?php
require "includes/config.php";
mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_name);
//Загрузка csv
?>
<table border="0" align="center" width="100%"><tr align="center"><td>
<form enctype="multipart/form-data" action="add.php" method="POST">
<b>Файл:</b> <input name="csv" type="file">
<input type="hidden" name="sname" value="<?php echo $sname?>">
<input type="submit" name="send" value="Загрузить">
</form>
<?php
if (isset($_FILES['csv']))
{
$dir="csv/";
$csv=$_FILES['csv']['tmp_name'];
$csv_name=$_FILES['csv']['name'];
$csv_error=$_FILES['csv']['error'];
if ($csv_error==0)
{
$csv_name=$dir.$csv_name;
if (move_uploaded_file($csv,$csv_name))
{
$down=true;
}
} else
{
$down=false;
$msg="<font color=red>Ошибка! CSV-файл не загружен!</font>";
}
if ($down)
{
$sql="SELECT * FROM tovars";
$tov=mysql_query($sql);
$zap=0;
$adds=0;
$readd=0;
$dellete=0;
$errors=0;
$nulles=0;
//Импорт в MySQL
$handle = fopen ($csv_name,"r");
while (($data = fgetcsv ($handle, 0, ";")) !==false)
{
$num = count ($data);
$c=0;
$row=array();
while ($c < $num)
{
$row[$c]=str_replace("\\", "/", $row[$c]);
$row[$c]=ereg_replace("'", """, $row[$c]);
$row[$c]=ereg_replace('"', """, $row[$c]);
$row[$c]=mysql_escape_string($data[$c]);
$row[$c]=htmlspecialchars($row[$c]);
$row[$c]=trim($row[$c]);
$c++;
}
$first=strlen($row[0]);
$sec=strlen($row[1]);
$fird=strlen($row[3]);
$six=strlen($row[6]);
$sev=strlen($row[7]);
$ni=strlen($row[9]);
if (($num==10) || ($num==11) && ($first>0) && ($sec>0) && ($fird>0) && ($six>0) && ($six<4) && ($sev>0) && ($sev<4) && ($ni>0))
{
$sql="SELECT COUNT(*) AS rec FROM tovars WHERE diler=\"$row[0]\" AND name=\"$row[3]\"";
$tov=mysql_query($sql);
$f=mysql_fetch_row($tov);
$s=$f[0];
if ($s == 0)
{
$adds++;
$sql="INSERT INTO tovars VALUES (\"0\", \"$row[0]\", \"$row[1]\", \"$row[2]\", \"$row[3]\", \"$row[4]\", \"$row[5]\", \"$row[6]\",
\"$row[7]\", \"$row[8]\", \"$row[9]\", \"$row[10]\")";
} else
{
$sql="UPDATE tovars SET licens=\"$row[1]\", art=\"$row[2]\", true_name=\"$row[4]\",
god=\"$row[5]\", cat=\"$row[6]\", sub_cat=\"$row[7]\", new=\"$row[8]\", price=\"$row[9]\", opis=\"$row[10]\" WHERE diler=\"$row[0]\" AND name=\"$row[3]\"";
$readd++;
}
$zap++;
// echo $sql."<br>";
if (mysql_query($sql))
{
$import=true;
$msg="<font color=green>Файл <b>$csv_name</b> успешно импортирован</font>!";
} else
{
$msg="<font color=red>Ошибка импорта файла <b>$csv_name</b>!</font>";
}
} else { $msg="<font color=red>Ошибка импорта файла <b>$csv_name</b>! Не верный формат CSV!</font>";}
}
$zapis="Записей в файле: <b>".$zap."</b><br>";
$readds="Обнавлено в базе: <b>".$readd."</b><br>";
$addses="Добавлено в базу: <b>".$adds."</b><br>";
$delletes="Удалено: <b>".$dellete."</b><br>";
$errorses="Ошибок импорта: <b>".$errors."</b><br>";
$null="Пустых строк: <b>".$nulles."</b><br>";
}
}
if ($import)
{
$date=date("d.m.Y");
$time=date("H:i:s");
$sql="INSERT INTO upload_csv VALUE (\"0\", \"$csv_name\", \"$date\", \"$time\")";
mysql_query($sql);
}
?>
</td></tr><tr align="center"><td><br>
<table width="60%" cellpadding="5" cellspacing="1" border="1" bgcolor="#000000">
<tr bgcolor="#efefef">
<td colspan="2"><b>Внимание:</b> <?php echo $msg;?></b></td>
</tr>
<tr valign="top">
<td bgcolor="#ffffff" width="70%">
Список добавленых файлов:<br><BR>
<?php
$sql = "SELECT * FROM upload_csv ORDER BY id DESC";
$r=mysql_query($sql);
$num=mysql_num_rows($r);
while ($row=mysql_fetch_object($r))
{
$date=date("d.m.Y");
if ($row->date==$date)
{
echo "<li type=\"square\" style=\"color: #ffcc00\"><font color=\"#000000\">$row->file - загружен <b>Сегодня</b> в <b>$row->time</b><br>";
} else
{
echo "<li type=\"square\" style=\"color: #ffcc00\"><font color=\"#000000\">$row->file - загружен <b>$row->date</b> в <b>$row->time</b><br>";
}
}
echo "</td><td bgcolor=\"#ffffff\">
Отчет о импорте CSV:<br><br>
$zapis
$addses
$readds
$delletes
$errorses
$null
</td><tr>
</table>"
?>
</td></tr><tr align="center"><td>
<br>
<br>
<br>
<?php include "menu.php";?>
</tr></td></table> |
|
|