Всем доброго времени суток. Проблема такова имеются две таблицы: В одной только имя разделов [sql]CREATE TABLE `glob` ( `glob_id` int(255) NOT NULL auto_increment, `globtitle` varchar(255) NOT NULL, PRIMARY KEY (`glob_id`), KEY `globtitle` (`globtitle`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;[/sql] во второй уже сами тексты с названиями [sql]CREATE TABLE `news` ( `newsid` int(255) NOT NULL auto_increment, `titlenews` text, `contentnews` text, `glob_id` int(255) default NULL, `date` varchar(30) NOT NULL, PRIMARY KEY (`newsid`), KEY `glob_id` (`glob_id`) ) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 PACK_KEYS=0 AUTO_INCREMENT=12 ;[/sql] как видите ключь [sql]`glob_id`[/sql] сушествует в обоях таблицах и для статей они установлены по категориям к примеру Ручки [sql] KEY `glob_id`=1[/sql] и книги [sql] KEY `glob_id`=2[/sql], в таблице глоб сушествует раздел [sql]`globtitle`[/sql] к примеру РУЧКИ, ЛИТЕРАТУРА. Теперь я делаю запрос PHP: <? $Q= 'SELECT * FROM glob, news WHERE glob.glob_id=news.glob_id' ; $result = mysql_query($Q); while ($row = mysql_fetch_assoc($result)) { echo $row['globtitle']; echo $row['titlenews']; echo"<a href=?news=".$row['glob_id'].">подробнее</a>"; echo"<br>"; echo"<br>"; } ?> всё работает правильно и отображается в своей категории(раздел) НО мне надо сделать что бы имя категории(раздела) отображалась лишь раз а не напротив каждой ссылки , как сделать что то не додумаюсь, помогите пожалуйста.... С Уважением Aziz
Тоесть нужно вывести данные таким типом: Код (Text): | РУЧКИ | КНИГИ | ------------------------- | ручка 1 | книга 1 | ------------------------- | ручка 2 | книга 2 | и так далие...
Всё, сделал. Вопрос снят вот если кому интересно PHP: <? $result = mysql_query('SELECT * FROM glob WHERE glob_id '); while ($row = mysql_fetch_assoc($result)) { // *1* $a=$row['glob_id']; echo $row['globtitle']; echo "<br/>"; $result1 = mysql_query('SELECT * FROM news WHERE glob_id='.$a); while ($row1 = mysql_fetch_assoc($result1)) { //*2* echo $row1['titlenews']; echo "<br/>"; } //*2* }//*1* ?>
и это зависит от объемов выборки. варианты есть разные. примеры: PHP: $i=0; while ($row=... { if (!$i) echo $title; $i++; } PHP: $sql = "select * from glob... echo .. $sql = "select * from news.. и т.п.
Но хотелось бы всё таки с этим варианом разобратся PHP: $Q= 'SELECT * FROM glob, news WHERE glob.glob_id=news.glob_id' ; вожможно ли получить в это стиле, или всётаки разбивать запрос
что б разжевали и врот положили, спасибо не надо, но чуть чуть помогли за это спасибо скажем, mysql только учу вот и парюсь, без обид )....
PHP: <? $globs = array(); // отображённые заголовки while ($row = mysql_fetch_assoc($result)){ if (!isset($globs[$row['globtitle']])){ // проверяем, показывали ли мы заголовок echo $row['globtitle']; $globs[$row['globtitle']] = true; // всё, мы показали определённый заголовок, запоминаем это } echo $row['titlenews']; echo"<a href=?news=".$row['glob_id'].">подробнее</a>"; echo"<br>"; echo"<br>"; } Так?
lexa Большое Вам СПАСИБО, это именно то что я пытался сделать, гляжу придётся мне всё о массивах по новой читать, и дальше учить MySQL. Просто учусь методом научного тыка, книжка одна но не всё понятно сразу. Вот и пользуюсь этим форумом так как тут всегда можно найти помошь, ещё раз благодарю, с Уважением Aziz
lexa Ну кто так в наше то время пишет запрос? JOIN надо использовать и явно, так намного понятнее потом смотреть сложные запросы, где куча таблиц собирается. Темболее что оптимизатор всёравно приводит это всё к JOIN, вы ему тока дополнительную работу даёте. PHP: <?php $Q= 'SELECT * FROM glob AS g LEFT JOIN news AS n ON n.glob_id = g.glob_id';
Psih, нене, я нене. Я только про массив. P.S. А джойню именно так, действительно удобнее. Правда условие для on в скобочки пихаю, так ещё проще глазякам разобрать и прочитать запрос.