Задача следующая: Сортировка по производителю в определённой группе товаров. Есть 3 таблицы 1. Фирмы производители: Код (Text): # 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; 2. Группы товаров Код (Text): # 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; 3. Товары с описанием и выбором фирмы производителя: Код (Text): # 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; На php странице выподающие меню со всеми производителями: (отрезок кода) Код (Text): / 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 У меня сделанно так ( в администрировании ) : 1. Сначало создаются ФИРМЫ ( <a href=firm.php> Фирмы</a> ) 2. Потом ГРУППЫ ТОВАРОВ ( <a href=subtypes.php?lang=$lang&id_type=1>1.1 Группы / Духовые шкафы</a> ) 3. Потом ТОВАРЫ ( <a href=wares.php?lang=$lang&id_type=1>1.1. Товары / Духовые шкафы</a> ) Далее клиент сам создаёт в ( Фирмы) фирмы ARISTON и тд. Далее создаёт в ( 1.1 Группы / Духовые шкафы ) группу ЭЛЕКТРИЧЕСКИЕ и тд. Зайдя в КАТАЛОГ ( 1.1. Товары / Духовые шкафы ) создаёт товар выбрав группу ЭЛЕКТРИЧЕСКИЕ и выбрав ФИРМУ ARISTON P.S. Названия php файлов одноимённые с названием таблиц. Проблема в том, что в любой группе товаров выводится полный список всех производителей, а надо только тех, которые присутствуют в данной группе товаров. Много написал ( я знаю, что это не приветствуется ), но иначе не могу объяснить суть проблемы.
[sql]select distinct firm.id, firm.name from firm, wares where wares.id_type=$id_type and firm.id=wares.id_firm[/sql] или [sql]select firm.id, firm.name from firm, wares where wares.id_type=$id_type and firm.id=wares.id_firm group by firm.id[/sql]
Супер !!! Ты молодец, так быстро и правильно ответить - нет слов !!! А можешь подсказать - у меня в окне выподающего меню по умолчанию было так : ---------- , сейчас первое название фирмы производителя, пример: Siemens. Как сделать так, чтоб они находились в алфавитном порядке и первая строка отображающаяся в выподающем меню по умолчанию была так : ----------
ты первым делом выведи на экран строчку ------ а потом уже список производителей т.е. PHP: <select><option value='чего-то там'>-------</option> <?php // тут в цикле выводим производителей ?> </select>
OK! Осталось разобраться как сделать , чтоб самая верхняя строчка в выподающем меню всегда была >Все товары< или так >----------<
это вопрос или утверждение? PHP: <?php /* для примера юзаю foreach для массива FIRMY тебе нада будет юзать функции обработки результата mysql формат: ID_Фирмы => Название_Фирмы ID не по порядку изображают сортировку по называнию фирмы */ $FIRMY = array( 4 => 'Fly', 1 => 'Motorola', 5 => 'Nokia', 4 => 'Samsung', 2 => 'Siemens' ); ?> <select> <option value='чего-то там'>-------</option> <?php // тут в цикле выводим производителей foreach($FIRMY as $ID => $NAME) echo "<option value='$ID'>$NAME</option>\r\n"; ?> </select> выдает HTML: <select> <option value='чего-то там'>-------</option> <option value='4'>Fly</option> <option value='1'>Motorola</option> <option value='5'>Nokia</option> <option value='3'>Samsung</option> <option value='2'>Siemens</option> </select>
это вопрос или утверждение? Спасибо, но у меня клиент сам вводит / удаляет / редактирует фирм производителей - поэтому надо делать запросы к таблице FIRM
PHP: <?php $q = mysql_query("select distinct firm.id, firm.name from firm, wares where wares.id_type=$id_type and firm.id=wares.id_firm;"); ?> <select> <option value='чего-то там'>-------</option> <?php // тут в цикле выводим производителей while($row=mysql_fetch_array($q)) { $ID = $row['id']; //firm.id $NAME = $row['name']; //firm.name echo "<option value='$ID'>$NAME</option>\r\n"; } ?> </select>
В таком варианте не работает линк: echo "<option value="index.php?lang=$lang&p=$p&id_type=$id_type&id_subtype=$id_subtype&id_firm=$id" >" . $id_firm . "</option>"; Спасибо всем, разобрался сам
Что ещё заметил, не знаю почему, но в некоторых группах, в выподающем меню непоказывается производитель, который на самом деле есть Спасибо всем, разобрался сам