Codeigniter генерирует данные строки динамической таблицы

#php #arrays #codeigniter #dynamic #codeigniter-3

#php #массивы #codeigniter #динамический #codeigniter-3

Вопрос:

Я пытаюсь загрузить данные динамической таблицы, мой URI;

 example.coma/admin/view/form/<form_id>
  

Мой модельный запрос;

 public function getRecords($table, $form_id) {
        $this->db->select('*');
        $this->db->from($table);
        $this->db->where('form_id', $form_id); 
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            return $query->result_array(); 
        } 
}
  

Это возвращает массив данных, мне нужно создать HTML-таблицу на основе этого массива.

Я покажу пример двух разных массивов, возвращаемых запросом.

Массив 1.

( select * from members where form_id = 123 )

 Array
(
    [0] => Array
        (
            [id] => 104
            [member_no] => 
            [firstname] => Peter
            [lastname] => Keys
            [address] => 17 main road
            [email] => P3TER@HOTMAIL.CO.UK
            [postcode] => UK123
            [city] => London
            [telnum] => 123123123
            [fk_form_submission_id] => 123
        )
)
  

Массив 2.

( select * from orders where form_id = 123 )

 Array
(
    [0] => Array
        (
            [colour] => blue 
            [type] => shirt
            [age] => 34
            [size] => medium
            [quantity] => 2
            [discount] => Y
            [posted] => N
        )
)
  

Чего я хочу добиться, так это отобразить вертикальную таблицу для отображения набора данных. Очевидно, что каждая таблица будет иметь разные имена строк, пример ниже;

Таблица 1.

  --------------- ------- 
| ID            | 104   |
 --------------- ------- 
| Member Number |       |
 --------------- ------- 
| First Name    | Peter |
 --------------- ------- 
| Last Name     | Keys  |
 --------------- ------- 
| etc           | etc   |
 --------------- ------- 
  

Таблица 2.

  -------- -------- 
| Colour | blue   |
 -------- -------- 
| P Type | shirt  |
 -------- -------- 
| Age    | 34     |
 -------- -------- 
| Size   | medium |
 -------- -------- 
| etc    | etc    |
 -------- -------- 
  

Как я могу задать имена строк этой таблицы? Нужно ли мне создать еще один массив заголовков таблицы и объединить оба массива?

Приветствуются любые советы.

Комментарии:

1. вы можете сделать это с помощью foreach цикла

Ответ №1:

Я не уверен, что полностью понимаю — но если вы хотите динамически устанавливать ключи массива, вы можете сделать это с foreach циклом как:

 <table>
<tr><th>Key</th><th>Value</th></tr>
<?php foreach($res[0] as $key => $val)
    echo '<tr><td>'. $key . '</td><td>' . $val . '</td></tr>'; ?>
</table>
  

Редактировать:

Если вы хотите изменить название ключей на что-то более отображаемое, я бы рекомендовал использовать другой массив для подкачки (большую часть времени это делается для перевода …).

 $displayName = array("id" => "ID", "member_no" => "Member Number", "firstname" => "First Name" ..., "type" => "P type", ...);
foreach($res[0] as $key => $val)
    echo '<tr><td>'. $displayName[$key] . '</td><td>' . $val . '</td></tr>';
  

Вы также можете использовать array_combine , но для этого нужно знать, какие ключи у вас есть…

Обратите внимание, что это решение будет работать, только если отображаемое имя уникально для всех типов ключей

Комментарии:

1. @TheOrdinaryGeek — теперь, я думаю, я понимаю, в чем была ваша проблема — обновил свой пост