【问题标题】:Form post of array in sequence of post in php codeigniter在php codeigniter中按帖子顺序形成数组帖子
【发布时间】:2019-03-14 02:26:35
【问题描述】:

我有一个包含 10 个不同输入字段的表单,它们以任意顺序附加。

示例:附加图片

获取数据的代码如下:

$news['paragraph'] = $this->input->post('paragraph');
$news['sub_heading'] = $this->input->post('sub_heading');       
$news['blurb'] = $this->input->post('blurb');       
$news['gallery_image'] = $this->input->post('gallery_image');       
$postdescription = $this->input->post('postdescription');
$news['pd_output'] = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $postdescription);   
$news['youtube_url'] = $this->input->post('youtube_url');       
$news['caption'] = $this->input->post('caption');       
$news['facebook'] = $this->input->post('facebook');
$news['twitter'] = $this->input->post('twitter');       
$news['instagram'] = $this->input->post('instagram');
$empty_data = array_filter($news);
$keys = array_keys($news_array);
    foreach($news_array as $key => $value){ 
        foreach($value as $val){
            $data_two = array( 
                'array_key'     => $key,
                'content'       => $val,
                'news_id'       => $this->input->post('object_id'),
                'created_on'    => date("Y-m-d"),
            );
            $this->db->insert('tbl_news_content',$data_two);
        }
    }   

在 foreach 循环中获取类似的数组

[paragraph] => Array
    (
        [0] => 1
        [1] => 2
    )

[sub_heading] => Array
    (
        [0] => 1
        [1] => 2
    )

我正在从数组中获取键和值;但我希望在添加表单时输入我的数据。

段落 副标题 图片 段落 段落 图片

我有一张 3 列的表

身份证 键名 内容

Key_name 的值为 Key 内容的价值将是关键的价值

问题是数据被插入为

id key_name 内容 1 段 1 2 第 2 段 3 副标题 1 4 副标题 2

数据没有按照添加表单时提到的顺序插入。

谢谢

【问题讨论】:

  • 可以展示一下你的SQL语句吗?
  • 或者您能告诉我们您希望 SQL 查询的样子吗?
  • $keys = array_keys($news_array); foreach($news_array as $key => $value){ foreach($value as $val){ $data_two = array( 'array_key' => $key, 'content' => $val, 'news_id' => $this ->input->post('object_id'), 'created_on' => date("Ymd"), ); $this->db->insert('tbl_news_content',$data_two); } }
  • 我会更新我的帖子。谢谢

标签: php arrays codeigniter


【解决方案1】:

感谢 sietse85 查看代码并不厌其烦地回答我的问题。我已经更改了每个字段的输入名称,方法是附加 $x,之前添加“-”和爆炸,在插入之前删除相同的名称。

如果对某人有帮助,这里是代码。

    $data = $this->input->post();
    $objectId = $data['object_id'];
    unset($data['which_ever_field']);
    foreach($data as $key => $value){
        $exp = explode("-",$key);
        $data_two = array(
            'array_key'     => $exp[0],
            'content'       => $value,
            'news_id'       => $objectId,
        );
        $this->db->insert('tbl_news_content',$data_two);                    
    }

【讨论】:

    【解决方案2】:

    我假设这是您想要实现的,它还假设 id 列是 INT PRIMARY KEY AUTO_INCREMENT:

    foreach ($news as $key => $value) {
    
        $sql = sprintf('INSERT INTO your_table (key_name, content) 
            VALUES("%s", "%s")',
            $key, $value
        );
        //execute query in loop
    
    }
    

    【讨论】:

    • 嗨,在表单中添加为段落值1,子标题值1,段落值2,子标题值2,但是当它进入数据库时​​,它添加为id 1段落值1,id 2 ,第 2 段,id 3,子标题 1,id 4,子标题 2...是的,我正在使用 id 作为 INT PRIMARY KEY AUTO INCREMENT
    • 您在我的回答中尝试过这种方法吗?通过对每个字段执行查询?
    • 不,如果您尝试这种方式,它应该将每个 $news 数组项作为 1 个查询插入。您的 $db 类应该有一个插入查询的方法,例如 ->query($sql);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 2014-09-27
    相关资源
    最近更新 更多