<?php
$db['host']='localhost';
$db['user']='***';
$db['pass']='****';
$db['db']='****';
$table='products';
$maincat='1';
$visible_true='1';
$visible_false='0';
$dat = date("y-m-d H-i-s");
$conn=@mysql_connect($db['host'],$db['user'],$db['pass']) or die("Error db");
$db=@mysql_select_db($db['db']) or die("Error db");
$thumb=file("file.txt");
foreach($thumb as $key=>$val)
{
$ln = explode(";",$val);
$ln[0] = strip_tags(trim($ln[0])); //наименование
$ln[1] = strip_tags(trim($ln[1])); //код
$ln[2] = strip_tags(trim($ln[2])); //розница
$ln[3] = strip_tags(trim($ln[3])); //мелкотп
$ln[4] = strip_tags(trim($ln[4])); //опт
$ln[5] = strip_tags(trim($ln[5])); //гарантия
$ln[6] = strip_tags(trim($ln[6])); //остаток
$sql="SELECT * FROM `$table` WHERE `product_code`='$ln[1]'";
$results=mysql_query($sql) or die ("<p>error sql ($sql)</p>");
$arr=mysql_fetch_array($results);
if ($arr['product_code'] == '')
{
mysql_query("INSERT INTO `$table` (name,categoryID,title,product_code,price,small_opt_price,opt_price,warranty,in_stock,enabled,date_added) VALUES ('".$ln[0]."','".$maincat."','".$ln[0]."','".$ln[1]."','".$ln[2]."','".$ln[3]."','".$ln[4]."','".$ln[5]."','".$ln[6]."','".$visible_true."','".$dat."')");
}
else
{
$sql=mysql_query("UPDATE `$table` SET `name`='$ln[0]', `title`='$ln[0]', `enabled`='$visible_true', `price`='$ln[2]', `small_opt_price`='$ln[3]', `opt_price`='$ln[4]', `warranty`='$ln[5]', `in_stock`='$ln[6]', `date_modified`='$dat' WHERE (`product_code`='$ln[1]')");
}
}
?>
импорт из текстового файла в sql
Код:
Не могу дописать чтоб если кода в файлике нету, но в базе позиция числиться то изменить поле enabled на 0. Писал условия но результата желаемого не получил.
Если я код из файлика удаляю то никаких изменений в базе нету, дата модификации стоит та которая была последний раз.
Кто может подсказать? Не могу понять какое условие нужно написать.
UPDATE `$table` SET `enabled`=0 //для всех строк!
И как-то вы очень смело делите строку по ;. Лучше, наверное, использовать функцию str_getcsv() - чтоб учитывать возможность разделителя внутри кавычек и возможность экранирования.