gpt4 book ai didi

php - 合并两个表并回显结果(PHP MYSQL)

转载 作者:行者123 更新时间:2023-11-30 23:10:00 25 4
gpt4 key购买 nike

我有两张 table ;同一个数据库中的“客户端”和“sys_notes”。( SELECT client.*, sys_notes.* FROM client LEFT JOIN sys_notes ON sys_notes.client_id = client.id ORDER BY create_date DESC )

我需要将两个表 echo 合并到同一个 <div>content</div> 中,像这样:

echo all from client = first.name + last.name (e.g. Scott)
echo all from client = role
echo all from client = whatever else
echo all from sys_notes sent by Robert Scott = note1, note2, note3, note(etc.)...
echo all from client = whatever else
echo all from client = whatever else

示例输出:


<div class="content">

罗伯特·斯科特
主管
罗伯特在公司的订单办公室工作。
罗伯特的笔记:

  • 今天:(来自 sys_notes 表的注释)
  • 昨天:(来自 sys_notes 表的注释)
  • 2013 年 10 月 19 日:(来自 sys_notes 表的注释)

罗伯特的电话:000 000 000
罗伯特的电子邮箱:等
关于罗伯特的其他信息:......................

</div>

<div class="content">

丽莎约翰逊
主管
Lisa 在营销部工作。
Lisas 的笔记:

  • 今天:(来自 sys_notes 表的注释)
  • 2013 年 5 月 12 日:(来自 sys_notes 表的注释)

丽莎的电话:000 000 000
丽莎的电子邮箱:等等
关于 Lisa 的其他信息:......................

</div>

当我今天回显结果时,Robert 被“回显”了很多次,他有笔记,
每个 <div class="content"> 中有一个笔记. (在 Robert 的例子中有 3 个音符和 3 个不同的 Robert-div 被回显。)

请帮忙。

---更新---

-- Table structure for table `sys_notes`

CREATE TABLE IF NOT EXISTS `sys_notes` (
`note_id` int(11) NOT NULL AUTO_INCREMENT,
`client_id` int(11) NOT NULL,
`note_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`owning_user` varchar(50) NOT NULL,
`note` varchar(500) NOT NULL,
PRIMARY KEY (`note_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;

-- Table structure for table `client`

CREATE TABLE IF NOT EXISTS `client` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`create_date` datetime NOT NULL,
`first_name` varchar(50) NOT NULL,
`last_name` varchar(50) NOT NULL,
`phone` varchar(20) NOT NULL,
`email` varchar(50) NOT NULL,
`issue` varchar(50) NOT NULL,
`other` longtext NOT NULL,
`owning_user` int(11) NOT NULL,
`status` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1081 ;

最佳答案

使用:

SELECT DISTINCT

代替:

SELECT

或 GROUP BY 语句。

-- 编辑--

示例回显:

$result = $db->query("SELECT client.*, GROUP_CONCAT(sys_notes.note SEPARATOR "|") as note, sys_notes.* FROM client LEFT JOIN sys_notes ON sys_notes.client_id = client.id GROUP BY sys_notes.client_id ORDER BY create_date DESC");

ob_start();
?>

<div class="content">

<?php
foreach($result as $row) {

sprintf("<p>%s %s<br />%s<br />%s</p> %s <ul>", $row['firstname'], $row['lastname'], $row['role'], $row['desc'](example));

foreach(explode("|", $row['note']) as $note) {
sprintf("<li>%s</li>", $note);
}

sprintf("</ul>");
}
?>
</div>
<?

$result = ob_end_clean();

echo $result;

-- 最终更新--

<?php

try {
$db = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

$result = $db->query('SELECT client . * , GROUP_CONCAT( sys_notes.note SEPARATOR "|" ) AS n, sys_notes.*
FROM client
LEFT JOIN sys_notes ON sys_notes.client_id = client.id
GROUP BY sys_notes.client_id
ORDER BY create_date DESC');

ob_start();
?>

<div class="content">

<?php

foreach($result as $row) {

printf("<p>%s %s<br />%s</p> %s <ul>", $row['first_name'], $row['last_name'], $row['issue'], $row['other']);

foreach(explode("|", $row['n']) as $note) {
printf("<li>%s</li>", $note);
}

printf("</ul>");
}
?>
</div>
<?php

ob_end_flush();

关于php - 合并两个表并回显结果(PHP MYSQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20242951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com