2011-12-22 70 views
1

我正在設計一個非常一般的PHP產品系統,因爲每個產品可能有多個選項(「高度」,「寬度」,「顏色」 ,「性別」等),但有些產品可能沒有這些選項,有些可能沒有。例如,五斗櫥可能有「大小」(由網站用戶在某處設置的適當大小列表),「拋光」(是/否)和「塗色」(是/否)。但是,新電視可能根本沒有選擇。PHP/mySQL產品系統(非常一般)

任何人都可以推薦一種方式讓用戶設置他們對他們產品所需的選項(例如,「拋光」對於零售電器來說根本不相關),然後存儲各種選項組合的價格因爲他們爲每個產品指定?

回答

0
`options` text null, 

//DONT run this directly, it needs escaping...but you get the idea. 
insert into tablename values({['polished':(int)1, 'size':'oh_its_big']}), ({['color':'hotpink']}); 


//run your query 
$query = $db->select("* from tablename"); 

//loop query, json_decode the options string and assign to array 
foreach($query as $q) 
{ 
    $tmp[] = (array)json_decode($q->options); 
    foreach($tmp as $options) 
    { 
     //run some conditional statements 
     if(array_key_exists('size', $options)) 
     { 
      //do something 
     } 
    } 
} 
0

IMO,這是一個非常普遍的問題,您需要提供更多關於細節的信息。在我的腦海裏彈出

一種解決方案是如下

public class myAwesomeClass { 

$typeOfMyClass; //got from a DB when a user creates a new type. 
$keyAndValuePair; //holds the key=>value pair of the type's data 

} 

和訪問它在外面的世界。

$obj = new myAwesomeClass(); 
//based on $obj->typeOfMyClass value process 
foreach ($obj->keyValuePair as $key=>$value) { 

//perform your operations 

} 
+0

PS:這是這樣一個基本類的你所描述的東西,我幾乎不推薦使用此。不知道具體情況,對我來說難以完全回答:) – footy 2011-12-22 15:40:34