我有一个网页,查询子页面的链接列表。子页面按字母划分,并格式化为动态嵌套的无序列表,每个字母都有自己的标题。我目前可以使用,但是有26个独立的查询。我想做同样的事情,但是只用1个查询而不是26个查询。这是我现在的摘录,只显示字母A和B。我对PHP还是很陌生,所以任何想法都将不胜感激。我已经进行了广泛的研究,但是没有找到任何允许嵌套无序列表格式的答案,也没有找到任何类似的答案。
<ul class="navMenu">
<?php
$servername = "XXX";
$username = "XXX";
$password = "XXX";
$dbname = "XXX";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM addsor WHERE title LIKE 'A%'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<li class='navMenuItem'>A";
echo "<ul class='navSubMenu'>";
while($row = $result->fetch_assoc()) {
$title = $row["title"];
$linkname = $row["linkname"];
echo "<li class='navSubMenuItem'><a href='addsor_result.php?sortitle=$linkname' onclick='popsor(this.href); return false;'>$title</a></li>";
}
echo "</ul>";
echo "</li>";
}
$sql = "SELECT * FROM addsor WHERE title LIKE 'B%'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<li class='navMenuItem'>B";
echo "<ul class='navSubMenu'>";
while($row = $result->fetch_assoc()) {
$title = $row["title"];
$linkname = $row["linkname"];
echo "<li class='navSubMenuItem'><a href='addsor_result.php?sortitle=$linkname' onclick='popsor(this.href); return false;'>$title</a></li>";
};
echo "</ul>";
echo "</li>";
};
?>
</ul>
对于Jerson,我编辑了代码以使用if语句:
<ul class="navMenu">
<?php
$servername = "XXX";
$username = "XXX";
$password = "XXX";
$dbname = "XXX";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM addsor";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$find = substr($row["title"], 0, 1);
$title = $row["title"];
$linkname = $row["linkname"];
if ($find === "A") {
echo "<li class='navMenuItem menu-header'>A";
echo "<ul class='navSubMenu'>";
echo "<li class='navSubMenuItem'><a href='addsor_result.php?sortitle=$linkname' onclick='popsor(this.href); return false;'>$title</a></li>\r\n";
echo "</ul>";
echo "</li>";
}
elseif ($find === "B") {
echo "<li class='navMenuItem menu-header'>B";
echo "<ul class='navSubMenu'>";
echo "<li class='navSubMenuItem'><a href='addsor_result.php?sortitle=$linkname' onclick='popsor(this.href); return false;'>$title</a></li>";
echo "</ul>";
echo "</li>";
}
};
};
</ul>
但是现在,它们不再像:
A
Aaa
Aab
Aac
B
Baa
Bab
Bac
等那样分组了,而是
出现了:
A
Aaa
A
Aab
A
Aac
B
Baa
B
Bab
等
我尝试了一种不同的方法,并得到了想要的结果。感谢所有提供帮助的人。这是新的代码:
<ul class="navMenu">
<?php
$servername = "XXX";
$username = "XXX";
$password = "XXX";
$dbname = "XXX";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM addsor";
$result = $conn->query($sql);
$firstletter = "";
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$title = $row["title"];
$linkname = $row["linkname"];
if (substr($row["title"], 0, 1) !== $firstletter) {
if (!empty($firstletter)) {echo "</li></ul>";}
$firstletter = substr($row["title"], 0, 1);
echo "<li class='navMenuItem'>".$firstletter."<ul class='navSubMenu'>";
}
echo "<li class='navSubMenuItem'><a href='addsor_result.php?sortitle=$linkname' onclick='popsor(this.href); return false;'>$title</a></li>\r\n";
};
};
$conn->close();
?>
</ul>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句