我有一个物料清单表,设置如下:
item - parent
显示物料清单时的最终结果是它显示如下:
item 1 - parent 0
item 2 - parent 1
item 3 - parent 1
Run Code Online (Sandbox Code Playgroud)
最终结果也可能是多层次的,如下所示:
item 3 - parent 0
item 4 - parent 3
item 76 - parent 3
Run Code Online (Sandbox Code Playgroud)
它可以无限制地继续下去:
item 76 - parent 0
item 46 - parent 76
item 46 - parent 0
item 25 - parent 46
Run Code Online (Sandbox Code Playgroud)
现在,我要么从数据库中获得1个级别:
SELECT * FROM bom WHERE parentId = $itemId (shorthand)
或者从表中拉出每一行并使用我的递归函数来理清我需要的那些,但这显然是低效的,因为我可能只需要10行,但我拉了10,000条记录.递归函数的输出只会创建一个这样的树:
item 1
item 2
item 3
item 4
item 76
item 46 …Run Code Online (Sandbox Code Playgroud) <head>
<script language="javascript">
// must have the onload handler
onload = function countRows(){
var rows = document.getElementById('myTableId').getElementsByTagName('tbody')[0].rows.length;
alert( rows);
// outputs 3
}
</script>
</head>
<body>
<table id="myTableId">
<tbody>
<tr><td></td><td><input onclick="doA_Function_That_Includes_CountRows()" />
</td></tr>
<tr><td></td><td></td></tr>
<tr><td></td><td></td></tr>
</tbody>
</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我已经阅读过这个帖子:使用预处理语句在MySQL/PHP中增加一个字段的问题,但没有看到我的问题的答案.
PDOStatement Object
(
[queryString] => UPDATE user_alerts SET notif = ? + 2 WHERE ( user_id = ? )
)
$stmt->execute( array( 'notif', '1' ) );
Run Code Online (Sandbox Code Playgroud)
据我所知,这一切都是正确的.
当上面的代码执行时,无论notif列的值是什么,它都将notif列设置为2.这就好像SQL正在读取SET notif = 2而不是SET notif = notif + 2
我无法弄明白,真的很感激帮助!
如果我输入这样的内容:a1.b22.333,我希望它输出:
1.22333或122.333
它消除了非数字字符和超过1的任何时间段.
我最好的猜测是:
obj.value = obj.value.replace( /[^0-9\.{1}]+/g , '');
obj.value = obj.value.replace( /[^0-9\.{2,}]+/g ,'');
obj.value = obj.value.replace( /[^0-9\.(?=.*\.)]+/g ,'');
Run Code Online (Sandbox Code Playgroud)
但这些都输出1.22.333
我怎样才能摆脱这段额外的时期?
谢谢你的帮助.
我发现了我已实现的这个主题(参见接受的答案):
javascript等同于PHP的call_user_func()
但是,我遇到了多个参数的问题.我意识到我正在做的是将我的参数转换为字符串并将其视为1参数,但我不知道如何解决这个问题,因为我正在动态创建参数.
意思是,我在我的代码中定义了以下内容:
var a = new Array();
a[0] = new Array();
a[0][0] = 'alert';
a[0][1] = '\'Hello World\'';
a[1] = new Array();
a[1][0] = 'setTimeout';
a[1][1] = 'alert("goodbye world")';
a[1][2] = '20';
Run Code Online (Sandbox Code Playgroud)
后来,我这样打电话给他们:
var j = 0;
var len = 0;
var fx = '';
var params = '';
for( i in a ){
params = '';
len = a[i].length;
fx = a[i][0]; // getting the function name
a[i].splice( 0, 1 ); // removing it from array
if( …Run Code Online (Sandbox Code Playgroud) 我现在已经阅读了很多主题,并没有找到一个相当重要的主题.
这是我正在尝试做的事情:
1)解析以mm/dd/yy格式提供的账单日期,通常不是今天
2)向日期添加可变天数.这些术语保存在下面的dueTime数组中.我把它限制在30天了.
3)根据账单日期+付款条件,计算账单到期日期,并以mm/dd/yy格式返回.
这是我尝试过的.我传递给新日期的信息是我所期望的,但新日期的输出绝不是我所期望的.
谢谢你的帮助.
<html>
<head>
<script>
function calculateDueTime(){
var billDate = document.getElementById('billDateId').value;
var key = document.getElementById('termsId').value;
var dueTime = new Array();
dueTime[1] = 30;
var billDate = billDate.split('/');
var newDate = new Date( parseInt( billDate[2] ) + '/' + parseInt( billDate[0] ) + '/' + ( parseInt( billDate[1] ) + parseInt( dueTime[key] ) ) );
document.getElementById('dueDateId').value = newDate.toString();
}
</script>
</head>
<body>
<input name="billDate" id="billDateId" value="5/1/11" />
Or any value in mm/dd/yy or m/d/yy format
<select …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的vardump:
Array
(
[0] => stdClass Object
(
[downloadsLeft] => 0
)
)
Run Code Online (Sandbox Code Playgroud)
它存储在变量中 $downloadsOBJ
我如何访问该数组中的downloadsLeft变量并将其存储在一个新变量中:
例如
$downloadsLeft = $downloadsOBJ['downloadsLeft'];
Run Code Online (Sandbox Code Playgroud) 这是我的表结构:
table.id(自动增量;主键)
table.qty(可能的值:0 - 1000)
行:
+----+-----+ | id | qty | +----+-----+ | 1 | 0 | | 2 | 5 | | 3 | 5 | | 4 | 10 | +----+-----+
我希望减少12的可用数量.意思是,新结果应该是:
编辑:我可能应该指定所有这些数字是任意的.它们可以是任何东西.
+----+-----+ | id | qty | +----+-----+ | 1 | 0 | | 2 | 0 | | 3 | 0 | | 4 | 8 | +----+-----+
现在,我做了以下事情:
SELECT id, qty FROM table WHERE qty > 0 …