使用PHP创建表并从MySQL填充

时间:2010-06-16 03:31:33

标签: php html mysql html-table

我正在创建一个要在网页上显示的表格,该表格是从MySQL数据库中的数据填充的。我正在尝试做一些让我很难的事情。

首先,我试图通过JavaScript调用HTML中的单独文件中存在的PHP代码。我认为我的工作正常,但我不是百分百肯定(因为表格不会显示)。我认为它正常工作,因为表格(在PHP文件中)的部分显示在FireBug中。

其次我试图让它变成行以交替颜色以便于查看。到目前为止我的PHP代码如下。该表在任何浏览器中都不会显示。

    $query = "SELECT * FROM employees";
    $result = mysql_query($query);

    $num = mysql_num_rows($result);

    echo '<table>';

    for ($i = 0; $i < $num; $i++){
        $row = mysql_fetch_array($result);
        $id = $row['id'];
        $l_name = $row['l_name'];
        $f_name = $row['f_name'];
        $ssn = $row['ssn'];

        $class = (($i % 2) == 0) ? "table_odd_row" : "table_even_row";

        echo "<tr>";
            echo "<td class=" . $class . ">$wrap_id</td>";
            echo "<td class=" . $class . ">$wrap_l_name</td>";
            echo "<td class=" . $class . ">$wrap_f_name</td>";
            echo "<td class=" . $class . ">$wrap_ssn</td>";
        echo "</tr>";

    }

    echo '</table>';

    mysql_close($link);

}

修改

回答几个问题:

@controlfreak123,我不确定你的意思是“include('filename_with_php_in_it')”。对于未被调用的页面,我认为它正在被调用并且正在进行联系。我在原始问题中指出,我认为这是正确的,因为FireBug显示了表的代码,并且该代码位于单独的PHP文件中,因此必须在HTML文件和PHP文件之间进行通信。以下是我如果您想知道如何从HTML文件中调用PHP文件:

<script language="javascript" type="text/javascript" src="/Management/Employee_Management.php?action=Edit_Employee"></script>
@Matt S,我没有太多的输出方式,事实上我不知道我得到任何东西,直到我看到FireBug并看到PHP代码(或其中一些)确实是被传递给HTML文件。具体问题是如何从MySQL数据库中获取我想要的数据并通过PHP将其填充到HTML表中。我还可以确认employees中确实有数据,我输入了两个用于测试的条目。我可以尝试将代码放入自己的文件而不使用你建议的JavaScript,但这会打败我的目的,因为我希望我的HTML和PHP文件是分开的,但我可能只是为了看看PHP代码是否良好并确保JavaScript没有破坏它。

@Aaron,我不确定你在问什么(对不起)。该代码用于填充在HTML页面上创建和填充表格。

3 个答案:

答案 0 :(得分:15)

以下是您正在寻找的完整示例:

  1. 使用php
  2. 从mysql中提取一些数据
  3. 将该数据放入html表格
  4. 将交替的彩色行应用于表格
  5. 对于造型我欺骗了一点并使用jquery,我发现你想要做的事情要容易一些。

    另外,请记住$ row [field]区分大小写。所以$ row [id]!= $ row [ID]。

    希望这会有所帮助:

    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
            <style type="text/css">
                tr.header
                {
                    font-weight:bold;
                }
                tr.alt
                {
                    background-color: #777777;
                }
            </style>
            <script type="text/javascript">
                $(document).ready(function(){
                   $('.striped tr:even').addClass('alt');
                });
            </script>
            <title></title>
        </head>
        <body>
            <?php
    
                $server = mysql_connect("localhost","root", "");
                $db =  mysql_select_db("MyDatabase",$server);
                $query = mysql_query("select * from employees");
            ?>
            <table class="striped">
                <tr class="header">
                    <td>Id</td>
                    <td>Name</td>
                    <td>Title</td>
                </tr>
                <?php
                   while ($row = mysql_fetch_array($query)) {
                       echo "<tr>";
                       echo "<td>".$row[ID]."</td>";
                       echo "<td>".$row[Name]."</td>";
                       echo "<td>".$row[Title]."</td>";
                       echo "</tr>";
                   }
    
                ?>
            </table>
        </body>
    </html>
    

    这是表格代码,仅使用PHP来替换您在示例中尝试执行的样式:

        <table class="striped">
            <tr class="header">
                <td>Id</td>
                <td>Title</td>
                <td>Date</td>
            </tr>
            <?php
               $i = 0;
               while ($row = mysql_fetch_array($query)) {
                   $class = ($i == 0) ? "" : "alt";
                   echo "<tr class=\"".$class."\">";
                   echo "<td>".$row[ID]."</td>";
                   echo "<td>".$row[Name]."</td>";
                   echo "<td>".$row[Title]."</td>";
                   echo "</tr>";
                   $i = ($i==0) ? 1:0;
               }
    
            ?>
        </table>
    

答案 1 :(得分:3)

您的代码未执行的原因是您不能将PHP包含在Script标记中。您必须使用PHP的include函数,并且必须将原始页面解析为PHP。

<?php
include('./my_other_file.php');
?>

答案 2 :(得分:0)

编码的开始有点不对劲。它应该是: -

<?php
$query = "SELECT * FROM employees";
$result = mysql_query($query);

$num = mysql_num_rows($result);

echo '<table>';

if($num) {
    while( $row = mysql_fetch_array($result) ) {
        // all logic for each of the rows comes here
    }
}
else {
    // no rows fetched, so display proper message in a row
}

echo "</table>";
?>

第一次在资源处理程序上使用“mysql_fetch_array”函数,之后它无法正常工作。这个答案可能看起来有点模糊,但我已经多次看过了,所以我总是使用“while”或“do-while”循环从DB中获取多行。

尝试使用上述代码,&amp;看看是否有任何信息。