Php eticaret sitesinde ürünlere özellik ekleme

zer0x (1) 10 yıl önce sordu

Merhaba,

Eticaret sitelerinde ürüne ait renk beden seçimi gibi özellikleri ekleme mantığı nedir acaba ?

Açıklayıcı bi cevap alabilirsem çok sevinirim.. Mümkünse kodlarla olursa daha iyi olur.

Düzenleme:

Programlama dili PHP. Bir ürün tablom var. İD,urun_adi,fiyat,stok,açıklama

Bu ürüne özellik eklemek istiyorum mesela renk ve beden seçenekleri de olsun istiyorum. Bunun için nasıl bi mantık oluşturmam gerekiyor.

hakan 10 yıl önce

soruyu biraz daha detay girer misiniz? Program dili hangisi olacak? tablo tasarımını mı soruyorsunuz?

Toplam 2 cevap


cuneytyuksel (11) 10 yıl önce cevapladı

1- Özellik tablosu oluştur (option)
Sütunları option_id, type şeklinde olsun 

option_id -> AUTO_INCREMENT olacak,
type -> varchar(32) # radio, checkbox, select gibi veriler girilmiş olacak buradan özelliğin ne şekilde gösterileceği belirlenecek.


2. Özelliğin açıklaması yani adı ( option_description )
Sütunları option_id ve name olacak. Eğer çoklu dil mevcut ise lang_id sütunuda eklenebilir.

option_id -> int(11) # option tablosundaki  option_id değerini alacak
name -> varchar(128) # Seçeneğin adını yazacağımız alan

3. Özelliğin seçenekleri için tablo oluşturmalıyız (option_value) 
Sütunları option_value_id, option_id, sort_id

option_value_id -> AUTO_INCREMENT olacak 
option_id -> int(11) option tablosundaki özelliğin id değeri gelecek
sort_id -> int(3) seçeneklerin sırasını belirmek için kullnacağız. DESC ve ya ASC ile

4. Özelliği seçeneklerinin açıklamasını girmek için tablo oluşturuyoruz (option_value_description)
Sütunları option_value_id, option_id, name eğer çoklu dil olacak ise lang_id sütunuda eklenebilir

option_value_id -> int(11) Özelliğin seçenek id değerini gireceğiz
option_id-> int(11) Özelliğin id değeri (Örneğin: Renk özelliğinin id değeri)
name -> varchar(128) Seçeneğin adı (Örneğin: Renk özelliğinin Beyaz seçeneği)

5.Ürün ile özelliği eşleştirmek için tablo oluşturuyoruz (product_option)
Sütunları product_option_id,product_id,option_id,required

product_option_id -> AUTO_INCREMENT
product_id ->int(11) hangi ürüne eklenecek ise onun id değeri
option_id -> int(11) eklenecek özelliğin id değeri
required ->int(1) özelliği seçmek zorunlu mu değil mi ayarı için 1 ve 0 değeri alacak

6. Ürünün özelliği için seçim yapılacak seçenekleri bağdaştırma (product_option_value)
Sütunları product_option_value_id, product_option_id, product_id,option_id,option_value_id,quantity,price,price_prefix,image

product_option_value_id->AUTO_INCREMENT
product_option_id -> int(11) product_option tablosundaki id değeri hangi eşleşen değere ait olduğunu belirlemek için
product_id -> int(11) ürünün id değeri
option_id -> int(11) özelliğin id değeri
option_value_id -> int(11) seçeneğin id değerini ekliyoruz
quantity -> int(3) Seçeneğin kaç adet olduğunu girmek için
price -> decimal(15,4) Seçenek seçilince ekstra para eklemek için kullanılabilir veya 0 girilebilir
price_prefix-> varchar(1) buraya + ve ya - girişi yapıp paranın artacağını ve ya eksiltileceğini belirtebiliriz
image -> varchar(255) eğer seçeneği görsel ile sunacaksak buraya resmin yolunu ve ya adını girebiliriz


Genel olarak database oluşumu bu. Benim Codeigniter framework kullanarak yaptığım projede uyguladığım sistem. Özellik ve seçenek ekleme yaptığım fonksiyonuda paylaşıyorum. Not:Proje çoklu dil olduğundan language_id kafa karıştırmasın yukarıda zaten veritabanı yapısını açıkladım.

public function add_option($get_values)
	{
		$option_insert_data = array(
			'type'			=> $get_values['type'],
			'sort_order'	=> (int) $get_values['sort_order']
		);
		$this->db->insert('option', $option_insert_data);
		$option_id = $this->db->insert_id();
		
		foreach ($get_values['option_description'] as $language_id => $value) {
			$option_description_insert_data = array(
				'option_id'		=> (int) $option_id,
				'language_id'	=> (int) $language_id,
				'name'			=> $value['name']
			);
			$this->db->insert('option_description', $option_description_insert_data);
		}

		if (isset($get_values['option_value'])) {
			foreach ($get_values['option_value'] as $option_value) {
				$option_value_insert_data = array(
					'option_id'		=> (int) $option_id,
					'sort_order'	=> (int) $option_value['sort_order']
				);
				$this->db->insert('option_value', $option_value_insert_data);

				$option_value_id = $this->db->insert_id();

				foreach ($option_value['option_value_description'] as $language_id => $option_value_description) {
					$option_value_description_insert_data = array(
						'option_value_id'	=> (int) $option_value_id,
						'language_id'		=> (int) $language_id,
						'option_id'			=> (int) $option_id,
						'name'				=> $option_value_description['name']
					);
					$this->db->insert('option_value_description', $option_value_description_insert_data);
				}
			}
		}
		return TRUE;
	}

    
    Umarım işinize yarar. Kolay gelsin.

haci100 (1) 10 yıl önce cevapladı

Merhaba,

Çok faydalı bir örnek teşekkürler...

Mümkünse rica etsem bu özelliklerin eklendiği panelin görsel izlemesini koyarmısınız ?

Teşekkürler...