у меня там сложнее принцип.. у меня динамически создаются поля.. но вам оно не надо

Вот упрощенный вариант. разберётесь ..
Код
function Product() {
global $prefix, $db, $admin_file;
include ("header.php");
OpenTable();
GraphicAdmin();
echo "<center><font class='title'><b>Продукция</b></font></center>";
echo "<br>";
echo "<form enctype=\"multipart/form-data\" action=\"admin.php\" method=\"post\" style=\"display: inline\">";
echo "Загрузить файлы структуры(<b>Strukt.csv</b>) и товара(<b>Price.csv</b>)<br><input name=\"userfile\" type=\"file\" style=\"width=450px\">";
echo "<input type=\"hidden\" name=\"module\" value=\"Product\">
<input type=\"hidden\" name=\"op\" value=\"Product_upload\">
<input type=\"submit\" value=\"Добавить товар...\"></form>";
CloseTable();
include ("footer.php");
}
function Product_upload() {
global $prefix, $db, $admin_file, $module_name;
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
$f_name = explode(".",$_FILES['userfile']['name']);
$extension = strtolower($f_name[1]);
if ($extension != "csv") {
$eror_text = "Вы пытаетесь загрузить не разрешенный тип файла!";
exit;
}
$realname = $_FILES['userfile']['name'];
$res = copy($_FILES['userfile']['tmp_name'], "upload/$realname");
if (!$res) { echo "Eror Upload file"; exit; }
$path_real = "upload/$realname";
$fileprice = $path_real;
$f_name = explode(".",$realname);
$nameprice = strtolower($f_name[0]);
$f= fopen("$fileprice","r") or die("ошибка");
for ($i=0; $data=fgetcsv($f,1000, ";"); $i++){
$num= count($data);
if ($num==1 && $data[0]==="") continue;
$crt ="";
for ($a=0; $a<$num; $a++){
$crt .= ", name".($a+1)." varchar(255)";
}
}
fclose($f);
$sql = $db->sql_query("TRUNCATE TABLE ".$prefix."_mprice_".$nameprice."");
//$result=$db->sql_query("CREATE TABLE ".$prefix."_mprice_".$nameprice." ( `aid` int(11) NOT NULL auto_increment ".$crt.", PRIMARY KEY (aid))");
include ("header.php");
OpenTable();
GraphicAdmin();
echo "<center><font class='title'><b>Продукция</b></font></center>";
echo "<br>";
//echo "<b>Создана таблица в Mysql <font color=blue>".$prefix."_mprice_".$nameprice."</font> (".($num+1)." полей)</b><br>";
//echo "<code>\$result=\$db->sql_query(\"CREATE TABLE ".$prefix."_mprice_".$nameprice." ( `aid` int(11) NOT NULL auto_increment ".$crt.", PRIMARY KEY (aid))\");</code><br><br>";
$f= fopen("$fileprice","r") or die("ошибка");
for ($i=0; $data=fgetcsv($f,1000, ";"); $i++){
$num= count($data);
if ($num==1 && $data[0]==="") continue;
echo "<br>";
echo "<b>Импортироана строка номер ".($i+1)." (".($num+1)." полей):</b><br>";
$echoins = "\$result2=\$db->sql_query(\"INSERT INTO ".$prefix."_mprice_".$nameprice." VALUES (NULL, ";
$ins = "";
for ($c=0; $c<$num; $c++){
if($c==$num-1){
$echoins .= "' ".str_replace("'", "", $data[$c])." '";
$ins .= "' ".str_replace("'", "", $data[$c])." '";
}else {
$echoins .= "' ".str_replace("'", "", $data[$c])." ', ";
$ins .= "' ".str_replace("'", "", $data[$c])." ', ";
}
}
$echoins .= ")\");";
echo "<code>$echoins</code><br>";
$result2=$db->sql_query("INSERT INTO ".$prefix."_mprice_".$nameprice." VALUES (NULL, ".$ins.")");
}
fclose($f);
@unlink($fileprice);
}
CloseTable();
include("footer.php");
}
Если раскомментровать код там, то таблицы и создадутся сами.. с именем префикс_mprice_имя_файла
это, повторяю - админка..
В данном случае создаются таблицы категорий и самой продукции.. как их потом выводить пользователю это уже писать не стану.. ибо просто..
Примерный результат можно увидеть вот тут:
http://choco-land.ru/prodcat8.html