Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 40
1
MySQL

Вывод из массива в таблицу и вложенную таблицу

01.01.2015, 14:38. Показов 2736. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, помогите разобраться с выводом из массива в несколько таблиц, php не знаю поэтому прошу помощи. Ситуация следующая:
1. Есть массив получаемый из базы (Например такой: Array ( [0] => 1 [chs_id] => 1 [1] => 2014-11-26 [data_signala] => 2014-11-26 [2] => 14:17:00 [vremy_signala] => 14:17:00 [3] => Минин Максим Михайлович [fio_zaiv] => Минин Максим Михайлович [4] => 89534765597 [tel_zaiv] => 89534765597 [5] => 2 [rang_pozara] => 2 [6] => 1 [prichina_id] => 1 [7] => 1 [tip_chs_id] => 1 [8] => 1 [vid_chs_id] => 1 [9] => 1 [rayon_id] => 1 [10] => 1 [np_id] => 1 [11] => 1 [tip_zdania_id] => 1 [12] => 150 [usherb] => 150 [13] => 0 [logniy] => 0 [14] => [adres] => [15] => 1 [rayin_id] => 1 [16] => г. Орёл [nazvanie] => г. Орёл [17] => 2014-11-26 [data] => 2014-11-26 [18] => 15:05:00 [vrem_lokaliz] => 15:05:00 [19] => 15:40:00 [vrem_likvid] => 15:40:00 [20] => 2 [kol_postr] => 2 [21] => 0 [kol_pogib] => 0 [22] => 2 ствола [prin_mer] => 2 ствола [23] => [dop_info] => [24] => 2 ГДЗС [privlech_sili] => 2 ГДЗС [25] => 12 [ploshad_vozgor] => 12 [26] => 0 [pogib_deti] => 0 [27] => 0 [postr_deti] => 0 [28] => 1 [l_id] => 1 [29] => 1 [30] => [mashtab_chs] => [31] => 1 [viezd_id] => 1 [32] => ПЧ-3 [Podrazdelenie] => ПЧ-3 [33] => 14:19 [time_viezda] => 14:19 [34] => 14:40 [time_pribitia] => 14:40 [35] => 1 [36] => 21 [rast] => 21 ))
2. Необходимо выбрать данные из массива в таблицу такого вида (см. вложение). Причем одному полю из первой таблицы может соответствовать несколько полей из вложенной таблицы.
Пробовал делать через while() цикл зацикливается и полцчается ерунда, через foreach() тоже не получилось.
Вот кусок скрипта PHP:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
    while ($var = mysql_fetch_array($qr_result))
{
        
        echo '<h1  align="center">Карточка пожара №</h1>';
        echo '<table table border="1" align="center">';
        echo '<tr>';
         echo '<td align="left">Дата: ' .$var['data_signala']. '</td>';
         echo '<td  align="center">Время:' .$var['vremy_signala']. '</td>';
         echo ' <td colspan=7 align="center">Район выезда:' .$var['nazvanie']. '</td>';
         echo '</tr>';
         echo '<tr>';
         echo ' <td  align="center">Адрес: </td>';
         echo ' <td  align="center">' .$var['nazvanie']. '</td>';
         echo ' <td colspan=2 align="center">' .$var['nazvanie_np']. '</td>';
         echo ' <td colspan=4 align="center">' .$var['adres']. '</td>';
         echo ' </tr>';
         echo '<tr>';
         echo ' <td colspan=5 align="center">Кол-во погибших: ' .$var['kol_pogib']. '</td>';
         echo '<td colspan=4 align="center">Кол-во пострадавших:  ' .$var['kol_postr']. '</td>';
         echo '</tr>';
         echo '<tr>';
         echo ' <td colspan=5 align="center">Из них дети:  ' .$var['postr_deti']. '</td>';
         echo ' <td colspan=5 align="center">Из них дети:  ' .$var['pogib_deti']. '</td>';
         echo '</tr>';
         echo '<tr>';
         echo '<td colspan=3 align="center">Ущерб: ' .$var['usherb']. ' т.р.</td>';
        echo ' <td colspan=5 align="center">Боевой расчёт: ' .$var['Podrazdelenie']. '</td>';
         echo '</tr>';
         echo '<tr>';
         echo ' <td colspan=8 align="center">Характеристика и масштабы:</td>';
         echo '</tr>';
         echo '<tr>';
         echo ' <td colspan=8 align="center"> ' .$var['mashtab_chs']. '</td>';
         echo '</tr>';
         echo '<tr>';
         echo ' <td colspan=8 align="center">';
         echo ' Дополнительная информация:';
         echo ' </td>';
         echo '</tr>';
         echo '<tr>';
         echo ' <td colspan=8 align="center"> ' .$var['dop_info']. '</td>';
         echo '</tr>';
        
    
        echo '<tr>';
         
         
         echo ' <td align="center">';
         echo ' ПЧ№:';
         echo ' </td>';
         
         echo ' <td colspan=2 align="center">';
          echo 'Время*выезда:';
         
         echo ' </td>';
         echo ' <td align="center">';
         echo ' Время*прибытия:';
 
         echo ' </td>';
         echo ' <td>';
         echo ' Время*локализации:';
 
         echo ' </td>';
         echo ' <td align="center">';
         echo ' Время*ликвидации:';
          
         echo ' </td>';
         echo ' <td align="center">';
         echo ' Время*возвращения:';
         
         echo ' </td>';
        echo ' </tr>';
        echo ' <tr>';
        echo '  <td align="center">' .$var['Podrazdelenie']. '</td>';
        echo '  <td align="center">' .$var['time_viezda']. '</td>';
        echo '  <td colspan=2 align="center">' .$var['time_pribitia']. '</td>';
        echo '  <td align="center">' .$var['vrem_lokaliz']. '</td>';
        echo '  <td align="center">' .$var['vrem_likvid']. '</td>';
        echo '  <td align="center">' .$var['time_pribitia']. '</td>';
         
    
        echo '</table>';
}
Миниатюры
Вывод из массива в таблицу и вложенную таблицу  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.01.2015, 14:38
Ответы с готовыми решениями:

