air1on
Новичок
Здравствуйте! Есть скрипт, которые сравнивает артикула в xls файле с артикулами в базе на сайте, и в зависимости от данных проставляет статус наличия! Все бы хорошо, но один поставщик стал добавлять в колонку с наличием - СЛОВО. И получается, что скрипт не может нормально работать т.к в колонке содержится СЛОВО. Помогите пожалуйста обойти этот момент!!!
PHP:
<?php
include("admin/libs/settings.php");
define ("PREFIX", $dbprefix );
include("admin/libs/func.php");
include("includes/functions.php");
require_once('PHPExcel/PHPExcel.php');
$db = new DB($dbhost, $dbuser, $dbpass, $dbname);
$db->Query("SET NAMES 'UTF8'");
function getXls() {
return PHPExcel_IOFactory::load("/var/www/vhosts/yourlamp.ru/httpdocs/sync_storage/favourite.xls");
}
function getArticleInfo($xls) {
$a = array(); $b = array();
$s = ""; $f = false;
$sheet = $xls->getActiveSheet();
$i = 1;
while(true) {
$cell = $sheet->getCell("A$i");
$i++;
if ($cell == null) {
continue;
}
$v = $cell->getFormattedValue();
if (empty($v) && $i > 15)
break;
if ($v === "Номенклатура") {
$f = true;
continue;
}
if ($f) {
$j = $i-1;
$q = $sheet->getCell("B$j")->getFormattedValue();
if (empty($q) || intval($q) == 0) {
$b[] = $v;
}
else {
$a[] = $v;
}
}
}
if (empty($a) && empty($b))
exit;
return array('in_stock' => $a, 'out_of_stock' => $b);
}
function strbetween($str, $left, $right, $p1 = 0) {
$p1 = strpos($str, $left, $p1);
if ($p1 === false)
return 0;
$p1 += strlen($left);
$p2 = strpos($str, $right, $p1);
if ($p2 === false)
return 0;
return array(substr($str, $p1, $p2-$p1), $p1);
}
function updateStatus($entity, $status = 3) {
global $db;
if (intval($entity['on_sclad']) !== $status) {
$id = $entity['id'];
$db->Query("update ".PREFIX."_tovars set on_sclad='$status' where id='$id'");
}
}
$xls = getXls();
if (empty($xls))
exit;
$articles = getArticleInfo($xls);
$res = $db->Query("select id, code, on_sclad, brand_id from ".PREFIX."_tovars where brand_id='24'")->_result;
$matched = array();
$missing = array();
$out_of_stock = array();
while($row = mysql_fetch_assoc($res)) {
if (in_array($row['code'], $articles['in_stock'])) {
updateStatus($row, 1);
$matched[] = $row['code'];
}
else if (in_array($row['code'], $articles['out_of_stock'])) {
updateStatus($row);
$out_of_stock[] = $row['code'];
}
else {
updateStatus($row);
$missing[] = $row['code'];
}
}
$new = array_diff(array_merge($articles['in_stock'], $articles['out_of_stock']), array_merge($matched, $out_of_stock));
$msg = "Артикулы, отсутствующие на сайте, но присутствующие в файле поставщика:\r\n----------------\r\n";
$msg .= implode("\r\n", $new) . "\r\n----------------\r\n";
$msg .= "Артикулы, присутствующие на сайте, но отсутствующие в файле поставщика:\r\n----------------\r\n";
$msg .= implode("\r\n", $missing) . "\r\n----------------\r\n";
$msg .= "Артикулы, присутствующие на сайте, но отсутствующие в наличии у поставщика:\r\n----------------\r\n";
$msg .= implode("\r\n", $out_of_stock);
$header = "Content-Type: text/plain; charset=UTF-8";
mail('[email protected]', "Отчет об артикулах поставщика Favourite", $msg, $header);
?>