// Show publications by research name
$queryItem = "SELECT * FROM research_area, papers WHERE research_area.papers_id = papers.papers_id";
$resultItem = mysqli_query($link, $queryItem) or die(mysqli_error($link));
mysqli_close($link);
?>
// Motion Planning and the rest of the names kept repeating. I NEED only one time output to show all result.
<?php
while ($row = mysqli_fetch_assoc($resultItem)) {
?>
<?php
if ($row['area_name'] == "Motion Planning") {
echo "<h3>" . "Motion Planning" . "</h3>";
echo "<b>" . $row['author'] . "</b>" . "<br>";
echo "<b>" . $row['description'] . "</b>" . "<br>";
echo "<a href = " . $row['pdf'] . ">PDF" . "</a>" . "<br>";
} elseif ($row['area_name'] == "Probabilistic Motion Planning") {
echo "<h3>" . "Probabilistic Motion Planning" . "</h3>";
echo "<b>" . $row['author'] . "</b>" . "<br>";
echo "<b>" . $row['description'] . "</b>" . "<br>";
echo "<a href = " . $row['pdf'] . ">PDF" . "</a>" . "<br>";
} elseif ($row['area_name'] == "Sampling Strategies for PRM Planning") {
echo "<h3>" . "Sampling Strategies for PRM Planning" . "</h3>";
echo "<b>" . $row['author'] . "</b>" . "<br>";
echo "<b>" . $row['description'] . "</b>" . "<br>";
echo "<a href = " . $row['pdf'] . ">PDF" . "</a>" . "<br>";
} ?&GT;
<?php } ?>
//////////// OUTPUT //////////////
Motion Planning
J. Basch, L.J. Guibas, D. Hsu, and A.T. Nguyen.
Disconnection proofs for motion planning.
PDF
Motion Planning
M. Erdmann, D. Hsu, M. Overmars, and F. van der Stappen, editors.
Algorithmic Foundations of Robotics VI
PDF
Motion Planning
H.H. Gonz�lez-Ba�os, D. Hsu, and J.C. Latombe.
Motion planning: Recent developments.
PDF
概率运动规划 D. Hsu,J.C。Latombe,R。Motwani和L.E. Kavraki。 通过可并行的随机采样技术捕获高维几何空间的连通性。 PDF
概率运动规划 D.许。 膨胀空间中的随机单查询运动规划。 PDF
概率运动规划 D. Hsu,J.C。Latombe和H. Kurniawati。 论概率路线图规划的概率基础。 PDF
PRM规划的抽样策略 D. Hsu,L.E。 Kavraki,J.C。Latombe,R。Motwani和S. Sorkin。 寻找具有概率路线图规划者的狭窄段落。 PDF
PRM规划的抽样策略 D. Hsu,T。Jiang,J。Reif和Z. Sun. 用概率路线图规划者对狭窄通道进行抽样的桥梁测试。 PDF
答案 0 :(得分:0)
您需要先组织查询的结果数据,然后再将其打印出来。
所以,让我们首先定义一个数组abobve while()clycle,然后将你的数据放入数组,由'area_name'组织,然后迭代数组以打印信息。
// Declare a new array for organize the data, $result in this case.
$result = array();
while ($row = mysqli_fetch_assoc($resultItem))
{
// Here, instead of filter and print data, we are gonna organize it
// in a arrays inside the $result array
// For example, for each record with 'area_name' in the query result,
// we are gonna get a sub-array whit the data
$result[$row['area_name']][] = array(
'author' => $row['author'],
'description' => $row['description'],
'pdf' => $row['pdf'],
);
}
// Now we can iterate over the $result array whit the foreach() function.
foreach ($result as $key => $value)
{
echo "<h3>" . $key . "</h3>";
foreach ($value as $key2 => $value2)
{
echo "<b>" . $value2['author'] . "</b>" . "<br>";
echo "<b>" . $value2['description'] . "</b>" . "<br>";
echo "<a href = " . $value2['pdf'] . ">PDF" . "</a>" . "<br>";
}
}
尝试一下,我会做一些测试,如果必要,请编辑这个答案。
答案 1 :(得分:0)
我相信你所要求的是“运动规划”标题在所有“运动规划”论文之前出现一次,然后在每份“概率运动规划”论文之前出现“概率运动规划”,然后是“采样策略” PRM规划“每次”PRM规划抽样策略之前“论文。当迭代不同类别的数据时,这是一种常见的模式。
使用变量跟踪前一行的area_name
,并将回显标题的代码放在if语句中,该语句检查当前area_name
是否不等于前一行的area_name
1}}。您可以在循环之前将此变量设置为空字符串(只要您的数据不包含要为其打印标题的空area_name
),然后将其设置为$row['area_name']
作为循环中的最后一个陈述。
您需要确保数据按area_name
排序,因为每次当前area_name
与之前的版本不同时都会打印标题。如果它们不正常,则可能会多次发生此更改。在SQL中包含ORDER BY
子句以实现此目的。
此外,如果您回显的值与行中的值相同,则不需要为每个area_name
设置if语句。相反,echo "<h3>" . $row['area_name'] . "</h3>";