За последние 24 часа нас посетили 15482 программиста и 1606 роботов. Сейчас ищут 919 программистов ...

Отслеживание значения переменной

Тема в разделе "PHP для новичков", создана пользователем mrprometei, 23 дек 2014.

  1. mrprometei

    mrprometei Новичок

    С нами с:
    23 дек 2014
    Сообщения:
    13
    Симпатии:
    0
    Добрый день гуру!

    Подскажите пожалуйста как можно реализовать следующее действие.
    1. есть база mysql следующая

    name ID organization Id country
    Иванов 1 2
    Петров 2 2
    Смирнов 2 2
    Сидаров 5 1

    Идея следующая когда делаю выборку по id страны вывожу циклом все организации и имена относящиеся к ним.

    Хотелось бы выводить циклом все записи по ид страны но если ид организации изменится тогда встравить строку в таблицу.

    Прошу прощение если вопрос глупый или что-то не понятно объяснил. Пишите постараюсь объяснить доступней.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Ничего не понятно
     
  3. mrprometei

    mrprometei Новичок

    С нами с:
    23 дек 2014
    Сообщения:
    13
    Симпатии:
    0
    есть база со следующими столбцами
    name
    id-органиции
    id-страны

    делаю выборку всех столбцов по id страны и в цикле вывожу в таблицу но не пойму как сделать что бы каждый раз когда изменялся в цикле id организации вставлялась строка.
     
  4. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    понятнее не стало. зачем и как в цикле меняется ид организации? куда должна вставляться строка?
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    mrprometei, покажи свой sql-запрос и цикл.
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Храни где-то текущую id организации и сравнивай ее в цикле с организацией из цикла и если они не равны, то вставляй строку как ты хотел, после вставки Перепиши текущую организацию на организацию из цикла.

    Код (PHP):
    1. $tmp_id = 1;
    2. $list = array(1, 1, 1, 2, 2, 3, 4);
    3.  
    4. foreach($list as $v)
    5. {
    6.   if($tmp_id != $v)
    7.   {
    8.     echo $v.'<br>';
    9.     $tmp_id = $v;
    10.   } else {
    11.     echo $v.' ';
    12. }
    13.  
    14.  
    15.  
     
  7. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    denis01, телепат))
     
  8. mrprometei

    mrprometei Новичок

    С нами с:
    23 дек 2014
    Сообщения:
    13
    Симпатии:
    0
    Код (Text):
    1.  
    2. $directory_quer = mysql_query("SELECT * from `directory` where `country`=".$_GET['ид страны']);
    3. $directory_array = mysql_fetch_array($directory_quer);
    4.  
    5. do {
    6.  
    7. echo"
    8.     <tr>
    9.     <th><p>".$directory_array['col_0']."</p></th>
    10.     <th><p>".$directory_array['col_1']."</p></th>
    11.     <th><p>".$directory_array['col_2']."</p></th>
    12.     <th id=\"td_color\"><p id=\"td_p\">".$directory_array['col_3']."</p></th>
    13.     <th><p>".$directory_array['col_4']."</p></th>
    14.     </tr>";
    15. }
    16. while ( $directory_array = mysql_fetch_array($directory_quer));
    17. echo "</table>";
    в таблице directory есть еще $directory_array['ид организации'] и вот он когда изменится при выводе в цикле нужно вставить строку в таблицу.

    Прошу прощения если объясняю не очень хорошо.
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    На каких курсах тебя научили писать такой код? Я подскажу решение
    Покажи какие данные есть в таблице и какой результат ты хочешь получить, сделай его вручную, можно и не совсеми данными и мы на это посмотрим и сделаем вывод.
     
  10. mrprometei

    mrprometei Новичок

    С нами с:
    23 дек 2014
    Сообщения:
    13
    Симпатии:
    0
    Я не был на курсах =( пытаюсь сам копаться.
    Это база банального справочника.


    оборудование---ФИО---телефон---помещение---ip

    вот шапка таблицы ниже выводятся в цикле данные по всем организациям(код выслал), я хочу что бы в таблице перед каждой организацией была строка с названием организации и она была структурирована.
     
  11. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Покажи структуру базы данных, и где ты хранишь название организации
     
  12. mrprometei

    mrprometei Новичок

    С нами с:
    23 дек 2014
    Сообщения:
    13
    Симпатии:
    0
    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;
     
  13. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    col_3 - если тут название организации, то твой код должен работать, чего не хватает?
     
  14. mrprometei

    mrprometei Новичок

    С нами с:
    23 дек 2014
    Сообщения:
    13
    Симпатии:
    0
    id организации у меня в `organiz` это int и я хочу понять как мне когда отследить что он изменился?

    т.е. по идентификатору `country` допустим 1 я вывожу все записи которые есть в таблице которые подходят под условие.

    В таблице которая получится будет много записей с идентификатором страны 1 и разными ид организаций (5,2,4,1,4) я хочу что при изменении ид организации допустим с 5 на 2 в цикле вставлялась в имеющуюся таблицу строка.
     
  15. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    А где ты хранишь название организации по её id?
     
  16. mrprometei

    mrprometei Новичок

    С нами с:
    23 дек 2014
    Сообщения:
    13
    Симпатии:
    0
    Название организации в базе
    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`
     
  17. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Так можно в sql запросе сделать выборку из двух таблиц и чтобы сразу получить название организации по её id.
    Смотри mysql join. Ты какую книгу читал? Обычно join почти в начале идёт.
     
  18. mrprometei

    mrprometei Новичок

    С нами с:
    23 дек 2014
    Сообщения:
    13
    Симпатии:
    0
    наверное я все таки не правильно объяснил.
    пример построения таблицы


    -------------------------организация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
     
  19. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Это не должна быть одна таблица, по идее. Если у каждой организации есть оборудование, то это две таблицы - одна организация, другая оборудование, отношение один-ко-многим
     
  20. mrprometei

    mrprometei Новичок

    С нами с:
    23 дек 2014
    Сообщения:
    13
    Симпатии:
    0
    Немного не понял.
    В базе они у меня и хранятся в двух разных таблицах, а вот вывести я хочу в одну таблицу в таком формате.
     
  21. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Вам уже сказали, JOIN.
     
  22. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    При select сделай order by ид организации

    Вот пример:
    Код (PHP):
    1. <?php
    2.  
    3. $tmp_id = 0;
    4. $org = array(1 => 'орг1', 2 => 'орг2', 3 => 'орг3', 4 => 'орг4');
    5. $list = array(1, 1, 1, 2, 2, 3, 4);
    6.  
    7. foreach($list as $v)
    8. {
    9.   if($tmp_id != $v)
    10.   {
    11.     echo '<br>'.$org[$v].'<br>';
    12.     $tmp_id = $v;
    13.   }
    14.   echo $v.' ';
    15. } 
    16. ?>
    ему видимо без join нужно, просто два запроса.

    Добавлено спустя 24 минуты 16 секунд:
    Внёс изменения в код