【问题标题】:PHP echo table and its cssPHP 回显表及其 css
【发布时间】:2015-07-28 18:20:18
【问题描述】:

我真的需要你的帮助。我试图从我的数据库中回显一个表,但它首先带有我不想要的数据库中的表名,而且 css 也很奇怪。我希望我的表格在每一列中都有不同的标题,然后在相应的列标题下方以统一的甘露显示数据。

php代码在这里

    <div id="content-1">
        <div>
            <?php 

                $table = 'std_details';
                // sending query for table
                $result = mysql_query("SELECT * FROM {$table}");

                if (!$result) {

                    die ("Query to show fields from table failed");

                }

                $fields_num = mysql_num_fields($result);

                echo "<h1>All Students</h1>";
                echo "<table border='2' class='gridtable'><tr>";

                // printing table headers
                for ($i=0; $i < $fields_num; $i++) { 

                    $field = mysql_fetch_field($result);
                    echo "<td>{$field->name}&nbsp;&nbsp;</td>";

                }

                echo "</tr>\n";

                // printing table rows
                while ($row = mysql_fetch_row($result)) {

                    echo "<tr>";

                    // $row is array.... foreach( .. ) puts every element
                    // of $row to $cell variable
                    foreach ($row as $cell) {

                        echo "<td>&nbsp;\t$cell</td>";

                    }
                    echo "</tr>\n";
                }

                mysql_free_result($result)
            ?>
        </div>
    </div>

表格css是

    table.gridtable {
        font-family: verdana,arial,sans-serif;
        font-size:11px;
        color:#333333;
        border-width: 1px;
        border-color: #666666;
        border-collapse: collapse;
    }
    table.gridtable th {
        border-width: 1px;
        padding: 8px;
        border-style: solid;
        border-color: #666666;
        background-color: #dedede;
    }
    table.gridtable td {
        border-width: 1px;
        padding: 8px;
        border-style: solid;
        border-color: #666666;
        background-color: #ffffff;
    }

谢谢各位。我真的需要帮助!

【问题讨论】:

  • 不确定“css 很奇怪”是什么意思。而且我们看不到您的数据库,所以我们不知道它会产生什么以及用什么替换它!此外,mysqli 比已弃用的 mysql 更好。而且你有 SQL 注入,甚至是 HTML 注入。
  • 如果您想要单独的标题,请不要从数据库中提取。保持列标题静态并从数据库加载数据
  • 这是我的数据库@MrLister 的图像
  • 请注意,mysql 不再受支持。请改用PDOmysqli
  • 如何使用 PDO 或 mysqli?我是新的哟数据库。我只想完成这个然后我开始新的东西。请帮助我,我使用 PDO

标签: php html mysql css


【解决方案1】:

我不明白你为什么使用 mysql 而不是 mysqli,这可能对你有帮助

  <!DOCTYPE html>
    <html>
    <head>
     <style>
      table.gridtable {
        font-family: verdana,arial,sans-serif;
        font-size:11px;
        color:#333333;
        border-width: 1px;
        border-color: #666666;
        border-collapse: collapse;
       }
      table.gridtable th {
         border-width: 1px;
         padding: 8px;
         border-style: solid;
         border-color: #666666;
         background-color: #dedede;
       }
     table.gridtable td {
         border-width: 1px;
         padding: 8px;
         border-style: solid;
         border-color: #666666;
         background-color: #ffffff;
       }

    </style>
  <!--- uncomment these line if you are loading css from external file --->
  <!--- <link href="Your css file" rel="stylesheet"> --->
  </head>
<div id="content-1">
      <div>
           <?php 

            $table = 'std_details';
            // sending query for table
            $result = mysql_query("SELECT * FROM {$table}");

                if (!$result) {

                  die ("Query to show fields from table failed");

                }

               $fields_num = mysql_num_fields($result);

               echo "<h1>All Students</h1>";
               echo "<table border='2' class='gridtable'><tr>";

               // printing table headers
               for ($i=0; $i < $fields_num; $i++) { 

                $field = mysql_fetch_field($result);
                echo "<td>{$field->name}</td>";

            }

            echo "</tr>";

            // printing table rows
            while ($row = mysql_fetch_row($result)) {

                echo "<tr>";

                // $row is array.... foreach( .. ) puts every element
                // of $row to $cell variable
                foreach ($row as $cell) {

                    echo "<td>&nbsp;\t$cell</td>";

                }
                echo "</tr>";
            }
            echo "</table>";

            mysql_free_result($result)
        ?>
    </div>
</div>

【讨论】:

  • 如何使用mysqli?我从来没有使用过它。有什么不同? @GULIM
  • 因为 mysql 已被弃用,只是 google 而已,唯一的区别是语法
【解决方案2】:

对于字段名称中的表名,您可以使用简单的sustr($field-&gt;name, strlen ( $fieldName ........)) 对于标题使用 &lt;th&gt; 而不是 &lt;td&gt; 并且不要使用制表符作为单元格值。 试试这样

// printing table headers
            for ($i=0; $i < $fields_num; $i++) { 





                $field = mysql_fetch_field($result);

              // eliminate the tablename
              $name = substr($field->name, strlen ( $fieldName ) - strlen('yourTableName),strlen ( $fieldName ) -1  )
                // echo the header th
                echo "<th>{$name}&nbsp;&nbsp;</th>";

            }

            echo "</tr>\n";

            // printing table rows
            while ($row = mysql_fetch_row($result)) {

                echo "<tr>";

                // $row is array.... foreach( .. ) puts every element
                // of $row to $cell variable
                foreach ($row as $cell) {

                    // echo the cell td
                    echo "<td>$cell</td>";

                }
                echo "</tr>\n";
            }

【讨论】:

  • 是的,是子字符串。 (基本的 php str 函数)我已经更新了答案
  • 那么PDO或者mysqli是怎么进来的呢?
  • 如果我可能会问,我是否必须将“$fieldName”替换为该特定列的标题?
猜你喜欢
  • 2016-03-30
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 1970-01-01
  • 2011-08-21
  • 2019-04-21
相关资源
最近更新 更多