Каталог товаров
name " . $_FILES['userfile']['name'] .
"
type " . $_FILES['userfile']['type'] .
"
size " . $_FILES['userfile']['size'] .
"
tmp_name " . $_FILES['userfile']['tmp_name'] .
"
error " . $_FILES['userfile']['error'] ;
$tmp_name = $_FILES['userfile']['tmp_name'];
move_uploaded_file($tmp_name, "tmp/" . $_FILES['userfile']['name']);
$prise = file_get_contents("tmp/" . $_FILES['userfile']['name']);
$prise = trim ($prise);
// echo "
$prise";
echo "
";
include ("db-config.php") ;
$m_prise = explode(chr(13).chr(10), $prise);
// ПРОВЕРКА НА НАЛИЧИЕ НЕДОПУСТИМЫХ СИМВОЛОВ
for ($i = 1; $i < count ($m_prise); $i++)
{
$n_zagr ++;
unset($m_str); // Удаление массива
$m_str = explode(";", $m_prise[$i]);
$producer = $m_str[0];
$artikul = $m_str[1];
$name_tov = $m_str[2];
$cena = $m_str[3];
$kol = $m_str[4];
$producer_utf8 = iconv('cp1251', 'utf-8', $producer);
$artikul_utf8 = iconv('cp1251', 'utf-8', $artikul);
$name_tov_utf8 = iconv('cp1251', 'utf-8', $name_tov);
$cena_utf8 = iconv('cp1251', 'utf-8', $cena);
$kol_utf8 = iconv('cp1251', 'utf-8', $kol);
$n_str_err = ($i+1);
// Проверка изготовителя
if (strstr ($producer, "`"))
{
$producer = str_replace ("`", " ", $producer);
$m_prise[$i] = "$producer;$artikul;$name_tov;$cena;$kol";
//echo "
Удален запрещеный знак ` в названии изготовителя в строке $n_str_err: $producer_utf8 $artikul_utf8 $name_tov_utf8 $cena_utf8 $kol_utf8";
}
if (strstr ($producer, "'"))
{
$producer = str_replace ("'", " ", $producer);
$m_prise[$i] = "$producer;$artikul;$name_tov;$cena;$kol";
//echo "
Удален запрещеный знак ' в названии изготовителя в строке $n_str_err: $producer_utf8 $artikul_utf8 $name_tov_utf8 $cena_utf8 $kol_utf8";
}
//echo "
$i " . strlen ($producer) . " " . $producer;
if (strlen ($producer) >= 59)
{
$flag_err = "YES";
echo "
Слишком длинное название изготовителя в строке $n_str_err: Изготовитель $producer_utf8
Длина названия изготовителя должна быть не более 60 знаков с пробелами. ";
}
// Проверка артикула. Только цифры и буквы латинского алфавита, а также пробелы, точки, тире или слеш
if ($artikul != ereg_replace("[^-a-zA-Z0-9/. ]", "", $artikul))
{
$flag_err = "YES";
echo "
Ошибка артикула в строке $n_str_err: Артикул $artikul_utf8 ";
}
// Проверка названия товара
if (strstr ($name_tov, "`"))
{
$name_tov = str_replace ("`", " ", $name_tov);
$m_prise[$i] = "$producer;$artikul;$name_tov;$cena;$kol";
//echo "
Удален запрещеный знак ` в названии товара в строке $n_str_err: $producer_utf8 $artikul_utf8 $name_tov_utf8 $cena_utf8 $kol_utf8";
}
if (strstr ($name_tov, "'"))
{
$name_tov = str_replace ("'", " ", $name_tov);
$m_prise[$i] = "$producer;$artikul;$name_tov;$cena;$kol";
//echo "
Удален запрещеный знак ' в названии товара в строке $n_str_err: $producer_utf8 $artikul_utf8 $name_tov_utf8 $cena_utf8 $kol_utf8";
}
// Проверка цены. Только цифры
if ($cena != preg_replace('/\D/', '', $cena))
{
$flag_err = "YES";
echo "
Ошибка цены в строке $n_str_err: Цена $cena_utf8 ";
}
// Проверка количества. Только цифры
if ($kol != preg_replace('/\D/', '', $kol))
{
$flag_err = "YES";
echo "
Ошибка количества в строке $n_str_err: Количество $kol_utf8";
}
}
if ($flag_err) die ("
Загрузка данного прайс листа невозможна до исправления ошибок");
echo "
str 129
";
// Зафиксируе количество товара в каталоге до загрузки
unset($res);
unset($n_tov_old);
$res = mysql_query("SELECT COUNT(id) AS cnt FROM kattov");
$n_tov_old = mysql_result($res, 0, 'cnt');
$query = "INSERT INTO kattov (producer, artikul, name_tov, cena, kol)" . chr(13).chr(10) .
"VALUES" . chr(13).chr(10);
for ($i = 1; $i < count ($m_prise); $i++)
{
unset($m_str); // Удаление массива
$m_str = explode(";", $m_prise[$i]);
$producer = $m_str[0];
$artikul = $m_str[1];
$name_tov = $m_str[2];
$cena = $m_str[3];
$kol = $m_str[4];
$producer = iconv('cp1251', 'utf-8', $producer);
$name_tov = iconv('cp1251', 'utf-8', $name_tov);
// ('Газмяс', 'XYZ', 'Тушенка', '200', '600'),
$query .= chr(9) . "('$producer', '$artikul', '$name_tov', $cena, $kol)," . chr(13).chr(10);
}
$query = trim ($query);
$query = trim ($query, ",");
$query .= chr(13).chr(10) . "ON DUPLICATE KEY UPDATE cena = VALUES(cena), kol = VALUES(kol);";
mysql_query($query);
echo mysql_errno()." 175 : ".mysql_error()."
";
file_put_contents("query.txt", $query);
// Подсчитаем количствто товара после загрузки
unset($res);
unset($n_vse_new);
$res = mysql_query("SELECT COUNT(id) AS cnt FROM kattov");
$n_tov_new = mysql_result($res, 0, 'cnt');
echo "
Товаров в каталоге до загрузки $n_tov_old
Товаров в каталоге после загрузки $n_tov_new";
echo "
Загружено товаров " . ($n_tov_new - $n_tov_old);
echo "
Обновлено товаров " . (count ($m_prise) - 1 - $n_tov_new + $n_tov_old);
// КОНТРОЛЬ ВРЕМЕНИ ИСПОЛНЕНИЯ
list($usec, $sec) = explode(" ", microtime());
$finich = $sec + $usec;
$t_isp = (round (100*($finich - $start)))/100 ;
echo "
Время исполнения $t_isp сек.
";
$mem_pik = round (memory_get_peak_usage() / 1000);
echo "
Пиковое потребление памяти $mem_pik Кб.
";
?>