如何使用连接将多个图像添加到商品表?

时间:2013-07-25 09:48:53

标签: php mysql image codeigniter join

我制作了一个上传表格,将多张图片上传到服务器。我还在我的模型中创建了一个函数来将文件名添加到数据库中,这一切都很有效。我想将所有图像分配给一个商品(我的数据库中的表)

我正在使用表连接向特定公司添加多个商品(我的数据库中的表)

因此,一家公司可以提供更多优惠,但优惠必须不止一个。

翻译: Aanbieding意味着提供, Bedrijven意味着公司, foto表示图片

当前案例:创建了3个优惠。因此,对于每个图像,都会创建一个商品,但是使用相同的信息,唯一的区别就是图片ID。

我加入公司,优惠和图片的表格如下:

bedrijfaanbiedingen
-------------------
idbedrijfaanbiedingen
idbedrijven
idaanbiedingen
idfotoaanbiedingen
idaanbiedingcat

正如您所看到的,可以让一家公司拥有多个优惠和多个图片。

我添加优惠的模型如下:

public function addaanbieding($image_data = array())
{
    $data1 = array(
        'Aanbieding' => $this->input->post('aanbiedingnaam'),
        'Tekst' => $this->input->post('aanbiedingomschrijving'),
        'Prijs' => $this->input->post('aanbiedingprijs'),
        'Conditie' => $this->input->post('aanbiedingconditie'),
        'prijssoort' => $this->input->post('prijsopties'),
    );      
    $this->db->insert('Aanbiedingen', $data1);

    $aanbiedingid = $this->db->insert_id();
    $catid = $this->input->post('categorie');

    if($this->db->affected_rows() >= 1) 
    { 
        $to_bedrijfaanbiedingen['idaanbiedingen'] = $this->db->insert_id();
        $to_bedrijfaanbiedingen['idbedrijven'] = $this->session->userdata('idbedrijven');
        $to_bedrijfaanbiedingen['idaanbiedingcat'] = $catid;
        $insert_data = array(
            'fotonaam' => $image_data['file_name']
        );
        $input = $this->input->post('userfile');
        if(isset($input)){
            $this->db->insert('fotoaanbiedingen', $insert_data);
        }else{
            return FALSE;
        }
        $fotoid = $this->db->insert_id();

        $to_bedrijfaanbiedingen['idbedrijven'] = $this->session->userdata('idbedrijven');
        $to_bedrijfaanbiedingen['idaanbiedingen'] = $aanbiedingid;
        $to_bedrijfaanbiedingen['idfotoaanbiedingen'] = $fotoid;

        $this->insert_bedrijfaanb2($to_bedrijfaanbiedingen);
    }; 
}

public function insert_bedrijfaanb2($data) 
{ 
    $this->db->insert('bedrijfaanbiedingen', $data); 
    return $this->db->affected_rows() >= 1 ? TRUE : FALSE; 
}

我希望很清楚我想要什么。

我希望1家公司提供2张或更多图片的优惠。

编辑:

我的整个表结构:

bedrijven (companies)
---------
idbedrijven
bedrijfsnaam
profiel
plaats
telefoonnummer
etc...

Aanbiedingen (offers)
------------
idaanbiedingen
Aanbieding
prijs
conditie
etc..

bedrijfaanbiedingen (companyoffers)
-------------------
idbedrijfaanbiedingen
idbedrijven
idaanbiedingen
idfotoaanbiedingen
idaanbiedingcat

fotoaanbiedingen
---------------
idfotoaanbiedingen
file_name

1 个答案:

答案 0 :(得分:0)

嗯,它并不完全清楚你想要什么(对不起)所以如果我解释错误的话,请原谅我。我认为您要做的是在数据库中实现一对多关系。如果图像数量是任意的,最好使用链接表 我在下面描述的系统将允许您将有效数量的图像链接到公司,公司提供和提供给公司。

我不确定你的桌子是如何构建的所以我会做些什么:

公司(company_id,company_name) 图片(image_id,image_url) 优惠(offer_id,offer_details) Company_offer(company_offer_id,company_id,offer_id) Image_offer(image_offer_id,image_id,offer_id)

Image_company(image_company_id,image_id,company_id)//如果您希望将图片链接到没有报价的公司,则可选。

已创建优惠。您可以使用company_offer将公司链接到商品,使用image_offer将商品图片链接到商品。

sql将遵循:

SELECT company_name,image_url,{others} FROM Company LEFT JOIN Company_offer ON Company.company_id = Company_offer.company_id LEFT JOIN Image_offer ON Company_offer.offer_id = Image_offer.offer_id LEFT JOIN Image ON Image_offer.image_id = Image.image_id 在哪里{where criteria to here} //注意这个sql是未经测试的。

这里幸福的关键是数据库设计。如果将每个表中存储的数据保持在最低限度(理想情况下表中的非id数据应该在其他地方重复),则可以轻松实现一对多关系。如果您想了解更多信息,请查看第4个Normal Form。它确实会产生大量的小桌子,偶尔会有一些粗糙的连接,但结果通常是一个更容易导航的系统,而且存储成本更低。