Mysql获取数组,表结果

时间:2011-07-20 04:40:49

标签: php loops while-loop

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

我有一个名为“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>

6 个答案:

答案 0 :(得分:3)

$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>';

答案 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>';

答案 2 :(得分:1)

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

echo '<tr>;

while($row = mysql_fetch_array($result))
{

    echo '<td width="270px">'.$row['names'].'</td>';
}

echo '</tr>';

答案 3 :(得分:1)

假设您有一个名为$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>';
}

答案 4 :(得分:1)

您知道通过在启动变量之前分配行计数以及知道初始化循环或开始/结束循环的几个标志来实现此目的。

$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++;
}

答案 5 :(得分:0)

因此大多数答案都适用于kludge。首先,如果您想要的只是结果集中的名称,那么只需要它。所以不要选择:

$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,否则该列可能最好被称为“名称”。