Добрый день гуру! Подскажите пожалуйста как можно реализовать следующее действие. 1. есть база mysql следующая name ID organization Id country Иванов 1 2 Петров 2 2 Смирнов 2 2 Сидаров 5 1 Идея следующая когда делаю выборку по id страны вывожу циклом все организации и имена относящиеся к ним. Хотелось бы выводить циклом все записи по ид страны но если ид организации изменится тогда встравить строку в таблицу. Прошу прощение если вопрос глупый или что-то не понятно объяснил. Пишите постараюсь объяснить доступней.
есть база со следующими столбцами name id-органиции id-страны делаю выборку всех столбцов по id страны и в цикле вывожу в таблицу но не пойму как сделать что бы каждый раз когда изменялся в цикле id организации вставлялась строка.
Храни где-то текущую id организации и сравнивай ее в цикле с организацией из цикла и если они не равны, то вставляй строку как ты хотел, после вставки Перепиши текущую организацию на организацию из цикла. Код (PHP): $tmp_id = 1; $list = array(1, 1, 1, 2, 2, 3, 4); foreach($list as $v) { if($tmp_id != $v) { echo $v.'<br>'; $tmp_id = $v; } else { echo $v.' '; }
Код (Text): $directory_quer = mysql_query("SELECT * from `directory` where `country`=".$_GET['ид страны']); $directory_array = mysql_fetch_array($directory_quer); do { echo" <tr> <th><p>".$directory_array['col_0']."</p></th> <th><p>".$directory_array['col_1']."</p></th> <th><p>".$directory_array['col_2']."</p></th> <th id=\"td_color\"><p id=\"td_p\">".$directory_array['col_3']."</p></th> <th><p>".$directory_array['col_4']."</p></th> </tr>"; } while ( $directory_array = mysql_fetch_array($directory_quer)); echo "</table>"; в таблице directory есть еще $directory_array['ид организации'] и вот он когда изменится при выводе в цикле нужно вставить строку в таблицу. Прошу прощения если объясняю не очень хорошо.
На каких курсах тебя научили писать такой код? Я подскажу решение Покажи какие данные есть в таблице и какой результат ты хочешь получить, сделай его вручную, можно и не совсеми данными и мы на это посмотрим и сделаем вывод.
Я не был на курсах =( пытаюсь сам копаться. Это база банального справочника. оборудование---ФИО---телефон---помещение---ip вот шапка таблицы ниже выводятся в цикле данные по всем организациям(код выслал), я хочу что бы в таблице перед каждой организацией была строка с названием организации и она была структурирована.
CREATE TABLE `directory` ( `col_0` varchar(255) DEFAULT NULL, `col_1` varchar(255) DEFAULT NULL, `col_2` varchar(255) DEFAULT NULL, `col_3` varchar(255) DEFAULT NULL, `col_4` varchar(255) DEFAULT NULL, `country` int(255) DEFAULT NULL, `organiz` int(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
id организации у меня в `organiz` это int и я хочу понять как мне когда отследить что он изменился? т.е. по идентификатору `country` допустим 1 я вывожу все записи которые есть в таблице которые подходят под условие. В таблице которая получится будет много записей с идентификатором страны 1 и разными ид организаций (5,2,4,1,4) я хочу что при изменении ид организации допустим с 5 на 2 в цикле вставлялась в имеющуюся таблицу строка.
Название организации в базе CREATE TABLE `organization` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `organization` varchar(255) DEFAULT NULL, `country` int(255) DEFAULT NULL, `ip` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=cp1251; Id хранится в базе directory в столбце `organiz`
Так можно в sql запросе сделать выборку из двух таблиц и чтобы сразу получить название организации по её id. Смотри mysql join. Ты какую книгу читал? Обычно join почти в начале идёт.
наверное я все таки не правильно объяснил. пример построения таблицы -------------------------организация1---------------------------- оборудование1---ФИО1---телефон1---помещение1---ip1 оборудование2---ФИО2---телефон2---помещение2---ip2 оборудование3---ФИО3---телефон3---помещение3---ip3 -------------------------организация2---------------------------- оборудование4---ФИО4---телефон4---помещение4---ip4 оборудование5---ФИО5---телефон5---помещение5---ip5
Это не должна быть одна таблица, по идее. Если у каждой организации есть оборудование, то это две таблицы - одна организация, другая оборудование, отношение один-ко-многим
Немного не понял. В базе они у меня и хранятся в двух разных таблицах, а вот вывести я хочу в одну таблицу в таком формате.
При select сделай order by ид организации Вот пример: Код (PHP): <?php $tmp_id = 0; $org = array(1 => 'орг1', 2 => 'орг2', 3 => 'орг3', 4 => 'орг4'); $list = array(1, 1, 1, 2, 2, 3, 4); foreach($list as $v) { if($tmp_id != $v) { echo '<br>'.$org[$v].'<br>'; $tmp_id = $v; } echo $v.' '; } ?> ему видимо без join нужно, просто два запроса. Добавлено спустя 24 минуты 16 секунд: Внёс изменения в код