使用php for循环动态输入名称

时间:2011-07-21 16:58:37

标签: php mysql for-loop

我已经获得了一些文本框,这些文本框将使用数据库中的名称填充。

我创建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. ------

3 个答案:

答案 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个盒子吗?或者不是?