|
|
|
|
|
для: elenaki
(08.09.2005 в 13:13)
| | Спасибо, буду разбираться...А разбираться есть в чем, так как я только совсем недавно начал заниматься WEB-программированием. Если что - спрошу Вас :) | |
|
|
|
|
|
|
|
для: klopik
(08.09.2005 в 13:00)
| | отдаю бесплатно :)
тут форма выбора файла:
<form action="<? echo $thisfile."?step=uploadprice";?>" method="post" enctype="multipart/form-data" name="form">
<input type="Hidden" name="apopou" value="<? echo $apopou;?>">
<input type="Radio" name="tropos" value="minus"> Обновить
<input type="Radio" name="tropos" value="plus"> Добавить
<input type="File" name="file2"><br><br>
<input type="Reset" value="Clear">
<input type="Submit" value="Enter">
</form>
|
тут код собственно загрузки. вам даже не нужно, чтоб на сервере была разрешена загрузка файлов (многие хостеры это запрещают или надо долго упрашивать, чтоб разрешили). единственное, что вам нужно, это подогнать скрипт под структуру вашего прайса. т.к. в моем случае прайс приходил с многочисленными ошибками, то у меня много места уделено замене символов. также удаляются строки, в которых цена оказалась пустым местом. вам это может не понадобиться.
вот код:
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
(08.09.2005 в 12:42)
| | Мне нужна в данном случае старая база прайсов! Пусть все затирается и заполняется вновь! Может есть какое-то готовое решение? Я бы купил за 50уе! А то заново изобретать велосипед...:( | |
|
|
|
|
|
|
|
для: cheops
(08.09.2005 в 12:38)
| | у меня было так - менеджер конвертит эксель-файл в csv и загружает его на сервер с помощью скрипта РНР (открытие файла, чтение, запись в базу, закрытие файла). в одном варианте сделала даже загрузку сразу двух файлов-таблиц. если делается полное обновление, то проблем нет - старое затирается новым. можно сделать и так, что новое добавляется к старому, но тут есть опасность дублей. у меня было два прайса - в одном очень много позиций и они обновлялись часто, их мы затирали, каждый раз писали поверх старого. а в другом - мало позиций и они почти не менялись. в него мы добавляли. | |
|
|
|
|
|
|
|
для: klopik
(08.09.2005 в 11:44)
| | Лучше, если менеджер сразу сохранит Excel-файл в CSV, так как конвертить его средствами PHP задача не тривиальная. | |
|
|
|
|
|
|
|
для: Seo
(08.09.2005 в 11:53)
| | А второй вариант почему не проще - чтобы пользователь в режиме онлайн менял поля в БД? Тогда не надо писать обработчик для CSV! Я не прав? | |
|
|
|
|
|
|
|
для: klopik
(08.09.2005 в 11:44)
| | Первый вариант намного лучше, хотя бы с точки зрения стратегического мышления. В дальнейшем вы уже будете иметь базу данных цен на товары. К тому же, надежнее и удобнее хранить всю информацию в структурированном виде. | |
|
|
|
|
|
|
| Меня попросили сделать следующее:
Цель такая: Сделать обновляемый прайс на сайте. Чтобы пользователь(менеджер) заходил и обновлял прайс - менял/удалял/добавлял записи.
Структура таблицы прайс-листа самая примитивная - товар-цена1-цена2-цена3.
Как я думаю это можно реализовать:
1) MySQL. Менеджер закачивает(upload) ексельный файл на сайт. Там он при помощи PHP конвертится в CSV, далее разносится по полям в MySQL, оттуда уже выплевывается в HTML на сайт.
2) MySQL+PHPmyAdmin. Менеджер заходит через PHPmyAdmin в MySQL, там меняет всю базу, потом обработчик на PHP выплевывает это все опять же на сайт.
3) Без MySQL. Менеджер загружает ексельный файл, PHP конвертит его в CSV, потом при помощи PHP мы сразу его выплевываем в виде HTML.
Как правильно? Ни разу так не делал, а тут понадобилось...
Подскажите плиз! | |
|
|
| |
|