【问题标题】:How to display multiple table from signle query on webpage using php [duplicate]如何使用php在网页上的单个查询中显示多个表[重复]
【发布时间】:2020-03-04 18:44:47
【问题描述】:

嗨,我是 php 新手,我想使用单个查询在网页上显示多个表记录,所以我该怎么做,如果有人知道,请帮助我 任何帮助,将不胜感激。 谢谢..!!

我在数据库中有这样的表

Name  |  Dept        |        Desg<br />
abc   |  sales       |      executive<br />
xyz   |  account     |      executive<br />
pqr   |  marketing   |      executive<br />
lmo   |  sales       |      executive<br />
kuv   |  marketing   |      executive<br />
xtx   |  account     |      executive<br />
aaa   |  sales       |      executive<br />

我想要这样的结果根据各自的部门动态创建每个表

Name |   Dept      |          Desg<br />
abc  |   sales     |        executive<br />
lmo  |   sales     |        executive<br />
aaa  |   sales     |        executive

Name  |  Dept         |       Desg<br />
pqr   |  marketing    |     executive<br />
kuv   |  marketing    |     executive

Name  |  Dept         |       Desg<br />
xyz   |  account      |     executive<br />
xtx   |  account      |     executive

【问题讨论】:

  • 你能在 mysql 查询中使用 Dept DESC 的顺序吗?
  • 我在这里没有看到任何 MySQL 或 PHP。你试过什么?
  • 是的,我尝试过但没有成功
  • 如何编写 php 代码来实现上述结果?达曼
  • @prakash 如果你想 ping 某人,你需要在他们的名字前面加上@

标签: php mysql mysqli


【解决方案1】:

也许你可以这样尝试。假设您已经使用SELECT * FROM TABLENAME .... 之类的方式在一个查询中查询了所有表,并将其放入$query_results

    $tables = [];
    foreach($query_results as $result) {
        if ( ! isset($tables[$result->dept])) {
            $tables[$result->dept] = [];
        }
        $tables[$result->dept][] = $result;
    }

为了显示表格,代码应该是这样的

    foreach($tables as $table_name => $data_group) {
        echo "<table>";
        echo "<thead><th>Name</th> <th>Dept</th> <th>Desg</th> </thead>";
        echo "<tbody>";
        foreach($data_group as $row) {
            echo "<td>" . $row->name . "</td>";
            echo "<td>" . $row->dept . "</td>";
            echo "<td>" . $row->desg . "</td>";
        }
        echo "</tbody>";
        echo "</table>";
    }

【讨论】:

  • 感谢您的解决方案,但是当我应用它时,我在我的 php 页面上收到以下通知“通知:尝试获取非对象的属性'dept'”那么我将如何解决它?
  • 这取决于你获取数据时的数据结构。
  • Prakash 可能将结果作为关联数组获取,这就是为什么它对他们不起作用。
【解决方案2】:

您可以尝试下面的 php 代码来获得您要求的结果

$resultArr = array();
$sql = "SELECT * FROM `emp` WHERE 1 order by name ASC, dept desc";
$result = $conn->query($sql);

$indx = 0;
if ($result->num_rows > 0) {

    while($row = $result->fetch_assoc()) {

        $dept = $row["dept"];
        $resultArr[$dept][$indx] = $row ; // Group values to department array
        $indx++;

    }
} else {
    echo "0 results";
}
$conn->close();

foreach($resultArr as $key => $depts){

    echo '<table>';
    echo '<tr>';
    echo '<th>Name</th><th>Dept</th><th>Desg</th>';
    echo '</tr>';
    foreach($depts as $values){

        echo '<tr>';
        echo '<td>'.$values['name'].'</td><td>'.$values['dept'].'</td><td>'.$values['desig'].'</td>';
        echo '</tr>';
    }
    echo '</table>';
}

我使用的数据库架构如下

CREATE TABLE `emp` (
  `id` int(10) NOT NULL,
  `name` varchar(200) NOT NULL,
  `dept` varchar(200) NOT NULL,
  `desig` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

【讨论】:

    猜你喜欢
    • 2020-10-17
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 2020-11-04
    • 2010-11-17
    • 2012-06-24
    相关资源
    最近更新 更多