- checkbox извеждане от база данни
WT форуми -> PHP MySQL ASP.NET -> checkbox извеждане от база данни
Създайте нова тема Напишете отговор 
Автор Съобщение
dunix
Турист
Турист

Регистриран на: 25/07/2007 7:55 pm

Support: 3
Bonus: 5
Мнения: 570
Мнение 11/11/2018 7:00 pm     checkbox извеждане от база данни Отговорете с цитат


Здравейте,

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


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


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


извеждам резултатите по следния начин:
PHP code:

$row = mysqli_fetch_assoc($result1);
$arr = explode(",", $row['itemColor']);
while (list($n,$v)=each($arr)) {
$str.= $n.'<input type="checkbox" value="'.$v.'" name="color[]" />';
}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла Посетете сайта на потребителя
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 158
Bonus: 315
Мнения: 1475
Мнение 11/11/2018 8:31 pm      Отговорете с цитат


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

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

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

След това свързването ще стане доста по-лесно, но първо направи тази част ^^.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 158
Bonus: 315
Мнения: 1475
Мнение 11/11/2018 8:33 pm      Отговорете с цитат


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 code:
$colors = [
'бял', 'черен', 'жълт', ...
];


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

PHP code:
echo $colors[ $color_id ];


Където $color_id e всяко id в масива, получен след explode на резултата от заявката.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети