我正在创建一个php脚本,我希望输出如下。 我有这段代码:
$query_man = query
$output_man = mysql_query($query_man);
if(mysql_num_rows($output_man) > 0){
while ($row = mysql_fetch_assoc($output_manutenzione)){
echo "\t" . $row['hostname'];
echo "\n\t\tTipo Manutenzione: " . $row['type'];
echo "\n\t\tData inizio: " . $row['startdate'];
echo "\n\t\tData fine: " . $row['enddate'];
echo "\n\t\tUtente: " . $row['user'];
echo "\n\t\tMotivo: " . $row['desc'];
echo "\n\t\tStato: " . $row['State'] . "\n\n";
}
其中type,startdate,enddate等是查询字段。
通过这种方式,我得到了这样的结果(例如):
Hello1
program
2016-10-13 09:00
2016-10-13 10:00
kevin
test
open
Hello1
program
2016-10-13 13:00
2016-10-13 15:30
john
test
closed
Hello2
program
2016-10-12 11:00
2016-10-13 11:30
susan
test
closed
Hello3
program
2016-10-12 13:00
2016-10-12 15:30
clay
test2
open
好吧,我不明白如何获得以下结果:
Hello1
program
2016-10-13 09:00
2016-10-13 10:00
kevin
test
open
program
2016-10-13 13:00
2016-10-13 15:30
john
test
closed
Hello2
program
2016-10-12 11:00
2016-10-13 11:30
susan
test
closed
Hello3
program
2016-10-12 13:00
2016-10-12 15:30
clay
test2
open
即。我想用相同的主机名对信息进行分组。 我该怎么办?
答案 0 :(得分:4)
如果你还记得你处理过的最后一个hostname
,你可以针对当前的hostname
进行测试,只有当它们不同时输出$query_man = query
$output_man = mysql_query($query_man);
if(mysql_num_rows($output_man) > 0){
$last_host = NULL;
while ($row = mysql_fetch_assoc($output_manutenzione)){
if ($row['hostname'] != $last_host ) {
echo "\t" . $row['hostname'];
$last_host = $row['hostname'];
}
echo "\n\t\tTipo Manutenzione: " . $row['type'];
echo "\n\t\tData inizio: " . $row['startdate'];
echo "\n\t\tData fine: " . $row['enddate'];
echo "\n\t\tUtente: " . $row['user'];
echo "\n\t\tMotivo: " . $row['desc'];
echo "\n\t\tStato: " . $row['State'] . "\n\n";
}
}
行
hostname
这确实假设查询在PDO
上排序,但您的示例输出按这种方式排序,因此我假设您已经这样做了
但我必须添加这个
每次使用the
mysql_
新代码中的数据库扩展 a Kitten is strangled somewhere in the world 它已被弃用,已经存在多年,并且在PHP7中一直存在。 如果您只是学习PHP,请花时间学习mysqli
或{{1}}数据库扩展。 Start here
答案 1 :(得分:1)
您只需检查上一个 UserId
,如下所示:
hostname
答案 2 :(得分:1)
记住$row['hostname']
值并检查它是否与上一行相同。如果没有,请回显值:
$query_man = query
$output_man = mysql_query($query_man);
if(mysql_num_rows($output_man) > 0){
$prevHostname = '' ;
while ($row = mysql_fetch_assoc($output_manutenzione)){
if ($prevHostname != $row['hostname']) {
echo "\t" . $row['hostname'];
$prevHostname = $row['hostname'];
}
echo "\n\t\tTipo Manutenzione: " . $row['type'];
echo "\n\t\tData inizio: " . $row['startdate'];
echo "\n\t\tData fine: " . $row['enddate'];
echo "\n\t\tUtente: " . $row['user'];
echo "\n\t\tMotivo: " . $row['desc'];
echo "\n\t\tStato: " . $row['State'] . "\n\n";
}
}
答案 3 :(得分:0)
尝试以下代码。您需要在代码中进行一些更改,如下所示,另外使用另一个数组
<?php $query_man = query
$output_man = mysql_query($query_man);
$array_result = array();
if(mysql_num_rows($output_man) > 0){
while ($row = mysql_fetch_assoc($output_manutenzione)){
echo "\t" . $row['hostname'];
echo "\n\t\tTipo Manutenzione: " . $row['type'];
echo "\n\t\tData inizio: " . $row['startdate'];
echo "\n\t\tData fine: " . $row['enddate'];
echo "\n\t\tUtente: " . $row['user'];
echo "\n\t\tMotivo: " . $row['desc'];
echo "\n\t\tStato: " . $row['State'] . "\n\n";
$array_result[$row['hostname']][] = $row;
}
print_r($array_result) ?>