checkbox извеждане от база данни

dunix

Registered
Здравейте,

Имам две таблици - item и itemColor.
В таблицата item имам колона itemColor в която записвам id-тата от таблицата itemColor по този начин: 1,2,3. После ги explode и ми показва array-a по този начин:
PHP:
array(3) {
  [0]=>  string(1) "1"
  [1]=>  string(1) "2"
  [2]=>  string(1) "3"
}

а моята целт е да направя array-я да ми е
PHP:
array(3) {
  [1]=>  string(5) "черен"
  [2]=>  string(3) "бял"
  [3]=>  string(6) "червен"
}

Заявката към базата данни ми е:
PHP:
$result1 = $db->query("SELECT i.*, c.colorName 
		FROM `items` i , `itemcolors` c
		WHERE i.itemId='$id' LIMIT 1");

извеждам резултатите по следния начин:
PHP:
$row = mysqli_fetch_assoc($result1);
$arr = explode(",", $row['itemColor']);
while (list($n,$v)=each($arr)) {
$str.= $n.'<input type="checkbox" value="'.$v.'" name="color[]" />';
}
 
Щом всеки item има множество цветове, правилата (гугълни db normalization) указват да направиш свързваща таблица между items и colors.

А в момента, вместо това в items имаш колона itemColors, в която записваш масив. А това те затруднява доста при изваждането на имената на цветовете по id.

В свърващата таблица itemColors ще имаш 2 колони - item_id, color_id. От таблицата items махаш itemColors. Сега в новата таблица на всеки ред записваш двойка (item, color), като за всеки цвят на даден item ще имаш отделен ред в itemColor.

След това свързването ще стане доста по-лесно, но първо направи тази част ^^.
 
anonimen каза:
Щом всеки item има множество цветове, правилата (гугълни db normalization) указват да направиш свързваща таблица между items и colors.

А в момента, вместо това в items имаш колона itemColors, в която записваш масив. А това те затруднява доста при изваждането на имената на цветовете по id.

В свърващата таблица itemColors ще имаш 2 колони - item_id, color_id. От таблицата items махаш itemColors. Сега в новата таблица на всеки ред записваш двойка (item, color), като за всеки цвят на даден item ще имаш отделен ред в itemColor.

След това свързването ще стане доста по-лесно, но първо направи тази част ^^.

A ако все пак искаш да действаш quick and dirty, можеш да направиш така:

PHP:
$colors = [
'бял', 'черен', 'жълт', ...
];

Като на съответната позиция в масива записваш името на съответния цвят. След това извеждаш името на цвета така:

PHP:
echo $colors[ $color_id ];

Където $color_id e всяко id в масива, получен след explode на резултата от заявката.
 

Горе