PHP提取.serializeArray()传递到数据库的数据

Chen.java 2019-06-10 02:53:51
先上图:


这是api接收到的数据,其实就是前端表单未经过处理直接传递到后台就是这样.有的表单是姓名+电话,有的复杂些还有地址性别留言等等.

本人新手不知如何用php后台处理这数据,公司用的TP5框架,要在管理系统中显示出这些数据,姓名电话都得分开显示,效果大概是如下这样:
...全文
797 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
拥有翅膀的鱼 2019-06-17
  • 打赏
  • 举报
回复
引用 11 楼 Chen.java 的回复:
[quote=引用 9 楼 雨后阳光2014 的回复:]
直接 json_decode($data);是个对象,
json_decode($data, TRUE);出来就是数组


转换成数组很简单,但里面还有string类型存储,事实上是序列化json的前台未处理数据,这个我真的不知道怎么拿出来用[/quote]


他存储进去的时候序列化了,你拿出来的时候先反序列化一下,再执行其他的动作就好了。
Chen.java 2019-06-15
  • 打赏
  • 举报
回复
引用 9 楼 雨后阳光2014 的回复:
直接 json_decode($data);是个对象, json_decode($data, TRUE);出来就是数组
转换成数组很简单,但里面还有string类型存储,事实上是序列化json的前台未处理数据,这个我真的不知道怎么拿出来用
拥有翅膀的鱼 2019-06-14
  • 打赏
  • 举报
回复
引用 8 楼 小姐,借一个吻 的回复:
1,要么你上面的 $data 查询分页哪里能不能直接得到数组而不是对象
2. 可以直接用 json_decode($data, TRUE); 直接把$data转成数组

你试一试嘛



直接 json_decode($data);是个对象,

json_decode($data, TRUE);出来就是数组
  • 打赏
  • 举报
回复
引用 9 楼 雨后阳光2014 的回复:
[quote=引用 8 楼 小姐,借一个吻 的回复:] 1,要么你上面的 $data 查询分页哪里能不能直接得到数组而不是对象 2. 可以直接用 json_decode($data, TRUE); 直接把$data转成数组 你试一试嘛
直接 json_decode($data);是个对象, json_decode($data, TRUE);出来就是数组[/quote] 嗯 是这样啊 他对象和数组不知道咋取,现在全是数组,应该知道怎么取了吧
  • 打赏
  • 举报
回复
1,要么你上面的 $data 查询分页哪里能不能直接得到数组而不是对象 2. 可以直接用 json_decode($data, TRUE); 直接把$data转成数组 你试一试嘛
Chen.java 2019-06-12
  • 打赏
  • 举报
回复
引用 6 楼 小姐,借一个吻 的回复:
一开始打印是这样的:

object(think\paginator\driver\Bootstrap)#81 (8) {
  ["simple":protected] => bool(false)
  ["items":protected] => object(think\model\Collection)#80 (1) {
    ["items":protected] => array(2) {
      [0] => object(app\admin\model\SjhModel)#76 (2) {
        ["data"] => array(6) {
          ["id"] => int(9)
          ["formdata"] => string(120) "[{"name":"姓名:","value":"王一"},{"name":"电话:","value":"13227775471"},{"name":"地址:","value":"深大"}]"
          ["page_id"] => int(6809424)
          ["site_id"] => int(6812775)
          ["time"] => string(19) "2019-05-15 14:20:47"
          ["other"] => string(1) "A"
        }
        ["relation"] => array(0) {
        }
      }
      [1] => object(app\admin\model\SjhModel)#78 (2) {
        ["data"] => array(6) {
          ["id"] => int(8)
          ["formdata"] => string(120) "[{"name":"姓名:","value":"张六"},{"name":"电话:","value":"13224445896"},{"name":"地址:","value":"凤阳"}]"
          ["page_id"] => int(6809424)
          ["site_id"] => int(6812775)
          ["time"] => NULL
          ["other"] => NULL
        }
        ["relation"] => array(0) {
        }
      }
    }
  }
  ["currentPage":protected] => int(1)
  ["lastPage":protected] => int(1)
  ["total":protected] => int(2)
  ["listRows":protected] => int(50)
  ["hasMore":protected] => bool(false)
  ["options":protected] => array(6) {
    ["var_page"] => string(4) "page"
    ["path"] => string(9) "/sjh.html"
    ["query"] => array(0) {
    }
    ["fragment"] => string(0) ""
    ["type"] => string(9) "bootstrap"
    ["list_rows"] => int(15)
  }
}
你看下我的思路哪里不对,我想提取出来电话号码或者直接去掉里面name和value输出:

    public function show()
    {
        $data = SjhModel::order('id', 'desc')->paginate(50);
        if(!$data){
            return $this->fetch('index/none');
        }
      
      	dump($data);die;
        $this->assign('data',$data);
      	
      	foreach ($data as $k => $a){
          	//$data = $data->toArray();
          	//echo $k, ':', $a['formdata']."<br>";
          	//$b = json_encode($a['formdata']);
          	$b = $a['formdata'];
          	print_r(json_decode($b, TRUE));
          	//print_r($b);
		}
        //dump($a);dump($data);die;
        //var_dump($data[0]['formdata']);die;
      	//return $a;
      	$this->assign('a',$a);
      
        return $this->fetch('sjh/sjhlist');
    }
  • 打赏
  • 举报
