Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: прайс-лист
 
 автор: andrew2006   (06.12.2006 в 10:10)   письмо автору
 
 

Есть прайс-лист след. вида:

БЫТОВЫЕ ЭЛЕКТРОПРИБОРЫ
БытЭлектроПриборы
Зернодробилка "Фермер" ИЗ-14 (300 кг/ч) 2 200,00 руб.
Зернодробилка КАЖИ Ставрополь 1 400,00 руб.
ЗАП ЧАСТИ К БЫТ ХОЛОД ОБОРУДОВАНИЮ
Испарители бытовые
Бирюса-2 без отс.тр. (2) 610,00 руб.
Испаритель Бирюса-2 с отс.тр. (1) 700,00 руб.

Хочу вывести на сайте основные категории, такие как БЫТОВЫЕ ЭЛЕКТРОПРИБОРЫ, ЗАП ЧАСТИ К БЫТ ХОЛОД ОБОРУДОВАНИЮ и тд. Чтобы выводилось все что находится в ней ессно. Как это реализовать?
Допустим можно показать программе что если в поле price пусто, то значит это категория. Хорошо. Как быть с подкатегориями?

За основу взял скрипт Elenaki:

if ($tropos == "minus") { //удалим старые записи
$query0 = "DELETE FROM poul_price where apopou = '$apopou'"; //условие where вам тут не нужно
$result0 = @mysql_query($query0) or die("$query0<b>failed!</b><br>".mysql_error());
}
ini_set("max_execution_time",999999); // добавим времени на выполнение скрипта

$filename = $file2;
// открываем
$file = fopen($filename, "r");
// читаем
$buffer = fread($file, filesize($filename));
// закрываем
fclose($file);

//echo $buffer; // это для проверки того, что прочитали

// делаем массив из строки данных (у меня полей много, измените под свой прайс)
$file_array = explode("\n", $buffer);
//начало перебора массива
foreach ($file_array as $line_num => $line) {
if (($line[0] !="") || ($line[0] !='ID')|| ($line[0] !=" ")) {
//разбиваем строки на поля и формируем запрос
$line_exp = explode("\t", $line);
// в след. строках идет замена ненужных символов в тех полях, где они могут встретиться, тоже меняйте на свои
$line_exp[1] = str_replace("€","",$line_exp[1]); // ' -> \'
$line_exp[1] = trim($line_exp[1]);
$line_exp[1] = str_replace(".","",$line_exp[1]);
$line_exp[1] = str_replace(",",".",$line_exp[1]);

$line_exp[4] = str_replace("'","\\'",$line_exp[4]); // ' -> \'
$line_exp[4] = str_replace("\"","''",$line_exp[4]);// " -> ''
$line_exp[4] = str_replace("\n","",$line_exp[4]);

$line_exp[5] = str_replace("'","\\'",$line_exp[5]);
$line_exp[5] = str_replace("\"","''",$line_exp[5]);
$line_exp[5] = str_replace("\n","",$line_exp[5]);

$line_exp[6] = str_replace("'","\\'",$line_exp[6]);
$line_exp[6] = str_replace("\"","''",$line_exp[6]);
$line_exp[6] = str_replace("\n","",$line_exp[6]);

$line_exp[7] = str_replace("'","\\'",$line_exp[7]);
$line_exp[7] = str_replace("\"","''",$line_exp[7]);
$line_exp[7] = str_replace("\n","",$line_exp[7]);

$line_exp[8] = str_replace("'","\\'",$line_exp[8]);
$line_exp[8] = str_replace("\"","''",$line_exp[8]);
$line_exp[8] = str_replace("\n","",$line_exp[8]);

$sqlquery = 'INSERT INTO poul_price VALUES ('; // здесь изменить имя таблицы
/// здесь - имена полей
$sqlquery .= '"' .$line_exp[0] . '"'; // id
$sqlquery .= ',"'.$line_exp[1] . '"'; //price
$sqlquery .= ',"'.$line_exp[2] . '"'; // offer
$sqlquery .= ',"'.$line_exp[3] . '"'; //availab
$sqlquery .= ',"'.$line_exp[4]. '"'; //famcat
$sqlquery .= ',"'.$line_exp[5]. '"'; //subcat
$sqlquery .= ',"'.$line_exp[6]. '"'; //manuf
$sqlquery .= ',"'.$line_exp[7]. '"'; //marka
$sqlquery .= ',"'.$line_exp[8]. '"'; //descr
$sqlquery .= ',"'.$line_exp[9]. '"'; //retprice
$sqlquery .= ',"0"'; //kerdos
$sqlquery .= ',"N"'; //eshop
$sqlquery .= ',"'.$apopou.'"'; // apopou

$sqlquery .= ')';
//echo $sqlquery; для проверки составленного запроса
$result = mysql_query($sqlquery) or die(" $sqlquery <b>failed!</b><br>".mysql_error());
}
}
// удаление строк с нулевой ценой или пустым id
$query2 = "delete from poul_price where id='' OR price=0";
$result2 = mysql_query($query2);

   
 
 автор: elenaki   (06.12.2006 в 10:29)   письмо автору
 
   для: andrew2006   (06.12.2006 в 10:10)
 

дело в том, что в моем варианте категории и подкатегории были записаны в каждой строке.
т.е. если есть товар (строка), в этой строке, кроме описания самого товара и его цен, есть
и категории с подкатегориями. конечно, это дублирование информации. но не было смысла
делать отдельные таблицы с категориями и подкатегориями, т.к. прайс часто менялся, почти
каждый день. легче удалить 5 тыс. позиций из одной таблицы и записать новые 5 тыс. в нее
же, чем искать соответствия категорий в других таблицах, дополнять их или чистить от
несуществующих категорий... если хотите пользоваться моим скриптом, надо привести
прайс к виду:

БЫТОВЫЕ ЭЛЕКТРОПРИБОРЫ | БытЭлектроПриборы | Зернодробилка "Фермер" ИЗ-14 (300 кг/ч) | 2 200,00 руб.
БЫТОВЫЕ ЭЛЕКТРОПРИБОРЫ | БытЭлектроПриборы | Зернодробилка КАЖИ Ставрополь | 1 400,00 руб.
ЗАП ЧАСТИ К БЫТ ХОЛОД ОБОРУДОВАНИЮ | Испарители бытовые | Бирюса-2 без отс.тр. (2) | 610,00 руб.
ЗАП ЧАСТИ К БЫТ ХОЛОД ОБОРУДОВАНИЮ | Испарители бытовые | Испаритель Бирюса-2 с отс.тр. (1) | 700,00 руб.

   
 
 автор: andrew2006   (06.12.2006 в 12:40)   письмо автору
 
   для: elenaki   (06.12.2006 в 10:29)
 

ok

   
 
 автор: elenaki   (06.12.2006 в 13:30)   письмо автору
 
   для: andrew2006   (06.12.2006 в 12:40)
 

//разбиваем строки на поля и формируем запрос
$line_exp = explode("\t", $line);


поля разделяются символом табуляции

   
 
 автор: Andrew2006   (06.12.2006 в 13:54)   письмо автору
 
   для: andrew2006   (06.12.2006 в 12:40)
 

Извиняюсь, просто туплю. Все решил.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования