Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解决javascript和数据库表逻辑问题_Javascript_Mysql - Fatal编程技术网

解决javascript和数据库表逻辑问题

解决javascript和数据库表逻辑问题,javascript,mysql,Javascript,Mysql,当我查询数据库表时,我会返回表示某个项是否存在(该项是列名)的记录的值“是”或“否”。我想创建一个字符串来表示按名称提供的产品(而不是我现在所做的“kitchen table=“+kitchenTable 我认为这可以通过一系列if语句来解决(很糟糕),这些if语句将变量设置为product name或“”,然后在字符串中包含所有变量 var kt; if (kitchenTable == yes) kt = "kitchen table"; else kt = ""; if (kitch

当我查询数据库表时,我会返回表示某个项是否存在(该项是列名)的记录的值“是”或“否”。我想创建一个字符串来表示按名称提供的产品(而不是我现在所做的“kitchen table=“+kitchenTable

我认为这可以通过一系列if语句来解决(很糟糕),这些if语句将变量设置为product name或“”,然后在字符串中包含所有变量

var kt; 
if (kitchenTable == yes) kt = "kitchen table"; 
else kt = ""; 
if (kitchenCabinet == yes) kc = "kitchen cabinet";
else ka = "";

output = kt + ', ' + kc; 

大约有50个项目可以呈现给用户,是否有更有效的方法来完成此任务?一个选项是更改值输入到datbase表中的方式,使其不是“是”,而是项目名称,但这似乎是解决此问题的一种更差的方法

当然,您没有给出有关如何o您创建的查询是一个模拟查询的函数的虚拟模型

var available = [];

var result = query("kitchen table");
result === "yes" && ( available.push("kitchen table") );

var output = available.join();

您想要的实际上是内置在javascript本身中的

我想说,通过组织代码并将其转换为更可读的格式,在这种情况下,使用对象文字将真正简化您的生活

我还建议您将服务器数据转换为true和false,因为这是一种标准化的布尔值通信方式,并允许下面的方法像它那样工作:

// From server response
var results = {
                    kitchenCabinet: true,
                    kitchenTable: true
}

// Use this for your storage of all related items
var kitchenProps = { 
                  kitchenCabinet: 'kitchen cabinet',
                  kitchenTable: 'kitchen table'
 }

// Reuse this function for each time your need a new category (masterBathroomProps...)
function getItemDataIfExists(results, hashTable){
    'use strict';

    var output = 'Your total is: '; 

    for (var item in results) {
        if (!results.hasOwnProperty(item)) return;
        if (results[item]) output += 'A '+hashTable[item]+' ';
    }

    return output;
}


getItemDataIfExists(results, kitchenProps);
说明:

循环遍历包含键名和true false值的对象的结果集。在循环中,如果键名的值为true,则使用该键名访问属性(在本例中为您选择的字符串)。此处的“键”是指每个对象中的键名必须对齐

这是一个现场演示:


我想澄清一下;每个项目都有一列?因此,大约有50列,对吗?行是包含项目的任何内容,可能是门牌号/名称或带有某种唯一标识符的房间?我写的答案对您有何作用?抱歉,目前所有数据都是从ajax传递到javascript的,一旦我完成了这项工作我会尝试在ajax方面完成这项任务……但现在我想用简单的方法来完成。