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 | ?> |