View difference between Paste ID: hWWWqETi and 3dNpGyed
SHOW: | | - or go back to the newest paste.
1-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
1+
2
//подключиться к БД
3
$hostname = "localhost";
4-
$hostname = "";
4+
$username = "user";
5-
$username = "";
5+
$password = "pwd";
6-
$password = "";
6+
$dbName = "<=";
7-
$dbName = "";
7+
$tableName = "<=";
8-
$tableName = "j25_virtuemart_products_ru_ru";
8+
$tablePrice = "<=";
9-
$tablePrice = "j25_virtuemart_product_prices";
9+
$tableProducts = "<=";
10-
$tableProducts = "j25_virtuemart_products";
10+
11
//подключение к SQL и DB или выдаем ошибку
12-
//подключение к SQL и DB
12+
13
mysql_select_db($dbName) or die(mysql_error());
14
// подключено
15
16
17-
//для нормальной записи в MySQL(русские символы)
17+
18-
@mysql_query("Set charset cp1251");
18+
19-
@mysql_query("Set character_set_client = cp1251");
19+
20-
@mysql_query("Set character_set_connection = cp1251");
20+
21-
@mysql_query("Set character_set_results = cp1251");
21+
22-
@mysql_query("Set collation_connection = cp1251_general_ci");
22+
23
// считываем файл
24
$file_array = file("file_from_1c.csv");
25
if(!$file_array){
26
	echo("Error reading file");
27
}
28
else{
29
// выполняем цикл до конца файла(count();)
30
	for($i=0; $i<count($file_array); $i++){
31
	
32
//  	разделяем list(); на столбцы split(); "\t" == табуляцией до конца файла $file_array[$i]
33-
$file_array = file("название_файла_лежит_рядом");
33+
34
// 	переменная в нормальном виде существует только внутри цикла for(????да)
35
		list($f_id, $f_name) = split("\t", $file_array[$i]);
36
		
37
// 		в переменную идет строка из sql 
38
		$res = mysql_query("SELECT product_idб product_name FROM $tableName WHERE product_id='$f_id'"); 
39
// 		разбивает целую строку на необходимые(существующие в базе данных) столбцы
40
// 		присваиваем данные переменным
41
		while($row = mysql_fetch_array($res)){
42
			$db_id = $row['product_id'];
43
			$db_name=$row['product_name'];
44-
		list($f_id, $f_name, $f_price, $f_in_stock) = split("\t", $file_array[$i]);
44+
45
		
46-
		$res = mysql_query("SELECT * FROM $tableName WHERE virtuemart_product_id='$f_id'"); 
46+
47
		if($db_id==$f_id){
48-
			$db_id = $row['virtuemart_product_id'];
48+
// 			проверка наименования
49
			if($db_name==$f_name){
50
// 			записываем все что обновили в файл.
51
				$eah = $db_id."\t".$db_name." == ".$f_id."\t".$f_name."\n";
52
				$test1 = fwrite($file_write3, $eah); // Запись в файл
53
				if ($file_write3) $allCurrent = 'update price and write sucsses ID+NAME to logSucsses.<br/>';
54
				else echo 'ERROR! cant write in file.';
55
			}else{
56-
				$eah = $db_id." ".$db_name." == ".$f_id." ".$f_name."\n";
56+
57
				$noName =  "name-> ".$db_id."\t". $db_name. "!=" .$f_id."\t ".$f_name."\n";
58
				$test2 = fwrite($file_write, $noName); // Запись в файл
59
				if ($file_write) $diffName = 'product without current Name write to logNoName.<br/>';
60-
// 			обносление существующих позиций НЕ создает новые
60+
61-
// 			добавить колличество товаров? product_in_stock
61+
62-
// 			при этом сбросить на 0 колличество заказанных товаров? product_ordered
62+
63-
 				mysql_query("UPDATE $tablePrice SET product_price='$f_price' WHERE virtuemart_product_id=$f_id") or DIE(mysql_error());
63+
// 		если Код из фалйа не найден в ДБ
64-
 				mysql_query("UPDATE $tableProducts SET product_in_stock = '$f_in_stock', product_ordered = '0', published = '1' WHERE virtuemart_product_id=$f_id") or DIE(mysql_error());
64+
			$noId = $f_id."\t".$f_name."\t нет в базе данных"."\n";
65
			$test3 = fwrite($file_write2, $noId); // Запись в файл
66
			if ($file_write2) $diffCode = 'product without current ID write to logNoId.<br/>';
67-
				$noName =  $f_id."\t".$f_name."\n";
67+
68
		}
69
	}//конец цикла for
70
	echo "YРА! Цены обновлены! В логах можно найти что было обновлено, а что нет<br>";
71-
//					убирать с публикации товары с НеПравильным названием?
71+
72-
				mysql_query("update $tableProducts set published = '0' where product_sku = $f_id");
72+
73
//Закрытие файла
74
fclose($file_write); 
75-
// 		если Код из БД не найден в файле
75+
76-
// 		вывести все что не совпадает, вставить. ВНИМАНИЕ убрать с публикации(может требоваться изменить перед публикацией в магазине)
76+
77-
			$noId = $f_id."\t".$f_name."\n";
77+
78
mysql_close($connect);
79
?>