在 PHP 中显示表格

Posted

技术标签:

【中文标题】在 PHP 中显示表格【英文标题】:Showing table in PHP 【发布时间】:2021-09-23 09:11:49 【问题描述】:

我必须显示来自 mysqli 数据库的大量数据列表,但是当我试图显示数据时,表中只显示第一项(这里有多个数据来自单个 id,大约有 16,000 个 id ,就像一个 id 即站点它们是门警报、站点警报、电池警报和故障警报)。我试过 while 循环,但它在这里不起作用。

代码

<?php


include 'dbinc.php';

mysql_connect($mysql_hostname,$mysql_user,$mysql_password);//database connection
mysql_select_db($mysql_database);
                
$order = "SELECT * FROM quanta
ORDER BY ID DESC 
                LIMIT 1
  ";
//order to search data
//declare in the order variable
                
$result = mysql_query($order);  
//order executes the result is saved
//in the variable of $result



    $data = mysql_fetch_row($result);
    
    
    $data_id        = $data[0];     //Unique Id
    $data_timestamp = $data[1];     //Time Stamp by Server
    $data_validated = $data[2];     //Validated by Server
    
    $data_type      = $data[3];     //Type 0 - Periodic / 1 - Fault
    $data_type_str = "Unknown";
    if ($data[3] == 0) $data_type_str = "Periodic";
    if ($data[3] == 1) $data_type_str = "Fault";
    
    $data_site_id   = $data[4];     //String Site Id
    $data_datetime  = $data[5];     //Date Time by Device
    $data_device_id = $data[6];     //Device Id/ Only 1 known for now
    $data_status    = $data[7];     //Status Bits - To Expand
    $data_status_hex= bin2hex($data_status);
    
    $data_raw       = $data[8];     //Raw Data, for device specific information
    
    
    echo ("<table class='table table-striped'>");
    
    echo("
            <tr><td>Site Id</td><td>$data[4]</td></tr>
            <tr><td>Date Time</td><td>$data_datetime</td></tr>
            <tr><td>Device Id</td><td>$data_device_id</td></tr>");
    
    //echo ("Status: <b>$data_status</b><br>");
    //echo ("Status: <b>$data_status_hex</b></tr>");
    
    //$tmp = gettype($data_status);
    //echo "Var: $tmp<br>";
    
    $stats = unpack ( "C*" , $data_status );
    //var_dump($stats);
    



    //for table









      
    
    echo "<tr><td>Smoke Fire Alarm</td><td";
    //0x0000000000 Smoke fire    0 means No alarm,  1 means Alarm
    if (($stats[5] & 0x01) == false) 
        echo " >no Smoke    alarm"; 
    else
        echo " >smoke alarm";
    
    echo "</td></tr>" ;
    
    echo "<tr><td>Door</td><td";
    //$FLAG_01_DOOR     = 0x0000000002; //Door Open     0  means  Door Close , 1 Means  Door open  
    if (($stats[5] & 0x02) == false) 
        echo "  >door closed";
    else
        echo "  >door open";

    echo "</td></tr>";
    
    
    echo "<tr><td>Mode</td><td";
    //$FLAG_02_AUTO     = 0x0000000004; //Auto/Man Mode 0 Means  Auto Mode, 1 Means  Man Mode
    if (($stats[5] & 0x04) == false) 
        echo "  >Auto";
    else
        echo "  >Manual";
    echo "</td></tr>";
    
    echo "<tr><td>Load</td><td>";
    //$FLAG_034_LOAD    = 0x0000000018; //00    :Load on EB,01: Load on DG, 10: Load on site Battery   11: Not used
    if (($stats[5] & 0x08) == false) 
    
        if (($stats[5] & 0x10) == false) 
            echo "[- Load on EB -]<br>";                //00
        else
            echo "[- Load on site Battery -]<br>";  //10
    
    else
    
        if (($stats[5] & 0x10) == false) 
            echo "[- Load on DG -]<br>";                //01
        else
            echo "[- Not Used -]<br>";  //11
    
    echo "</td></tr>";




    echo "<tr><td>Alternate Fault</td><td";
    //$FLAG_10_ALT  = 0x0000000400; //Alternate Fault
    if (($stats[4] & 0x04) == false) 
        echo "  >no fault";
    else
        echo "  >fault";
    echo "</td></tr>";


   





    
?>

【问题讨论】:

警告:mysql 扩展名是deprecated in PHP 5.5.0,在 PHP 7.0.0 中被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。另见MySQL: choosing an API guide。此函数的替代方法包括:mysqli_connect() 和 PDO::__construct() 感谢您对我的认可,但它工作得非常好。我认为桌子是我要求的,如果可以的话,请帮助我吗? 您的查询显示LIMIT 1。这意味着你只会得到一排。取下LIMIT 1 以获得更多行。 照你说的,还没来? @APPLearener 它可能看起来在您的机器上“运行良好”,但并不安全,并且无法在任何最新的服务器上运行。你真的,真的需要从 mysql_ 更改为 pdo 或 mysqli_ 。看看那些并用它们获取多行。 mysql_在2019年被移除,只是说它已经过时了。 【参考方案1】:

它只显示 1 个项目,因为您只执行 1 个 mysql_fetch_row($result)。 也许试试这个

while($data = mysql_fetch_row($result)) 
   //The code you have after to generate the table

文档:https://www.php.net/manual/en/function.mysql-fetch-row.php

【讨论】:

自 2019 年 PHP 7.0 以来 mysql_ 已被删除,因此您永远不应使用 mysql_ 代码回答。除此之外,错误的mysql_函数。【参考方案2】:

如果您希望显示所有项目,则需要使用 while 循环

while($data = mysql_fetch_row($result))

//在此处输入您的代码

【讨论】:

自 2019 年 PHP 7.0 以来 mysql_ 已被删除,因此您永远不应使用 mysql_ 代码回答。除此之外,错误的 mysql_ 函数。您只是复制现有答案吗?

以上是关于在 PHP 中显示表格的主要内容,如果未能解决你的问题,请参考以下文章

如何在php循环中每行显示两个表格列

PHP mysql - 以表格形式显示数据库中的逗号分隔值

php用表格的形式显示连接的一张mysql表格,并具有直接在表格中修改、删除mysql表中数据的功能

如何在用电子表格(),php生成的.csv文件中显示带小数的整数?

使用 PHP 从 MySQL 数据库中获取数据,以表格形式显示以进行编辑

从数据库(PHP MySQL)中搜索和显示结果不适合 html 中的表格