Запрос - Сгруппировать строки как вложенную таблицу
Добрый день уважаемые форумчане !!! Прошу помощи у гуру ... Допустим Есть Справочник...

Вывод БД в таблицу. Как отсортировать по определенному столбцу таблицу
Добрый день уважаемые Гуру. Подскажите пожалуйста как отсортировать таблицу по значению столбца...

Вывод массива в таблицу
Привет. У меня такое задание: вывести массив 10x10 в таблицу и вывести максимальный элемент...

Вывод из массива в таблицу
Доброе время суток! Задали сделать сортировку текста по алфавиту и записать данные в таблицу. Все...

12
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 40
01.01.2015, 14:58  [ТС] 2
Более опытные товарищи подскажите куда копать, может сделать этот массив многомерным?
0
217 / 157 / 30
Регистрация: 11.05.2010
Сообщений: 614
01.01.2015, 15:43 3
1.
Цитата Сообщение от 467919556 Посмотреть сообщение
(Например такой: Array ( [0] => 1 [chs_id] => 1 [1] => 2014-11-26 [data_signala] => 2014-11-2.....
Напишите это нормально, а не в одно нескончаемую строку. Такое читать, да ещё и первого января, издевательство, не иначе.
PHP
1
2
3
echo '<pre>';
print_r($my_super_duper_array);
echo '</pre>';
Добавлено через 9 минут
2.
Цитата Сообщение от 467919556 Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
10
    while ($var = mysql_fetch_array($qr_result))
{
        
        echo '<h1  align="center">Карточка пожара №</h1>';
        echo '<table table border="1" align="center">';
        echo '<tr>';
         echo '<td align="left">Дата: ' .$var['data_signala']. '</td>';
         echo '<td  align="center">Время:' .$var['vremy_signala']. '</td>';
         echo ' <td colspan=7 align="center">Район выезда:' .$var['nazvanie']. '</td>';
         echo '</tr>';
...
ТАК ПИСАТЬ НЕЛЬЗЯ! Точнее, это всё работать будет, но всё равно нельзя. Не принято, плохо читаемо и дополнительная нагрузка на пхп(процессор).

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
while ($var = mysql_fetch_array($qr_result)){ 
?>
    <h1  align="center">Карточка пожара №</h1>
    <table table border="1" align="center">
        <tr>
            <td align="left">Дата: <? php echo $var['data_signala']?></td>
            <td  align="center">Время: <? php echo $var['vremy_signala']?></td>
            <td colspan=7 align="center">Район выезда: <? php echo $var['nazvanie']?></td>
        </tr>
//...
<?php
}
1
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 40
01.01.2015, 15:56  [ТС] 4
Вывел:

Array
(
[0] => 1
[chs_id] => 1
[1] => 2014-11-26
[data_signala] => 2014-11-26
[2] => 14:17:00
[vremy_signala] => 14:17:00
[3] => Минин Максим Михайлович
[fio_zaiv] => Минин Максим Михайлович
[4] => 89534765597
[tel_zaiv] => 89534765597
[5] => 2
[rang_pozara] => 2
[6] => 1
[prichina_id] => 1
[7] => 1
[tip_chs_id] => 1
[8] => 1
[vid_chs_id] => 1
[9] => 1
[rayon_id] => 1
[10] => 1
[np_id] => 1
[11] => 1
[tip_zdania_id] => 1
[12] => 150
[usherb] => 150
[13] => 0
[logniy] => 0
[14] =>
[adres] =>
[15] => 1
[rayin_id] => 1
[16] => г. Орёл
[nazvanie] => г. Орёл
[17] => 2014-11-26
[data] => 2014-11-26
[18] => 15:05:00
[vrem_lokaliz] => 15:05:00
[19] => 15:40:00
[vrem_likvid] => 15:40:00
[20] => 2
[kol_postr] => 2
[21] => 0
[kol_pogib] => 0
[22] => 2 ствола
[prin_mer] => 2 ствола
[23] =>
[dop_info] =>
[24] => 2 ГДЗС
[privlech_sili] => 2 ГДЗС
[25] => 12
[ploshad_vozgor] => 12
[26] => 0
[pogib_deti] => 0
[27] => 0
[postr_deti] => 0
[28] => 1
[l_id] => 1
[29] => 1
[30] =>
[mashtab_chs] =>
[31] => 1
[viezd_id] => 1
[32] => ПЧ-3
[Podrazdelenie] => ПЧ-3
[33] => 14:19
[time_viezda] => 14:19
[34] => 14:40
[time_pribitia] => 14:40
[35] => 1
[36] => 21
[rast] => 21
)

Вижу дублированные записи, пока не совсем понял откуда они взялись.
0
217 / 157 / 30
Регистрация: 11.05.2010
Сообщений: 614
01.01.2015, 16:49 5
mysql_fetch_array замени на mysql_fetch_assoc, пропадут числовые индексы и массив уменьшиться вдвое.
ну и можете показать запрос? интересно, где же взялось 36 полей О_о
1
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 40
01.01.2015, 18:05  [ТС] 6
Запросов несколько срабатывают в зависимости по условию. Приведу один:
PHP
1
2
3
4
5
6
if ($vsya_oblast == '1' and $ves_rayon == '1' and $vse_vizovi == '1') {
 
    $query = "SELECT * 
            FROM chs, rayon, likvidacia, viesd
            WHERE tip_chs_id = '$TipChs' AND vid_chs_id= '$VidChs' AND data_signala BETWEEN '$date1' and '$date2'"; 
    }
Добавлено через 8 минут
Заменил индексы исчезли, дублирующие записи пропали, спасибо. но всё же не понятно как все это вывести в таблицу =(

Добавлено через 15 минут
Еще заметил, что в массив сохраняется только одна запись из таблицы.
0
217 / 157 / 30
Регистрация: 11.05.2010
Сообщений: 614
01.01.2015, 20:36 7
вы каждый раз в цикле
Цитата Сообщение от 467919556 Посмотреть сообщение
Еще заметил, что в массив сохраняется только одна запись из таблицы.
это так должно быть лишь в том случае, если этот запрос возвращает 1 строку.

насчёт таблицы, я так понял, что у вас она одна, а нужно две, где вторая была бы внутри последней ячейке(строке) первой таблицы, правильно?
тогда это не сложно.
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<table table border="1" align="center">
<!-- тут должны быть данные главной таблицы -->
<tr>
    <td colspan=8 align="center">Дополнительная информация:</td>
</tr>
<tr>
    <td colspan=8 align="center">
        <table>
            <tr>
                <td align="center">ПЧ№:</td>
                <td align="center">Время*выезда:</td>
                <td align="center">Время*прибытия:</td>
                <td align="center">Время*локализации:</td>
                <td align="center">Время*ликвидации:</td>
                <td align="center">Время*возвращения:</td>
            </tr>
            <tr>
                <td>ПЧ№:</td>
                <td align="center"><?php echo $var['Podrazdelenie']?></td>
                <td align="center"><?php echo $var['time_viezda']?></td>
                <td align="center"><?php echo $var['time_pribitia'] /*повторяемся*/?></td>
                <td align="center"><?php echo $var['time_lokaliz']?></td>
                <td align="center"><?php echo $var['vrem_likvid']?></td>
                <td align="center"><?php echo $var['time_pribitia'] /*повторяемся*/?></td>
            </tr>
 
        </table>
    </td>
</tr>
</table>
PS: может лучше сделать 2 отдельные таблицы?
1
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 40
01.01.2015, 20:43  [ТС] 8
Да я и хочу две отдельные таблицы сделать, просто в примере старый вариант, но одной записи в первой таблице должно соответствовать несколько записей во второй т.е. в рамках задачи " на одно происшествие могут выезжать несколько подразделений". Пока не знаю как цикл построить, видимо необходимо сделать в теле цикла вложенный цикл, но как сделать так чтобы он не прогонял все элементы в цикле, а выбирал и выводил только уникальные.. Пробовал foreach(), но он выводит какие то каракули. Плюс видимо SQL запрос не правильно построил, может лучше с помощью JOIN?
0
217 / 157 / 30
Регистрация: 11.05.2010
Сообщений: 614
03.01.2015, 00:16 9
делайте 2 запроса, две выборки, каждой из них по таблице. (если я правильно понял проблему)

запросы лучше делать через join: хоть и писать больше, но и лучше контролировать.
ну и вместо "SELECT *" перечислить только нужные поля.
1
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 40
05.01.2015, 19:03  [ТС] 10
Переделал все запросы через JOIN, сделал цикл в цикле для вывода подтаблицы.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 while ($data = mysql_fetch_array($qr_result))
{
         echo '<h1  align="center">Карточка пожара № '.$i++.'</h1>';
         echo '<table table border="1" align="center">';
         echo '<tr>';
         echo '<td align="left">Дата: ' .$data['data_signala']. '</td>';
         echo '<td  align="center">Время:' .$data['vremy_signala']. '</td>';
         echo ' .....';
         echo '......';
         echo '.....';
        
        
 
while ($var = mysql_fetch_array($qr_result2))    
{    
         echo ' <tr>';
         echo '  <td align="center">' .$var['Podrazdelenie']. '</td>';
         echo '  <td align="center">' .$var['time_viezda']. '</td>';
         echo ' ....'
                 echo ' ....'
 
         }
 
     echo '</table>';
     }
В результате все значения из второго запроса (подтаблицы) выводится только для первой таблицы. Вместо того чтобы в зависимости от ключа выводится для каждой таблицы в первом цикле.

Добавлено через 25 минут
Вот таким образом выводит нужный мне результат но только при первом прогоне цикла:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
       while ($data = mysql_fetch_array($qr_result))
{
         echo '.....'
          echo '.....'
 
    while ($var = mysql_fetch_array($qr_result2))    
{
if ($data[chs_id]==$var[chs_id])
{    
         echo '.......';
         echo ' ......';
         echo ' .....';
        
     
}
}
      echo '</table>';
     }
0
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 40
05.01.2015, 19:06  [ТС] 11
Во вложении результат работы скрипта.
Миниатюры
Вывод из массива в таблицу и вложенную таблицу  
0
217 / 157 / 30
Регистрация: 11.05.2010
Сообщений: 614
05.01.2015, 21:59 12
Лучший ответ Сообщение было отмечено 467919556 как решение

Решение

ну пример. 2 таблицы.
groups(group_id, group_name, ...)
items(item_id, item_name, group_id, ...)
тогда как-то так я всё это вижу:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$groups = mysql_query('select * from groups');
 
while ($group = mysql_fetch_assoc($groups)){
    echo 'group_id = ' . $group['group_id'] . "<br />\n";
    echo 'group_name = ' . $group['group_name'] . "<br />\n";
 
    echo 'items:';
    $items = mysql_query('select * from items where group_id = ' . $group['group_id']);
    while ($item = mysql_fetch_assoc($items)){
        echo 'item_id = ' . $item['item_id'] . "<br />\n";
        echo 'item_name = ' . $item['item_name'] . "<br /><br />\n";
    }
    echo "\n<hr />\n";
}
1
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 40
05.01.2015, 22:42  [ТС] 13
Вроде бы так и делаю, только вот второй цикл выполняется только один раз.

Добавлено через 2 минуты
Переместил второй запрос в тело первого цикла и всё заработало. Огромное спасибо!!!
0
05.01.2015, 22:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.01.2015, 22:42
Помогаю со студенческими работами здесь

Вывод массива в таблицу
Добрый день всем. Помогите, пожалуйста, с такой проблемой. Пытаюсь вывести массив строк в...

Вывод массива в таблицу
Нужно чтобы массивы выводились ровно, таблицами (столбцов должно быть 10) Помогите пожалуйстаааа...

Вывод массива в таблицу
Нужно вывести массивы в таблицу. Делал так: var Array1=; var Array2=; var Array3=; var...

Вывод массива в таблицу
Осваиваю азы. Прошу помочь с выводом массива в таблицу. делаю echo &quot;&lt;pre&gt;&quot;; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru