我几周来一直在研究这个话题。我正在创建一个从MsSQL服务器中提取信息的网页。我的问题是哪个部分的复选框很少。 如果在SQL数据库中找到它们,则应该检查复选框。 如果借款人使用“储蓄”,“检查”和“股票”中的钱,则应在HTML页面中检查这些复选框。在我的情况下,它只检查SQL搜索列表的第一行上的任何内容。因此,如果列表在第一行上有“正在保存”,则只会选中“保存”复选框,而不会检查列表中的其余部分。我尝试使用循环(while($ r-> EOF)),但随后它选择了列表末尾的任何内容。这是我用来从SQL服务器提取数据的方法。预先感谢您的帮助。真的很感激!
function __construct($_ldid, $_lrid)
$this->ldid = $_ldid;
$this->lrid = $_lrid;
//$loan is defined in the PHP.class (which is shown below).
$q = ("SELECT * FROM Tabel_name where loan_id = 885775")
$v = array($_ldid, $_lrid);
$r = $db->Execute($q, $v);
$this->downpaymenttype = $r->fields; //<- I think I have this line done wrong because it is suppose to store the outputs to an array.
//So wherever the "$loan" is in HTML page, it will take the outputs from the above statement.
//The above code, which is in PHP.class file, outputs the following(or suppose to):
1 885775 Checking
2 885775 Saving
3 885775 Gift
在HTML网页中,以下代码应根据输出选中标记框:
<input type="checkbox" name="DPS1[]" id="DPS1-{$key}" {if $loan-> downpaymenttype.downpaymentsource == "Checking"} checked {/if}/>
<input type="checkbox" name="DPS2[]" id="DPS2-{$key}" {if $loan-> downpaymenttype.downpaymentsource == "Saving"} checked {/if}/>
<input type="checkbox" name="DPS3[]" id="DPS3-{$key}" {if $loan-> downpaymenttype.downpaymentsource == "Gift"} checked {/if}/>
仅检查“检查”复选框,因为这是第一行的那个。
我也尝试循环,但它不存储在数组中(我想我不知道如何使用数组进行会话)
$q = ("SELECT Tabel_name FROM loan_downpaymentsource where loan_id = 885775");
$v = array($_ldid, $_lrid));
$r = $db->Execute($q, $v);
while(!$r->EOF) {
$this->downpaymenttype = $r->fields;
$r->MoveNext();
}
答案 0 :(得分:2)
在显示和设置标志之前添加循环以完成结果。 $ r-&gt;字段只会抓取当前行的字段。您需要遍历整个行集以查看其他行集是否已设置。
类似的东西(看起来你正在使用adodb或类似的东西)
$checking = false;
$saving = false;
$gift = false;
while(!$r->EOF){
$row = $r->fields;
switch($row->downpaymenttype){
case 'Checking':
$checking=true;
break;
case 'Saving':
$saving=true;
break;
case 'Gift':
$gift=true;
break;
default:
break;
}
$r->moveNext();
}
现在在你的视图上检查标志。我没有使用过smarty,但你必须将这些标志传递给你的模板以及我确定你知道,然后更改你的复选框行来检查每个标志是否为true / false。
希望有所帮助!