使用 PHP 创建表并从 MySQL 填充

Posted

技术标签:

【中文标题】使用 PHP 创建表并从 MySQL 填充【英文标题】:Create table with PHP and populate from MySQL 【发布时间】:2011-03-04 07:04:14 【问题描述】:

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

首先,我试图通过 javascript 调用存在于 html 中的单独文件中的 php 代码。我认为我的工作正常,但我不是 100% 确定(因为表格不会显示)。我认为它工作正常,因为 一些 表的代码(在 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 页面上的表格。

【问题讨论】:

我建议你退后一步,从头开始。当你到目前为止的工作时,逐步添加代码。这也将使其他人更容易提供帮助。 提示:使用 include('filename_with_php_in_it');只需将该代码拉入您所在的页面即可。此外,如果它在一个 html 文件中,那么您的 php 运行时可能不会在被访问时被调用来解析页面 了解您收到的输出方式会很有帮助。似乎也没有具体的问题。你能确认employees 有数据吗?能否通过在浏览器中请求直接执行该页面(无需 JS 调用)并获得表格输出? 另一个提示。使用 =$php_variable?> 将值从 php 获取到您的代码中。它比在其中创建带有 php 值的字符串要干净得多。但请注意,您需要启用短标签才能使其正常工作。 【参考方案1】:

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

    使用php从mysql中提取一些数据 将该数据放入 html 表格中 对表格应用交替的彩色行

对于样式,我稍微作弊并使用 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>

【讨论】:

我仍然无法得到我想要的(我想我只是没有很好地解释它)所以我只是使用我所拥有的(如果我将我的 PHP 代码移动到 HTML 文件中并更改了扩展名)并将服务器配置为将 HTML 处理为 PHP。我只是想在另一个文件中使用带有单独 PHP 代码的所有 HTML。感谢您的帮助。【参考方案2】:

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

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

【讨论】:

也许我不清楚,就这个问题而言,我只有一个 HTML 文件和一个 PHP 文件。我通过 JavaScript 从 HTML 文件调用 PHP 文件中的代码。我可以将这两个文件的所有 HTML 和 PHP 代码合并到一个大的 PHP 文件中,但我不想这样做,我希望我的所有网页都是 HTML。我现在可以看到(在 FireBug 中)我想在我的表中显示的所有数据都被发送检索并从 PHP 文件发送到 HTML 文件,但由于某种原因它没有显示。我可以让它工作,但不能像我想要的那样作为两个单独的文件。 你说得很清楚,但这不是可能的。这就是我们都想表达的。没有理由像那样分开它,尽管还有其他的分离方法。模板引擎,包括 HTML 而不是反之亦然等。【参考方案3】:

编码的开头有点错误。应该是:-

<?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 中获取多行。

尝试使用上面的代码,看看是否有任何信息。

【讨论】:

以上是关于使用 PHP 创建表并从 MySQL 填充的主要内容,如果未能解决你的问题,请参考以下文章

自动创建表并从 json 文件插入数据

如何使用 ruby​​ api 创建一个 bigquery 表并从云存储导入

hsqldb-2.2.6 创建表并从脚本插入数据

Qt Ruby:动态创建表并从文本文件输入数据

连接两个表并从一列返回多个匹配项的 SQL 查询?

用于截断和重新填充表的 PLSQL 过程