【问题标题】:Mysql fetch array, table resultsMysql获取数组,表格结果
【发布时间】:2011-07-20 04:40:49
【问题描述】:

我对此很陌生,不知道该怎么做,

我有一个数据库,其中有一列名为“names”

我怎样才能让它显示出来?

  <tr>
  <td width="270px">Henry</td>
  <td width="270px">Jeffrey</td>
  <td width="270px">Hansel</td>
  </tr>

  <tr>
  <td width="270px">Michelle</td>
  <td width="270px">Jackson</td>
  <td width="270px">Ivan</td>
  </tr>

我只知道如果记录一个接一个垂直排列我应该怎么做。

  $result = mysql_query('SELECT * FROM member');

  while($row = mysql_fetch_array($result))
  {
  echo'
  <tr>
  <td width="270px">'.$row['names'].'</td>
  <td width="270px">Jeffrey</td>
  <td width="270px">Hansel</td>
  </tr>';

有点卡在这里...

对不起,我忘了放这个。

我想要的是它应该循环标记。所以我可以有一个包含无限行的 3 列表。

这个呢?如果我想让它循环怎么办?

<tr>
<td><img src="images/ava/A.png" /></td>
<td>A</td>
<td width="2px" rowspan="3"></td>
<td><img src="images/ava/B.png" /></td>
<td>B</td>
</tr>


<tr>
<td>A</td>
<td>B</td>
</tr>

【问题讨论】:

    标签: php loops while-loop


    【解决方案1】:

    $row 将在循环的每次迭代中更新:

    $result = mysql_query('SELECT * FROM member');
    
    echo '<tr>';
    
    for($i = 0; $row = mysql_fetch_array($result); $i = ($i+1)%3){
        echo '<td width="270px">'.$row['names'].'</td>';
        if($i == 2)
            echo '</tr><tr>';
    }
    
    echo '</tr>';
    

    【讨论】:

    • 谢谢,但我已经编辑了我的意思,忘了把它放进去。
    • 我想要的是它应该循环 标签。所以我可以有一个无限行的 3 列表。
    • 感谢 Paul :) 完全按照我的意愿工作,但如果您介意向我解释一下,我将不胜感激! ($i+1)%3 实际上做了什么?
    • % 是取模运算符。它返回除法的余数。所以10 % 4 == 29 % 3 == 0 ($i+1) 只是增加i,% 3 是在每次达到3 时将其设置回0,所以i 计数为:0,1,2,0,1,2,0,1...
    • 可爱 :) 非常感谢您提供的信息和帮助!
    【解决方案2】:
    $result = mysql_query('SELECT * FROM member');
      echo'<tr>'
      while($row = mysql_fetch_array($result))
      {
    
      echo '<td width="270px">'.$row['names'].'</td>';
      }
    
      echo '</tr>';
    

    【讨论】:

      【解决方案3】:
      $result = mysql_query('SELECT * FROM member');
      
      echo '<tr>;
      
      while($row = mysql_fetch_array($result))
      {
      
          echo '<td width="270px">'.$row['names'].'</td>';
      }
      
      echo '</tr>';
      

      【讨论】:

        【解决方案4】:

        假设您有一个名为 $names 的名称数组,那么您可以使用如下所示的代码执行您想要的操作:

        <tr>
        <?php
        
        foreach($names as $name) {
            print "<td>$name</td>";
        }
        ?>
        </tr>
        

        这会将所有名称放在同一行。

        为了开始一个新行,比如每 3 个名字,你可以像这样在 for 循环中放置一个 if 语句:

        // assume we have these variables available.
        $row_number;
        $max_cols = 3;
        
        // this goes at the top of the foreach
        if($row_number % $max_cols == 0) {
            print '</tr><tr>';
        }
        

        【讨论】:

          【解决方案5】:

          您知道通过在启动变量之前分配行数和几个标志来了解初始化循环或开始/结束循环来实现这一点。

          $i = 1;
          $initFlag = false;
          $flag = "closed";
          while($row = mysql_fetch_array($result)) {
              if($i%3 == 0) $initFlag = false;
              if($flag == "closed" && ($i == 1 || $i % 3 == 1)) { 
                  echo "<tr>"; $flag = "started"; $initFlag = true; 
              }
          
              echo '<td width="270px">'.$row['names'].'</td>';
          
              if(!initFlag && $flag == "started" && $i % 3 ==0) { 
                  echo "</tr>"; $flag = "closed"; 
              }
          
          
              $i++;
          }
          

          【讨论】:

            【解决方案6】:

            所以这些答案中的大多数都是为了拼凑而成的。首先,如果您想要的只是结果集中的名称,那么只需询问即可。所以与其一起去:

            $result = mysql_query('SELECT * FROM member');
            

            改为:

            $result = mysql_query('SELECT names FROM member');
            

            此外,似乎每个人都忽略了三列请求,这可以通过使用模来判断何时中断行来满足。我们会做一些小魔术来确保您始终关闭行标签。

            $row_count = 0;
            while($row = mysql_fetch_array($result))
              {
              if( $row_count % 3 == 0 )
                {
                   echo '<tr>';
                }
                echo '<td width="270px">'.$row['names'].'</td>';
              if( $row_count % 3 == 0 )
                {
                   echo '</tr>';
                }
              $row_count++; 
              }
            

            我不想对您的架构过于挑剔,但如果您可以选择,最好将表命名为 members 之类的复数而不是成员,因为您有一组行,每行代表一个“成员”。除非您的成员有多个 names,否则最好将该列称为“名称”。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-11-19
              • 2017-02-18
              • 2021-03-15
              • 1970-01-01
              • 2011-03-31
              • 2016-08-05
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多