php - 根据 mysql 数据库项目的选择禁用输入字段

标签 php javascript jquery mysql forms

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

执行此操作的最佳方法是什么?目前我能想到的就是在数据库中为每个尺寸插入一列,然后要求它在表单上返回 true 或 false。但这似乎不是执行此操作的最佳方法。请记住,我有很多数据库项目需要执行此操作。

最佳答案

为了缩短内容,您可以使用单个标志列(整数),一点一点地指示每篇文章可用的尺寸。标志值由与可用大小相对应的以下值组成:

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

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

6      S,M

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

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

WHERE flag&4 > 0

或者在 JavaScript 部分中,您可以使用 active = xl_flg & flag > 0 之类的内容轻松确定要激活哪些复选框。哪里flag是包含来自 MySQL 列的值(可能通过 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 )。 &的组合和~关闭第二个操作数中设置的位。

关于php - 根据 mysql 数据库项目的选择禁用输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18395397/

相关文章:

php - Apigility 子路由未获取父参数

javascript - Chart.js - 以相同的 y 值连接折线图中的两个数据集

c# - 将复杂的 JSON 字符串传递给 c# 中的 1 个参数 webmethod - 反序列化为对象 (json.net)?

javascript - 创建一个 Javascript 日历(完整,不弹出)

php - 无法将两个 sql 查询合并为一个

PHP 和正则表达式只接受形式中的希腊字符

php - 如何通过 PHP 查询脚本更改 phpMyAdmin root 密码

javascript - Ajax 和 Google reCaptcha

javascript - 什么是 JavaScript "Object"?

javascript - 在按键功能上未检测到输入按键