2012-08-29 44 views
0

我需要一個從可用布的數據庫比較2個陣列尺碼 和默認大小比較2個陣列PHP中的複選框選中(保持stucture)

$sizedefault = array('s','m','l','xl','xxl','xxxl','xxxxl','xxxxxl'); // Default Sizes 
$sizeavailable = explode(',',$pd_size); // Available Sizes (db) s,m,l,xl 

$available = array_diff($sizedefault , $sizeavailable); 
$notavailable = array_intersect($sizeavailable , $sizedefault); 
$output = ""; 
foreach ($notavailable as $value){ 
$output .= "<input type=\"checkbox\" name=\"size[]\" id=\"$value\" value=\"$value\" checked=\"checked\"/><label for=\"$value\">".$value."</label>"; 

} 
foreach($available as $value){ 
$output .= "<input type=\"checkbox\" name=\"size[]\" id=\"$value\" value=\"$value\" /><label for=\"$value\">".$value."</label>"; 
} 

到目前爲止,但這樣的作品,輸出不排序之後我檢查例如: 「XXXXL」,並提交/請求

我得到這個結果:(X)=檢查

S(X)M(X)L(X)XL(x)的XXXXL (x)xxxxxl()xxl()

我該如何將它們排序爲$sizedefault

S(X)M(X)L(X)XL(x)的XXL()XXXXL(x)的xxxxxl()

+0

爲什麼會如果打印兩個數組一前一後的輸出進行排序? – kapa

+0

多數民衆贊成在什麼我問m8,我怎麼可能收到一個排序.......有沒有另一種方式comapre /檢查? thx – manga

回答

1

這是沒有必要預先建立這些陣列 - 你可以在循環運行時使用in_array()檢查可用性數組中的值是否存在。這也更好,因爲您不必複製複選框的HTML代碼,唯一的區別是checked="checked"的存在,您可以有條件地添加該代碼。

$sizedefault = array('s','m','l','xl','xxl','xxxl','xxxxl','xxxxxl'); // Default Sizes 
$sizeavailable = explode(',',$pd_size); // Available Sizes (db) s,m,l,xl 

$output = ""; 
foreach ($sizedefault as $value){ 
    $checked = in_array($value, $sizeavailable) ? ' checked="checked"' : ''; 
    $output .= "<input type=\"checkbox\" name=\"size[]\" id=\"$value\" value=\"$value\" $checked /><label for=\"$value\">".$value."</label>"; 
} 

如果$sizedefault來自外部源(如用戶,餅乾,類似的東西),或從外部源來到先前保存到數據庫之前,你也應該在打印前逃脫它裏面的值它轉換成HTML。你可以用htmlspecialchars()來做到這一點。否則,人們將能夠將腳本注入到HTML中。

foreach ($sizedefault as $value){ 
    $checked = in_array($value, $sizeavailable) ? ' checked="checked"' : ''; 
    $value = htmlspecialchars($value); 
    $output .= "<input type=\"checkbox\" name=\"size[]\" id=\"$value\" value=\"$value\" $checked /><label for=\"$value\">".$value."</label>"; 
} 
+0

完美的作品!謝謝 – manga

+0

@manga請同時閱讀我剛剛添加的關於轉義的部分。如果您對我的回答滿意,您可以通過我答案旁邊的標記接受它。 – kapa

+0

有用的信息thx,我在我的config.php作爲$ sizedefault不是從req/cookie val採取 – manga