0

我有很多服装的订单;它使用来自数据库的级联选择来填充。表单的下一部分是一系列输入字段,用于输入每种尺寸的数量。从 YXS-4XL 有 13 种尺寸。我想为我的数据库项目提供一个属性,该属性将禁用该特定服装不可用的尺寸的输入字段。

做这个的最好方式是什么?目前我能想到的就是在数据库中为每个大小插入一个列,然后调用它在表单上返回 true 或 false。但这似乎不是最好的方法。请记住,我有很多数据库项目要做。

4

3 回答 3

0

您可以使用 jquery 禁用这样的字段

    $('selector').attr('disabled', 'disabled');

再次启用

    $('selector').removeAttr('disabled');
于 2013-08-23T05:35:18.323 回答
0

为了缩短内容,您可以使用单个标志列(整数),逐位指示每篇文章的可用尺寸。标志值由对应于可用大小的这些值组成:

flag   size  2^ (bit no.)
1      XS    0
2      S     1
4      M     2
8      L     3
16     XL    4

等等。要获得多个可用的大小,只需输入两个大小标志的总和:

6      S,M

可以使用MySQL、PHP 和 JavaScript 中可用的按位运算AND符 ( )轻松检查各个大小。&一个标准int列(4 个字节)已经允许您跟踪多达 32 种不同的大小及其所有可能的组合。

在 SQL 语句中,当您想确保大小 M 可用时,只需使用 WHERE 子句

WHERE flag&4 > 0

或者在 JavaScript 部分中,您可以轻松地确定要激活哪些复选框,方法是使用active = xl_flg & flag > 0where flagis the variable contains the value from your MySQL column (可能通过 AJAX) 和 xl_flag 是输入字段的属性(或来自周围<div>)。然后,您可以对输入元素的值(真或active假)进行操作。hide()show()

如果您想在后台设置或取消设置项目的可用性,只需执行以下操作 (PHP):

// working with constants makes your life easier ... ;-)
define("XS", 0);
define("S",  1);
define("M",  2);
define("L",  4);
define("XL", 8);

// typically the following information is provided by an AJAX post 
// for example by adding the values of checked checkboxes ...
$sizes= S + M + XL; // = 11 

-- set (MySQL query string in PHP):
$sql = "UPDATE ... SET flag = flag & $sizes WHERE ... ";

-- unset 
$sql = "UPDATE ... SET flag = flag & ~$sizes WHERE ... ";

~反转数字中的所有位(就像逻辑一样NOT)。&和的组合~关闭在第二个操作数中设置的位。

于 2013-08-23T05:36:15.820 回答
0

在onchange服装输入字段时使用 AJAX 调用。

{'garment' : 'garment_name_or_id'} 

然后 PHP 检查数据库中的可用大小并返回。

echo json_encode($mysql_result);

然后使用 prop() 禁用输入字段。

$("input").prop('disabled', true);
于 2013-08-23T05:50:27.030 回答