Делаю каталог организаций: КАТАЛОГ: - Категория 1 - подкатегория 1 к категории 1 - подкатегория 2 к категории 1 - подкатегория 3 к категории 1 - Категория 2 - подкатегория 1 к категории 2 - подкатегория 2 к категории 2 - подкатегория 3 к категории 2 и т.д. Сделал две таблицы: table category ---------------------------------------------- |cat|pcat| name | ---------------------------------------------- | 1 | 0 |Категория 1 | | 2 | 1 |подкатегория 1 к категории 1| | 3 | 1 |подкатегория 2 к категории 1| | 4 | 1 |подкатегория 3 к категории 1| | 5 | 0 |Категория 2 | | 6 | 5 |подкатегория 1 к категории 2| | 7 | 5 |подкатегория 2 к категории 2| | 8 | 5 |подкатегория 3 к категории 2| cat - уникальный номер категории или подкатегории. pcat - номер категории, которой принажлежит подкатегория, если 0 - то это категория. table users ----------------------------- |id|category| firma | ----------------------------- |1 | 1 |Рога | |2 | 3 |Копыта | |3 | 2 |Рога и копыта| |4 | 4 |Копыта и рога| Организации записаны не только в подкатегорию, но и в категории и когда жмешь на "категория 1", выводятся организации этой категории и всех ее подкатегорий. Вот код, который выводит организации из категории (код для подкатегории не показываю - он похож на часть кода категории): PHP: <? include "config_db.php"; $cat_=$_GET['cat']; $cat_p_=$_GET['cat_p']; //----------- группа организаций $query="SELECT * FROM users WHERE category=$cat_ "; $user=mysql_query($query); while ($user_=mysql_fetch_array($user)) { echo $user_['firma']; } //----------- подгруппа организаций $query="SELECT * FROM category WHERE pcat=$cat_"; $pcat=mysql_query($query); while ($pcat_=mysql_fetch_array($pcat)) { $pcat_=$pcat_['cat']; $query="SELECT * FROM users WHERE category=$pcat_"; $user=mysql_query($query); while ($user_=mysql_fetch_array($user)) { echo $user_['firma']; } } ?> Сначала выводятся организации из категории, а потом из всех подкатегорий. Вот это и плохо! Надо чтоб в категории выводились организации согласно времени их ввода в каталог (короче как-то отсортировать). Вопрос: как изменить код, чтобы организации выводились в порядке как в твблице users?
Так? PHP: <? include "config_db.php"; $cat_=$_GET['cat']; $cat_p_=$_GET['cat_p']; //----------- группа организаций $query="SELECT c.name, u.* FROM users as u LEFT JOIN category as c ON c.cat=u.category WHERE u.category={$cat_} OR c.cat={$cat_} GROUP BY u.id ORDER BY u.id"; $user=mysql_query($query); while ($user_=mysql_fetch_array($user)) { echo 'Category: '.$user_['name'].'; Company: '$user_['firma']; } ?> p.s. код не тестировал, на глазок переделал то что было...
Ура! Все работает! Спасибо! Только мааааааленькая техническая ошибочка: PHP: $query="SELECT c.name, u.* FROM users as u LEFT JOIN category as c ON c.cat=u.category WHERE u.category={$cat_} OR c.pcat={$cat_} GROUP BY u.id ORDER BY u.id"; А так все супер!