Med-Doc
Новичок
Переделка txt базы в MySQL
Объясню проблему. Загрузка текстовой базы требует долгого времени и много трафика. Поэтому я решил передалать сам запрос к категории с такого http://site.ru/index.php?cat=22 на такой http://site.ru/index.php?category=22&cat=%C3%EB%FE%EA%EE%EC%E5%F2%F0%FB
т.е это %C3%EB%FE%EA%EE%EC%E5%F2%F0%FB Значит название категории - Глюкометры. Вот скрипт файла index.php:
<?
//=================================================================================================================
require("config.php");
include ("header.htm");
//=================================================================================================================
?>
<?
//=================================================================================================================
// ВЫВОД СПИСКА КАТЕГОРИЙ ТОВАРОВ (МЕНЮ)
//=================================================================================================================
$fp = fopen ($dbcatlistfile,"r");
if (!$fp){echo "Ошибка!"; exit;};
$num_of_hidden = count($hidden_list) - 1;
while ($data = fgetcsv ($fp, 10000,"|"))
{
if (in_array($data[1], $hidden_list)==False)
{
print ("<a href=\"index.php?cat=$data[0]\" class=\"smalltext1\">$data[1]</a><br>");
};
};
fclose($fp);
//=================================================================================================================
?>
<?
//=================================================================================================================
// Закомментируйте ненужное:
// Категория по умолчанию
// if (($cat=="")&($product=="")) {$cat=$defaultcat;};
// Страница по умолчанию:
if (($cat=="")&($product=="")) {include("$startpage");};
//=================================================================================================================
// ВЫВОД ТОВАРОВ ЗАДАННОЙ КАТЕГОРИИ:
//=================================================================================================================
if ($cat!="")
{
$fp = fopen ($dbfile,"r");
if (!$fp){
echo "Не удается открыть базу данных. Приносим свои извинения, повторите попытку позже.";
exit;
};
$row=0;
while ($data = fgetcsv ($fp, 10000,"|"))
{
if ($data[6]=="$cat"){
$row++;
$name=$data[2];
$price=$data[3]*$comission;
$image=$data[4];
$description=substr($data[5], 0, $maxcharsindescription);
$size= GetImageSize($image);
if ($size[0]!=0){
$imagescale = $maximagesize/$size[0];
$size[0] = $size[0]*$imagescale;
$size[1] = $size[1]*$imagescale;
};
//Вывод названия категории:
if ($row==1) {print("<h3>$data[1]</h3><hr>");};
//Вывод описания товара:
print("<table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\">
<tr>
<td valign=\"top\"><a href=\"index.php?product=$data[0]\"><img src=\"$image\" width=\"$size[0]\" height=\"$size[1]\" border=\"0\" alt=\"$name\"></a></td>
<td valign=\"top\"><b><a href=\"index.php?product=$data[0]\" class=\"smalltext2\">$name</a><br>
<div align=\"right\"><a href=\"index.php?product=$data[0]\" class=\"smalltext2\">Подробнее | <b>ЗАКАЗАТЬ</b></a></div>
<a class=\"smalltext4\">$price руб.</a></b><br><br>
<a class=\"smalltext3\">$description...</a><br>
<br>
</td>
</tr>
</table>");
};
};
fclose($fp);
};
//=================================================================================================================
// ВЫВОД ОПИСАНИЯ ЗАДАННОГО ТОВАРА
//=================================================================================================================
if ($product!="")
{
$fp = fopen ($dbfile,"r");
if (!$fp){
echo "Не удается открыть базу данных. Приносим свои извинения, повторите попытку позже.";
exit;
};
while ($data = fgetcsv ($fp, 10000,"|"))
{
if ($data[0]=="$product")
{
$name=$data[2];
$price=$data[3]*$comission;;
$image=$data[4];
$size= GetImageSize($image);
$description=$data[5];
include("item_template.htm");
//Вывод описания товара:
//print("<img src=\"$image\" width=\"$size[0]\" height=\"$size[1]\" alt=\"$name\">");
//print("<br>");
//print("<h3>$name</h3>");
//print("<br>");
//print("<h4>$price руб.</h4>");
//print("$description");
//include("form.php");
};
};
fclose($fp);
};
//=================================================================================================================
?>
<?
//=================================================================================================================
include ("footer.htm");
//=================================================================================================================
?>
вот файл config.php
<?
//Конфигурационный файл магазина-клиента
//ОСНОВНЫЕ КОНСТАНТЫ
//полный путь до файла index.php (вида http://www.сервер/)
$path="http://site.ru";
//ID партнера:
$key=555;
//Файлы базы данных:
$dbfile = "http://site.ru/database.txt";
$dbcatlistfile = "http://site.ru/datacatlist.txt";
$dbrecomlistfile = "http://site.ru/recom_and_new.txt";
//Комиссия партнера (1.05 соответствует 5%):
$comission=1.05; // минимальное значение 1.01, максимальное - не ограничено
//Перечень рекомендуемых товаров и новинок:
$frec = fopen ($dbrecomlistfile,"r");if (!$frec){echo "Ошибка!"; exit;};
$datarec = fgetcsv ($frec, 10000,",");
$splist=$datarec;
$datarec = fgetcsv ($frec, 10000,",");
$nplist=$datarec;
fclose($frec);
//ДОПОЛНИТЕЛЬНЫЕ КОНСТАНТЫ
//Категории товаров, которые НЕ выводятся:
$hidden_list= array("Термометры","Люстры Чижевского","Барометры");
//Максимальная ширина фото товара при показе умегьшенного изображения:
$maximagesize = 80;
//Категория или страница, открываемая по умолчанию (для выбора см. index.php)
$defaultcat = "Глюкометры";
$startpage = "startpage.htm";
//Максимальное количество символов в предварительном описании товаров при выводе категории:
$maxcharsindescription = 255;
//Стили шрифтов (1 - меню, 2 - заголовки, 3 - описание, 4 - цена, 5 - новости)
?>
вот файл datacatlist.txt
22|Назв категории
32|Назв категории
33|Назв категории
34|Назв категории
35|Назв категории
и т.д.
вот файл database.txt
104|Название категории|описание|22
102|Название категории|описание|31
и т.д.
Объясню проблему. Загрузка текстовой базы требует долгого времени и много трафика. Поэтому я решил передалать сам запрос к категории с такого http://site.ru/index.php?cat=22 на такой http://site.ru/index.php?category=22&cat=%C3%EB%FE%EA%EE%EC%E5%F2%F0%FB
т.е это %C3%EB%FE%EA%EE%EC%E5%F2%F0%FB Значит название категории - Глюкометры. Вот скрипт файла index.php:
<?
//=================================================================================================================
require("config.php");
include ("header.htm");
//=================================================================================================================
?>
<?
//=================================================================================================================
// ВЫВОД СПИСКА КАТЕГОРИЙ ТОВАРОВ (МЕНЮ)
//=================================================================================================================
$fp = fopen ($dbcatlistfile,"r");
if (!$fp){echo "Ошибка!"; exit;};
$num_of_hidden = count($hidden_list) - 1;
while ($data = fgetcsv ($fp, 10000,"|"))
{
if (in_array($data[1], $hidden_list)==False)
{
print ("<a href=\"index.php?cat=$data[0]\" class=\"smalltext1\">$data[1]</a><br>");
};
};
fclose($fp);
//=================================================================================================================
?>
<?
//=================================================================================================================
// Закомментируйте ненужное:
// Категория по умолчанию
// if (($cat=="")&($product=="")) {$cat=$defaultcat;};
// Страница по умолчанию:
if (($cat=="")&($product=="")) {include("$startpage");};
//=================================================================================================================
// ВЫВОД ТОВАРОВ ЗАДАННОЙ КАТЕГОРИИ:
//=================================================================================================================
if ($cat!="")
{
$fp = fopen ($dbfile,"r");
if (!$fp){
echo "Не удается открыть базу данных. Приносим свои извинения, повторите попытку позже.";
exit;
};
$row=0;
while ($data = fgetcsv ($fp, 10000,"|"))
{
if ($data[6]=="$cat"){
$row++;
$name=$data[2];
$price=$data[3]*$comission;
$image=$data[4];
$description=substr($data[5], 0, $maxcharsindescription);
$size= GetImageSize($image);
if ($size[0]!=0){
$imagescale = $maximagesize/$size[0];
$size[0] = $size[0]*$imagescale;
$size[1] = $size[1]*$imagescale;
};
//Вывод названия категории:
if ($row==1) {print("<h3>$data[1]</h3><hr>");};
//Вывод описания товара:
print("<table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\">
<tr>
<td valign=\"top\"><a href=\"index.php?product=$data[0]\"><img src=\"$image\" width=\"$size[0]\" height=\"$size[1]\" border=\"0\" alt=\"$name\"></a></td>
<td valign=\"top\"><b><a href=\"index.php?product=$data[0]\" class=\"smalltext2\">$name</a><br>
<div align=\"right\"><a href=\"index.php?product=$data[0]\" class=\"smalltext2\">Подробнее | <b>ЗАКАЗАТЬ</b></a></div>
<a class=\"smalltext4\">$price руб.</a></b><br><br>
<a class=\"smalltext3\">$description...</a><br>
<br>
</td>
</tr>
</table>");
};
};
fclose($fp);
};
//=================================================================================================================
// ВЫВОД ОПИСАНИЯ ЗАДАННОГО ТОВАРА
//=================================================================================================================
if ($product!="")
{
$fp = fopen ($dbfile,"r");
if (!$fp){
echo "Не удается открыть базу данных. Приносим свои извинения, повторите попытку позже.";
exit;
};
while ($data = fgetcsv ($fp, 10000,"|"))
{
if ($data[0]=="$product")
{
$name=$data[2];
$price=$data[3]*$comission;;
$image=$data[4];
$size= GetImageSize($image);
$description=$data[5];
include("item_template.htm");
//Вывод описания товара:
//print("<img src=\"$image\" width=\"$size[0]\" height=\"$size[1]\" alt=\"$name\">");
//print("<br>");
//print("<h3>$name</h3>");
//print("<br>");
//print("<h4>$price руб.</h4>");
//print("$description");
//include("form.php");
};
};
fclose($fp);
};
//=================================================================================================================
?>
<?
//=================================================================================================================
include ("footer.htm");
//=================================================================================================================
?>
вот файл config.php
<?
//Конфигурационный файл магазина-клиента
//ОСНОВНЫЕ КОНСТАНТЫ
//полный путь до файла index.php (вида http://www.сервер/)
$path="http://site.ru";
//ID партнера:
$key=555;
//Файлы базы данных:
$dbfile = "http://site.ru/database.txt";
$dbcatlistfile = "http://site.ru/datacatlist.txt";
$dbrecomlistfile = "http://site.ru/recom_and_new.txt";
//Комиссия партнера (1.05 соответствует 5%):
$comission=1.05; // минимальное значение 1.01, максимальное - не ограничено
//Перечень рекомендуемых товаров и новинок:
$frec = fopen ($dbrecomlistfile,"r");if (!$frec){echo "Ошибка!"; exit;};
$datarec = fgetcsv ($frec, 10000,",");
$splist=$datarec;
$datarec = fgetcsv ($frec, 10000,",");
$nplist=$datarec;
fclose($frec);
//ДОПОЛНИТЕЛЬНЫЕ КОНСТАНТЫ
//Категории товаров, которые НЕ выводятся:
$hidden_list= array("Термометры","Люстры Чижевского","Барометры");
//Максимальная ширина фото товара при показе умегьшенного изображения:
$maximagesize = 80;
//Категория или страница, открываемая по умолчанию (для выбора см. index.php)
$defaultcat = "Глюкометры";
$startpage = "startpage.htm";
//Максимальное количество символов в предварительном описании товаров при выводе категории:
$maxcharsindescription = 255;
//Стили шрифтов (1 - меню, 2 - заголовки, 3 - описание, 4 - цена, 5 - новости)
?>
вот файл datacatlist.txt
22|Назв категории
32|Назв категории
33|Назв категории
34|Назв категории
35|Назв категории
и т.д.
вот файл database.txt
104|Название категории|описание|22
102|Название категории|описание|31
и т.д.