|
|
|
| Задача следующая:
Сортировка по производителю в определённой группе товаров.
Для ввода производителя своя таблица:
=========================================
# Table structure for table 'firm'
CREATE TABLE `firm` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`pict` varchar(100) NOT NULL default '',
`ord` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
=========================================
В администрировании при вводе нового товара выподающие меню с выбором производителя:
=========================================
# Table structure for table 'wares'
CREATE TABLE `wares` (
`id` int(10) unsigned NOT NULL auto_increment,
`lang` char(2) NOT NULL default '',
`id_type` int(10) unsigned NOT NULL default '0',
`id_subtype` int(10) unsigned NOT NULL default '0',
`title` varchar(255) NOT NULL default '',
`prev1` varchar(100) NOT NULL default '',
`popup1` varchar(100) NOT NULL default '',
`descr` text NOT NULL,
`price` float NOT NULL default '0',
`date` date NOT NULL default '0000-00-00',
`ord` int(10) unsigned NOT NULL default '0',
`made` varchar(100) NOT NULL default '',
`title_foto` varchar(100) NOT NULL default '',
`prev_foto` varchar(100) NOT NULL default '',
`popup_foto` varchar(100) NOT NULL default '',
`stitle` varchar(100) NOT NULL default '',
`title1` varchar(255) NOT NULL default '',
`title2` varchar(255) NOT NULL default '',
`title3` varchar(255) NOT NULL default '',
`title4` varchar(255) NOT NULL default '',
`title5` varchar(255) NOT NULL default '',
`title6` varchar(255) NOT NULL default '',
`title7` varchar(255) NOT NULL default '',
`title8` varchar(255) NOT NULL default '',
`title9` varchar(255) NOT NULL default '',
`id_firm` int(10) unsigned NOT NULL default '0',
`size` varchar(100) NOT NULL default '',
`id_foto` int(10) unsigned NOT NULL default '0',
`nal` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
=========================================
Есть таблица в которой создаются группы товаров:
=========================================
# Table structure for table 'subtypes'
CREATE TABLE `subtypes` (
`id` int(10) unsigned NOT NULL auto_increment,
`id_type` int(10) unsigned NOT NULL default '0',
`title` varchar(255) NOT NULL default '',
`descr` text NOT NULL,
`ord` int(10) unsigned NOT NULL default '0',
`logoprev` varchar(100) NOT NULL default '',
`title_ru` varchar(100) NOT NULL default '',
`title_lv` varchar(100) NOT NULL default '',
`prev` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
=========================================
На странице выподающие меню со всеми производителями:
============================================
/ start SORT
echo " <table width=\"173\" align=\"center\" border=\"0\">\n";
echo " <tr>\n";
echo " <td class=gray align=right>" .$LNG['WARES_VIBOR']. "</td>\n";
echo " <td class=gray><select name=name onChange=location.href=this.options[selectedIndex].value >\n";
$query = "SELECT id, name FROM firm ORDER BY name";
if($name = mysql_query($query))
{
while(list($id, $id_firm)=mysql_fetch_array($name))
{
echo "<option value=\"index.php?lang=$lang&p=$p&id_type=$id_type&id_subtype=$id_subtype&id_firm=$id\" >" . $id_firm . "</option>";
}
} else puterror("error");
echo " </select></td>\n";
echo " </table>";
//end SORT
============================================
Проблема в том, что в любой группе товаров выводится полный список всех производителей,
а надо только тех, которые присутствуют в данной группе товаров. | |
|
|
|
|
|
|
|
для: VladisOK
(04.11.2007 в 22:57)
| | Всего очень много, и всё как-то "накомкано". Единственное что могу сказать, что у Вас запрос к бд несколько не правильный для Ваших целей. Подправив его, всё пойдёт как по маслу. Не могу подправить, т.к. слишком всего много :) Надеюсь, кто-то поможет :) | |
|
|
|
|
|
|
|
для: morkovkin
(05.11.2007 в 10:37)
| | Ребят, ну помогите а - где-то рядом нахожусь с истиной - подправьте | |
|
|
|
|
|
|
|
для: VladisOK
(04.11.2007 в 22:57)
| | >Проблема в том, что в любой группе товаров выводится полный список всех производителей,
а надо только тех, которые присутствуют в данной группе товаров.
Может, я невнимательно смотрел (пост очень "нагружен"), но я не нашел где же обозначена именно "данная группа товаров" | |
|
|
|
|
|
|
|
для: ddhvvn
(05.11.2007 в 22:19)
| | если я правильно понял, Вам нужен цикл к таблице товаров, буде там находится товар, вы запускаете цикл к таблице фирм, поэтому id фирм должен быть id_firm и вносится в таблицу товаров, для сверки. | |
|
|
|
|
|
|
|
для: VladisOK
(04.11.2007 в 22:57)
| | Можно воспользоваться левым объединением
SELECT firm.id, firm.name FROM firm LEFT JOIN wares ON firm.id=wares.id_firm
ORDER BY firm.name
|
| |
|
|
|
|
|
|
|
для: cheops
(06.11.2007 в 12:04)
| | Нет так тоже не получается - в выподающем меню выводится длинный список по каждому товару ( он же производитель ) вобще:
-------
-------
-------
-------
AEG
AEG
AEG
AEG
AEG
AEG
Amica
Amica
Amica
Amica
Amica
Amica
и тд. | |
|
|
|
|
|
|
|
для: VladisOK
(06.11.2007 в 13:14)
| | Добавьте группировку
SELECT firm.id, firm.name FROM firm LEFT JOIN wares ON firm.id=wares.id_firm
GROUP BY firm.name
ORDER BY firm.name
|
| |
|
|
|
|
|
|
|
для: cheops
(06.11.2007 в 14:25)
| | Нет, в этом варианте запроса визуально всё осталось как в моём варианте | |
|
|
|
|
|
|
|
для: cheops
(06.11.2007 в 14:25)
| | Здесь выводиться весь список производителей, а надо только тех, товары которых находяться на открываемой странице - пример: Духовые шкафы / Электрические / ( на этой странице выводяться все товары с названиями производителей относящиеся к группе Электрические), а сверху окно с выподающим списком производителей, в котором должны находиться только те производители которые есть на этой странице, а не все вобще - в данный момент выводяться все которые занесены в таблицу FIRM | |
|
|
|
|
|
|
|
для: VladisOK
(07.11.2007 в 11:37)
| |
$query=mysql_query("SELECT * FROM wares ORDER BY name");
while($result=mysql_fetch_array($query) )
{
$query5=mysql_fetch_array(mysql_query("SELECT * FROM firm WHERE id_firm='$result[id_firm]'"));
|
Вам нужно чтобы id_firm было как в таблице firm так и таблице wares а у вас в таблице firm - id, в то время как в таблице wares - id_firm. | |
|
|
|
|
|
|
|
для: ronin
(07.11.2007 в 12:41)
| |
// start SORT
echo " <table width=\"173\" align=\"center\" border=\"0\">\n";
echo " <tr>\n";
echo " <td class=gray align=right>" .$LNG['WARES_VIBOR']. "</td>\n";
echo " <td class=gray><select name=name onChange=location.href=this.options[selectedIndex].value >\n";
$query = mysql_query("SELECT * FROM wares ORDER BY name");
{
$query=mysql_fetch_array(mysql_query("SELECT * FROM firm WHERE id_firm='$result[id_firm]'"));
if($name = mysql_query($query))
{
while($result=mysql_fetch_array($query) )
{
echo "<option value=\"index.php?lang=$lang&p=$p&id_type=$id_type&id_subtype=$id_subtype&id_firm=$id\" >" . $id_firm . "</option>";
}
} else puterror("error");
echo " </select></td>\n";
echo " </table>";
//end SORT
|
Что-то вобще страница не открывается - подправь ( наверно что-то напутал ) | |
|
|
|
|
|
|
|
для: VladisOK
(07.11.2007 в 13:43)
| | блин! после каждого селекта if (!$result) echo mysql_error();
$query=mysql_query("SELECT * FROM wares ORDER BY name");
while($result=mysql_fetch_array($query) )
{ $query5=mysql_fetch_array(mysql_query("SELECT * FROM firm WHERE id='$result[id_firm]'"));
|
while($result1=mysql_fetch_array($query) )
{
echo "<option value=\"index.php?lang=$result1[lang]&p=$result1[p]&id_type=$result1[id_type]&id_subtype=$result1[id_subtype]&id_firm=$query5[id]\" >" . $query5[name]."</option>";
|
если id осталось в таблице firm | |
|
|
|
|
|
|
|
для: ronin
(07.11.2007 в 14:05)
| | Опять пустая страница
Ты не можешь исправить мой код
Потому, что не ясно - я ошибаюсь или твой код не работает
// start SORT
echo " <table width=\"173\" align=\"center\" border=\"0\">\n";
echo " <tr>\n";
echo " <td class=gray align=right>" .$LNG['WARES_VIBOR']. "</td>\n";
echo " <td class=gray><select name=name onChange=location.href=this.options[selectedIndex].value >\n";
$query = "SELECT id, name FROM firm ORDER BY name";
if($name = mysql_query($query))
{
while(list($id, $id_firm)=mysql_fetch_array($name))
{
echo "<option value=\"index.php?lang=$lang&p=$p&id_type=$id_type&id_subtype=$id_subtype&id_firm=$id\" >" . $id_firm . "</option>";
}
} else puterror("error");
echo " </select></td>\n";
echo " </table>";
//end SORT
|
| |
|
|
|
|
|
|
|
для: VladisOK
(07.11.2007 в 15:10)
| |
// start SORT
echo " <table width=\"173\" align=\"center\" border=\"1\">\n";
echo " <tr>\n";
echo " <td class=gray><select name=name onChange=location.href=this.options[selectedIndex].value >\n";
$query=mysql_query("SELECT * FROM wares ");
while($result=mysql_fetch_array($query) )
{ $query5=mysql_fetch_array(mysql_query("SELECT * FROM firm WHERE id='$result[id_firm]'"));
while($result1=mysql_fetch_array($query) )
{
echo "<option value=\"$result1[id_firm]\" >" .$query5[name]."</option>";
}
echo " </select></td>\n";
echo " </table>";
//end SORT
|
| |
|
|
|
|
|
|
|
для: ronin
(07.11.2007 в 16:24)
| | Cтраница не открывается - мне кажеться где-то ошибка в коде | |
|
|
|
|
|
|
|
для: VladisOK
(07.11.2007 в 16:35)
| | Блин! сделал ошибку:
// start SORT
echo " <table width=\"173\" align=\"center\" border=\"1\">\n";
echo " <tr>\n";
echo " <td class=gray><select name=name onChange=location.href=this.options[selectedIndex].value >\n";
$query=mysql_query("SELECT * FROM wares ");
while($result=mysql_fetch_array($query) )
{ $query5=mysql_fetch_array(mysql_query("SELECT * FROM firm WHERE id='$result[id_firm]'"));
echo "<option value=\"$result1[id_firm]\" >" .$query5[name]."</option>";
}
echo " </select></td>\n";
echo " </table>";
//end SORT
|
| |
|
|
|
|
|
|
|
для: ronin
(07.11.2007 в 17:16)
| | Страница открывается и в выподающем меню список всех товаров во всех группах - товары обозначены не названиями а просто фирмой производителем:
Ariston
Ariston
Ariston
Ariston
Ariston
Elektrolux
Elektrolux
Elektrolux
Elektrolux
Elektrolux
и тд.
==================================================================
У меня сделанно так:
1. Сначало вручную создаю в администрировании ТИПЫ ( <a href=subtypes.php?lang=$lang&id_type=1>1.1 Группы / Духовые шкафы</a> )
2. Потом КАТАЛОГИ ( <a href=wares.php?lang=$lang&id_type=1>1.1. Каталог / Духовые шкафы</a> )
3. Потом ФИРМЫ ( <a href=firm.php> Фирмы</a> )
Далее клиент сам создаёт в ( Фирмы) фирмы ARISTON и тд.
Далее создаёт в ( 1.1 Группы / Духовые шкафы ) группу ЭЛЕКТРИЧЕСКИЕ и тд.
Зайдя в КАТАЛОГ ( 1.1. Каталог / Духовые шкафы ) создаёт товар выбрав группу ЭЛЕКТРИЧЕСКИЕ и выбрав ФИРМУ ARISTON
P.S. Названия php файлов одноимённые с названием таблиц.
Прикреплённый файл что-то не правильно прикрепился 8/ | |
|
|
|
|
|
|
|
для: VladisOK
(07.11.2007 в 23:54)
| | ronin ti gde?
Davaj prodolzhim | |
|
|
|
|
|
|
|
для: VladisOK
(08.11.2007 в 22:34)
| | Спасибо всем - разобрался сам | |
|
|
|