【问题标题】:entering names dynamically using php for loop使用 php for 循环动态输入名称
【发布时间】:2011-07-21 16:58:36
【问题描述】:

我得到了将用数据库中的名称填充的文本框的数量。

我创建了 5 个文本输入,使用 for.. 循环

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. ------

【问题讨论】:

    标签: php mysql for-loop


    【解决方案1】:

    删除内部的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 行

    【讨论】:

      【解决方案2】:

      并不总是喜欢在 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="">';
          }
      } 
      

      基本上,如果有有效的行,它会回显一个具有正确值的输入框,如果没有,它会简单地回显一个空白框。

      【讨论】:

      • 这实际上与 Darhazer 的答案相同,只是没有使用三元
      【解决方案3】:

      也许你可以使用这个:http://php.net/manual/en/control-structures.foreach.php 我认为这解决了你所有的问题:)(如果我是正确的)

      哦,我不明白你的最后一个问题?即使只有 3 个名称,您是否要显示至少 5 个框?还是不行?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-28
        • 2014-05-20
        • 2014-02-10
        • 2017-12-11
        相关资源
        最近更新 更多