如何将json值数据库转换为html

Posted

技术标签:

【中文标题】如何将json值数据库转换为html【英文标题】:How to convert json value database to html 【发布时间】:2019-11-24 17:41:52 【问题描述】:

我的数据库上有通知表,其中的值使用 json 之类的。

这是我的桌子

id |     touserid      |            data                 
  1         2                 a:1:i:0;s:10:"INV-000001";                    
  2         2                 a:1:i:0;s:10:"INV-000003";                  
  3         2                 a:1:i:0;s:15:"The Mej Hotel";                    
  4         1             a:5:i:0;s:28:"Total Goalsi:1;s:7:"6250000";           
  5         1                 a:1:i:0;s:10:"INV-000007";   

我想在 html 表中使用该值,但我不知道如何将值转换为 codeigniter 中的 html 表

这是我的视图代码

<table class="table table-dark">
                      <tbody>
                        <thead>
                          <tr>
                            <th scope="col">#</th>
                            <th scope="col">Data</th>
                            <
                          </tr>
                        </thead>
                        <tbody>
                          <?php foreach($notifications as $notif) ?>
                          <tr>
                              <td><?php echo $notif['id'] ?></td>
                              <td><?php echo $notif['data'] ?></td>
                          </tr>
                          <?php  ?>
                      </tbody>
                    </table>

这是控制器代码

$this->db->limit($this->misc_model->get_notifications_limit(), $offset);
    $this->db->where('touserid', get_staff_user_id());
    $this->db->order_by('date', 'desc');
    $data['notifications'] = $this->db->get(db_prefix() . 'notifications')->result_array();

    $this->load->view('admin/sales/sales', $data);

但我没有看到数据值像我想要的那样进入 html 表,在表中它显示错误消息“not_goal_message_failedArray”

我正在尝试对 json 进行编码,但我仍然不知道如何在控制器中传递 json 编码以在 codeigniter 中查看

这是 json 编码

$page   = $this->input->post('page');
        $offset = ($page * $this->misc_model->get_notifications_limit());
        $this->db->limit($this->misc_model->get_notifications_limit(), $offset);
        $this->db->where('touserid', get_staff_user_id());
        $this->db->order_by('date', 'desc');
        $notifications = $this->db->get(db_prefix() . 'notifications')->result_array();
        $i             = 0;
        foreach ($notifications as $notification) 
            if (($notification['fromcompany'] == null && $notification['fromuserid'] != 0) || ($notification['fromcompany'] == null && $notification['fromclientid'] != 0)) 
                if ($notification['fromuserid'] != 0) 
                    $notifications[$i]['profile_image'] = '<a href="' . admin_url('staff/profile/' . $notification['fromuserid']) . '">' . staff_profile_image($notification['fromuserid'], [
                    'staff-profile-image-small',
                    'img-circle',
                    'pull-left',
                ]) . '</a>';
                 else 
                    $notifications[$i]['profile_image'] = '<a href="' . admin_url('clients/client/' . $notification['fromclientid']) . '">
                <img class="client-profile-image-small img-circle pull-left" src="' . contact_profile_image_url($notification['fromclientid']) . '"></a>';
                
             else 
                $notifications[$i]['profile_image'] = '';
                $notifications[$i]['full_name']     = '';
            
            $data = '';
            if (!empty($notification['data'])) 
                $data = unserialize($notification['data']);
                $x               = 0;
                foreach ($data as $dt) 
                    if (strpos($dt, '<lang>') !== false) 
                        $lang = get_string_between($dt, '<lang>', '</lang>');
                        $temp = _l($lang);
                        if (strpos($temp, 'project_status_') !== false) 
                            $status = get_project_status_by_id(strafter($temp, 'project_status_'));
                            $temp   = $status['name'];
                        
                        $dt[$x] = $temp;
                    
                    $x++;
                
            
            $notifications[$i]['description'] = _l($notification['description'], $dt);
            $notifications[$i]['date']        = time_ago($notification['date']);
            $notifications[$i]['full_date']   = $notification['date'];
            $i++;
         
        echo json_encode($notifications);

你知道我在尝试将表中的 json 值转换为 html 表代码时的错误在哪里吗?

谢谢

【问题讨论】:

这看起来不像 JSON;它看起来像 serialized array。 您的错误信息不清楚,请说明清楚,您能详细解释一下您的表格设计问题吗? 嗨@M.Hemant,在表中我没有看到我想要的值,但我在表中收到错误消息“not_goal_message_failedArray” 嗨@showdev,谢谢,但是当我尝试json_encode时,它显示的是json格式的数据 抱歉,我不清楚您要做什么。您是否将序列化字符串编码为 JSON?包含您进行编码/解码的代码部分可能会有所帮助。 【参考方案1】:
    表中的数据看起来像一个序列化数组

    你不会通过 echo 获取数据,应该使用

    $this->load->view("notification_view", $notifications);

而不是

echo json_encode($notifications);

【讨论】:

您好,我已尝试查看代码,但仍然无法正常工作,表格中没有显示任何内容

以上是关于如何将json值数据库转换为html的主要内容,如果未能解决你的问题,请参考以下文章

如何将具有重复字段值的表格数据转换为层次结构的 JSON?

如何解压缩数据框列中存在的 json 的键,值将转换为键作为列,而使用 python 将其值转换为列?

如何将一列数据框转换为具有json格式值的分布列(PYTHON)

如何使用pyspark将具有多个可能值的Json数组列表转换为数据框中的列

请问各位java中如何将数据库返回的多个字段值拼接为一个list并转换为json对象返回到前台,谢谢!

如何将双精度值从 json 转换为函数