使用 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 填充的主要内容,如果未能解决你的问题,请参考以下文章