我对php比较陌生,并且感觉我在从mysql显示数据时会走得很远。
我有一张表,我想从我的数据库中显示一些字段。
如何在不必回应表格的每一位的情况下实现这一点???
以下是代码:
<?php
$query1 = mysql_send("SELECT firstname, lastname, email, user, country FROM customers WHERE id='".$_COOKIE['custid']."'");
while ($row = mysql_fetch_array($query1))
{
echo ' <table id="account_table" style="width:550px; border:none; ">
<tr>
<td width="155">Contact Name</td>';
echo '<td width="335">';
echo $row['firstname'] ;
echo ' ';
echo $row['lastname'];
echo '</td>
</tr>
<tr>
<td>Email Address</td>
<td>';
echo $row['email'];
echo ' </td>
</tr>
<tr>
<td>Username</td>
<td>' ;
echo $row['user'];
echo '</td>
</tr>
<tr>
<td>Country</td>
<td>';
echo $row['country'];
echo '</td>
</tr>
<tr>
<td>Time Zone</td>
<td>GMT+1</td>
</tr>
<tr>
<td>Activated</td>
<td>16 Dec 2009</td>
</tr>
</table>';
}
?>
答案 0 :(得分:4)
我建议你看一些像Smarty这样的模板引擎,它允许你将表示与php代码分开。
答案 1 :(得分:3)
您可以先将所有数据提取到数组中,然后迭代该数组。没有必要用PHP回显所有HTML。
在文件顶部,您应该执行所有处理(即获取,验证数据)并在余下中执行所有操作写纯HTML ,只用PHP打印值。
这已经给你一定程度的分离。其他人提到模板引擎(Smarty等)。我不认为你真的需要它,因为PHP本身就是一个模板引擎 只是不要试图在演示文稿中做复杂的事情;)
alternative syntax for control structures对于与演示文稿结合使用非常有用,因为它更具可读性。
我稍微更改了表结构,因为你不是生成有效的HTML(你在原始代码中创建了大量具有相同ID的表)。
这只会生成一个表,每个客户都有一行。
<?php
$customers = array();
$query1 = mysql_send("SELECT firstname, lastname, email, user, country FROM customers WHERE id='".$_COOKIE['custid']."'");
while ($row = mysql_fetch_array($query1)) {
$cusomters[] = $row;
}
?>
<table id="account_table" style="width:550px; border:none;">
<tr>
<th width="155">Contact Name</th>
<th>Email Address</th>
<th>Username</th>
<th>Country</th>
<th>Time Zone</th>
<th>Activated</th>
</tr>
<?php foreach($customers as $customer): ?>
<tr>
<td width="335">
<?php echo $row['firstname'] ?>
<?php echo $row['lastname'] ?>
</td>
<td><?php echo $row['email'] ?> </td>
<td><?php echo $row['user'] ?></td>
<td><?php echo $row['country'] ?></td>
<td>GMT+1</td>
<td>16 Dec 2009</td>
</tr>
<?php endforeach; ?>
</table>
答案 2 :(得分:0)
基本看起来是正确的,虽然您需要将<table>
标签移出while循环,现在您要为每个条目创建一个表格,我的猜测是这不是您想要的。“ / p>
您还需要使用类似htmlspecialchars($row[...])
的内容准备输出以输出到浏览器。这样,如果输出包含html标签(javascript等),就可以避免潜在的问题。
答案 3 :(得分:0)
首先提出一些建议,保持窗口/标签对php手册开放。 (即,mysql_send()函数不存在)。
缩进代码,并尝试找到一致的约定来保持代码的可读性。
您正在将表标记插入到while
循环中,这是错误的。你的桌子应该包裹你的循环。
使用$ _COOKIE从数据库中进行选择真的不好。过滤并清理您的输入,然后在任何查询中使用它。
为避免混合数据表示和业务逻辑,您可以查看模板引擎。