【问题标题】:Displaying MySQL data in a table在表中显示 MySQL 数据
【发布时间】:2018-06-02 05:58:26
【问题描述】:

我正在尝试将 MySQL 数据库中的数据整齐地组织到表中。我快到了,但在使用 while 循环时遇到了一些问题。

发布我的简单代码:

<link type="text/css" rel="stylesheet" href="style.css"/>

<?PHP 
$connect = mysql_connect("localhost","root","");

mysql_select_db("users");
$query = mysql_query("SELECT * FROM users");
    WHILE($rows = mysql_fetch_array($query)):

        $username = $rows['username'];
        $password = $rows['password'];
        $email = $rows['email'];

    echo "
    <table>
    <thead>
    <th>Username</th>
    <th>Password</th>
    <th>Email Adress</th>
    </thead>
    <tr>
    <td>$username</td>
    <td>$password</td>
    <td>$email</td>
    ";
    endwhile;
?>

这给了我这样的输出:

Username    Password    Email Adress

test           123  test@test.no

Username    Password    Email Adress

testies 123 testies@test.no

Username    Password    Email Adress

tested  12345   tested@test.no

这里明显的问题是我的标题是在 while 循环中打印的,因此我会为每个条目获得新的标题。不过这看起来真的很愚蠢,我希望标题只出现一次。关于如何做到这一点的任何想法?

我尝试在 while 循环之前使用标题开始表格,但后来的 &lt;td&gt;s 不会与标题宽度对应,因为程序不会将它们识别为同一个表格,因此不需要匹配。

【问题讨论】:

  • 取出循环外的头部代码。
  • 循环外的标题如何与结果不对应?它们是硬编码的,不依赖于您的结果集。
  • 这是非常基本的,所以我建议你多阅读一些关于一般编程的初学者教程。
  • 是的,我意识到这是非常基本的,如果它不适合该网站,请见谅。无论如何,感谢您的参与,我一定要去阅读更多内容:)

标签: php mysql html-table


【解决方案1】:

使用这个

<link type="text/css" rel="stylesheet" href="style.css"/>

<?PHP 
$connect = mysql_connect("localhost","root","");

mysql_select_db("users"); ?>
<table>
    <thead>
    <th>Username</th>
    <th>Password</th>
    <th>Email Adress</th>
    </thead><?php 

$query = mysql_query("SELECT * FROM users");
    WHILE($rows = mysql_fetch_array($query)) { ?>                    
    <tr>
    <td><?php echo $rows['username']; ?></td>
    <td><?php echo $rows['password']; ?></td>
    <td><?php echo $rows['email']; ?></td>
    </tr>
<?php } ?>    
?>

【讨论】:

  • 非常感谢您的帮助 :) 我得到了多少回复以及人们对此的反应速度,这让我印象深刻!据我了解,诀窍在于 php 括号的打开和关闭,以便表格始终位于代码的 HTML 部分中,是否正确?
  • 是的,不需要重复的 html 部分不应处于循环中,以便仅打印一次。要迭代的东西应该在循环中。就像在您的情况下,您只需要一个 THEAD,因此它位于循环上方,并且您需要重复 TR 以使其位于循环内。因此,生成的 TR(表行)与循环迭代一样多。很高兴你解决了它
【解决方案2】:

如下更改您的代码。

<?PHP 
$connect = mysql_connect("localhost","root","");

mysql_select_db("users");
$query = mysql_query("SELECT * FROM users");
  echo "
    <table>
    <thead>
    <th>Username</th>
    <th>Password</th>
    <th>Email Adress</th>
    </thead>";
WHILE($rows = mysql_fetch_array($query)):
        $username = $rows['username'];
        $password = $rows['password'];
        $email = $rows['email'];


echo"<tr>
    <td>$username</td>
    <td>$password</td>
    <td>$email</td>
    ";
    endwhile;
?>

【讨论】:

    【解决方案3】:

    在循环之前打印标题。

    <table>
    <thead>
    <tr>
    <th>Username</th>
    <th>Password</th>
    <th>Email Adress</th>
    </tr>
    </thead>
    <?php 
    $connect = mysql_connect("localhost","root","");
    
    mysql_select_db("users");
    $query = mysql_query("SELECT * FROM users");
        WHILE($rows = mysql_fetch_array($query)):
    
            $username = $rows['username'];
            $password = $rows['password'];
            $email = $rows['email'];
    
            echo "
            <tr>
            <td>$username</td>
            <td>$password</td>
            <td>$email</td>
            </tr>
            ";
        endwhile;
    ?>
    </table>
    

    【讨论】:

      【解决方案4】:

      试试这个:

      <link type="text/css" rel="stylesheet" href="style.css"/>
      
      <?php 
      $connect = mysql_connect("localhost","root","");
      mysql_select_db("users");
      $query = mysql_query("SELECT * FROM users");
      ?>
          <table>
          <thead>
          <th>Username</th>
          <th>Password</th>
          <th>Email Adress</th>
          </thead>";
      <?php
      WHILE($rows = mysql_fetch_array($query)):
      
          $username = $rows['username'];
          $password = $rows['password'];
          $email = $rows['email'];
      echo "<tr>
      <td>$username</td>
      <td>$password</td>
      <td>$email</td>
      ";
      endwhile;
      ?>
      

      【讨论】:

        猜你喜欢
        • 2013-05-09
        • 2014-03-24
        • 1970-01-01
        • 2016-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-22
        相关资源
        最近更新 更多