我已经获得了一些文本框,这些文本框将使用数据库中的名称填充。
我创建5个textinputs,使用for .. loop
for($i=1; $i<=5; $i++) {
echo '<input type="text" value="">';
}
我的问题是如何动态输入每个文本框的名称。
我试过了:
$q = $db->query("SELECT * FROM att WHERE id_bs_res='$id_bs_res'");
for($i=1; $i<=5; $i++) {
while($r = $q->fetch_assoc()) {
echo '<input type="text" value="'.$r['att_name'].'">';
}
}
如果数据库中有3个名称,它只显示3个而不是5个文本框? 我希望它显示所有文本框,即使其余的文本框都是空白的。
sample textboxes
1. names
2. names
3. names
4. ------
5. ------
答案 0 :(得分:2)
删除内部while循环。
$q = $db->query("SELECT * FROM att WHERE id_bs_res='$id_bs_res'");
for($i=1; $i<=5; $i++) {
$r = $q->fetch_assoc();
echo '<input type="text" value="'.isset($r['att_name'])?$r['att_name']:''.'">';
}
当然,更好地检查返回行的计数,并且在显示3行后不调用fetch_assoc(),只输出下2行
答案 1 :(得分:1)
并不总是使用函数返回并在if语句中设置变量的忠实粉丝,但这应该做你想要的:
$q = $db->query("SELECT * FROM att WHERE id_bs_res='$id_bs_res'");
for($i=1; $i<=5; $i++) {
if($r = $q->fetch_assoc()) {
echo '<input type="text" value="'.$r['att_name'].'">';
} else {
echo '<input type="text" value="">';
}
}
基本上,如果有一个有效的行,它将使用正确的值回显一个输入框,如果没有,它只会回显一个空白框。
答案 2 :(得分:0)
也许你可以使用它:http://php.net/manual/en/control-structures.foreach.php 我认为这解决了所有问题:)(如果我是正确的)
哦,我不明白你最后一个问题?即使只有3个名字,你想显示至少5个盒子吗?或者不是?