如何使表格在数据库中的所有相同列中连续打印出来?

时间:2014-07-24 17:36:37

标签: php html mysql

我在这里尝试做的是回显我的数据库中的每个列“单位”。在我的数据库中,我有列:评估,单位,百分比和截止日期。我想让所有单位连续出现在桌子上,因为我试图这样做,但似乎无法找到如何做到这一点。这是我尝试过的代码<?php echo $unit ?>,但似乎没有用。 实施例

我的数据库:

project0     unit1     15%     22-07-2014
project1     unit1     10%     24-07-2014
project2     unit2     20%     27-07-2014
project3     unit3     30%     29-07-2014

代码

<?php
mysql_connect('localhost','root','root');
mysql_select_db('Eviden');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
    <table width="200" border="1">
    <?php
        $result = mysql_query("SELECT * FROM peviden");
        while($row=mysql_fetch_array($result)){
            $unit=$row['unit'];
            $name=$row['name'];
      ?>
      <tr>
        <td>&nbsp;</td>
<!--I want all the units columns in the database to go on this row-->
        <td><?php echo $unit ?></td>
        <td><?php echo $unit ?></td>
        <td><?php echo $unit ?></td>
        <td><?php echo $unit ?></td>
      </tr>
      <tr>
        <td>Name</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>Sebastian</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>Zack</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>Daniel</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <?php
      }
      ?>
    </table>
</form>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

我相信这种情况正在发生,因为mysql_fetch_array会返回一个数组,它会将每行的结果存储为

row[0] // evaluation row[1] // unit row[2] // percent row[3] // due date

尝试使用数组格式,并可选择指定数组的顺序:

<?php $result = mysql_query("SELECT evaluation, unit, percent, due_date FROM peviden"); while($row=mysql_fetch_array($result)){ $evaluation=$row[0]; $unit=$row[1]; $percent=$row[2]; $duedate=$row[3]; ?>

答案 1 :(得分:0)

您要做的第一件事就是修复数据库调用。现在,您循环遍历结果并在循环的每次迭代中为$ unit分配一个新值。所以,我们将在这里解决这个问题:

$result = mysql_query("SELECT * FROM peviden");

// New Array to avoid PHP notifications
$unitsArray = array();

// Start our loop over our results
while($row=mysql_fetch_array($result)){
    // Add an entry to our array with two values for unit and name
    $unitsArray[] = array( 'unit' => $row['unit'],
                         'name' => $row['name']
                       );
}

现在我们已将所有单位分配到可用值,在HTML代码中,您需要再次循环它们以使其正确显示:

<td>&nbsp;</td>
<!--I want all the units columns in the database to go on this row-->
<?php
    foreach($unitsArray as $entry) {
?>
    <td><?php echo $entry['unit']; ?></td>
<?php
    }
?>

这将为整个表格中的每个单位创建一个TD。