2

我对 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 '&nbsp;';
    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>';

            }
?>
4

4 回答 4

4

我建议看一些像Smarty这样的模板引擎,它可以让您将演示文稿与 php 代码分开。

于 2010-05-17T20:49:56.717 回答
3

您可以先将所有数据提取到一个数组中,然后再遍历该数组。无需使用 PHP 回显所有 HTML。

文件的顶部,您应该进行所有处理(即获取、验证数据),其余部分您只需编写纯 HTML,仅使用 PHP 打印值。

这已经给了你一定程度的分离。其他人提到模板引擎(Smarty 等)。我不认为你真的需要那个,因为 PHP 本身就是一个模板引擎。
只是不要试图在您的演示文稿中做复杂的事情;)

此外,控制结构的替代语法对于与表示结合使用非常有用,因为它更具可读性。


我稍微更改了表结构,因为您没有生成有效的 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'] ?>
             &nbsp;
             <?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>
于 2010-05-17T20:54:23.470 回答
0

基础似乎是正确的,尽管您需要将<table>标签移出 while 循环,但现在您正在为每个条目创建一个表,我猜这不是您想要的。

您还需要准备输出以输出到浏览器,例如htmlspecialchars($row[...]). 这样,如果输出包含 html 标签(javascript 等),您就可以避免潜在的问题。

于 2010-05-17T20:52:17.360 回答
0

首先一些建议,保持一个窗口/标签打开到 php 手册。(即 mysql_send() 函数不存在)。

缩进你的代码,并尝试找到一个一致的约定来保持你的代码可读。

您将表格标记插入到while循环中,这是错误的。你的桌子应该包裹你的循环。

按原样使用 $_COOKIE 从您的数据库中进行选择真的很糟糕。在任何查询中使用之前过滤和清理您的输入。

为了避免混淆数据表示和业务逻辑,你可以看看模板引擎。

查看19 个有前途的 PHP 模板引擎来找到一个,或者查看wikipedia list

于 2010-05-17T20:56:21.643 回答