回复
需要什么,你自己拿

public function siel(){
        $array = array(
            array(
                'id'=>'1',
                'fromdata'=>'[{"name":"姓名:","value":"张六"},{"name":"电话:","value":"1321522525"},{"name":"地址:","value":"深刻"}]',
                'page_id'=>1253321,
                'site'=>1321
            ),
            array(
                'id'=>'2',
                'fromdata'=>'[{"name":"姓名:","value":"实时"},{"name":"电话:","value":"125225225"},{"name":"地址:","value":"放大"}]',
                'page_id'=>132165,
                'site'=>1321
            )
        );

        foreach ($array as $k=>$v){
            $array[$k][] = json_decode($v['fromdata'],true);
        }
        var_dump($array);die;
    }
Chen.java 2019-06-11
  • 打赏
  • 举报
回复
引用 1 楼 雨后阳光2014 的回复:
拿出数据,jsondecode那个formdata,再循环遍历这个数据就好了!
能麻烦前辈给个代码么?QAQ
Chen.java 2019-06-11
  • 打赏
  • 举报
回复
数据拿出来是个对象,我已经jsondecode转换数组了,问题是还是不知如何遍历成可以输出到前端的格式.我目前用的是TP框架的volist输出.用别的输出也行,希望能有前辈给点代码指导.
  • 打赏
  • 举报
回复
引用 5 楼 Chen.java 的回复:
[quote=引用 4 楼 小姐,借一个吻 的回复:] 需要什么,你自己拿

public function siel(){
        $array = array(
            array(
                'id'=>'1',
                'fromdata'=>'[{"name":"姓名:","value":"张六"},{"name":"电话:","value":"1321522525"},{"name":"地址:","value":"深刻"}]',
                'page_id'=>1253321,
                'site'=>1321
            ),
            array(
                'id'=>'2',
                'fromdata'=>'[{"name":"姓名:","value":"实时"},{"name":"电话:","value":"125225225"},{"name":"地址:","value":"放大"}]',
                'page_id'=>132165,
                'site'=>1321
            )
        );

        foreach ($array as $k=>$v){
            $array[$k][] = json_decode($v['fromdata'],true);
        }
        var_dump($array);die;
    }
这个我一开始就是这么写的,取不出来呀,我还是从头来吧,这整个取出来是个对象,得转换成数组,然后再遍历,我想达到去掉里面name和value的效果,直接姓名作为name王一作为value,这样可以么?[/quote] 我没有明白你说的呢 你先把数据查询出来,直接喔这样运行 ,就可以了。 咋可能取不出来呢? 你把你的代码发出来看看
Chen.java 2019-06-11
  • 打赏
  • 举报
回复
引用 4 楼 小姐,借一个吻 的回复:
需要什么,你自己拿

public function siel(){
        $array = array(
            array(
                'id'=>'1',
                'fromdata'=>'[{"name":"姓名:","value":"张六"},{"name":"电话:","value":"1321522525"},{"name":"地址:","value":"深刻"}]',
                'page_id'=>1253321,
                'site'=>1321
            ),
            array(
                'id'=>'2',
                'fromdata'=>'[{"name":"姓名:","value":"实时"},{"name":"电话:","value":"125225225"},{"name":"地址:","value":"放大"}]',
                'page_id'=>132165,
                'site'=>1321
            )
        );

        foreach ($array as $k=>$v){
            $array[$k][] = json_decode($v['fromdata'],true);
        }
        var_dump($array);die;
    }
这个我一开始就是这么写的,取不出来呀,我还是从头来吧,这整个取出来是个对象,得转换成数组,然后再遍历,我想达到去掉里面name和value的效果,直接姓名作为name王一作为value,这样可以么?
拥有翅膀的鱼 2019-06-10
  • 打赏
  • 举报
回复
拿出数据,jsondecode那个formdata,再循环遍历这个数据就好了!
.serializeArray() 序列化表格元素 (类似 ‘.serialize()’ 方法) 返回 JSON 数据结构数据。(摘自jquery文档)。 有以下一个表单窗口,代码: 代码如下: <form action=”” method=”post” id=”tf”>

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

姓名: <input type=”text” id=”txtUserName” name=”UserName” /> 联系手机: