显示前10条结果,隐藏其余部分?
问题描述:
我有一个PHP和SQL代码,我用它来提取数据到datalist
HTML与input
。显示前10条结果,隐藏其余部分?
的代码是很普通的,应该知道大家的是:
<datalist id="FindPlace">
<option hidden></option>
<?php
$sql = "SELECT IDPlace, Place_Name, FKCity FROM Places WHERE Place_Name <> '' ORDER BY Place_Name";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo "<option>" . $row["Place_Name"] . "</option>";
}
}
?>
</datalist>
我试着使用LIMIT
,但它隐藏所有其他结果,凡在我需要把它们都可用,只是不当我点击input
时显示所有内容,但只显示前10个选项。
我也试图插入PHP代码while
和echo
之间像$counter
这样的:
<?php
$sql = "SELECT IDPlace, Place_Name, FKCity FROM Places WHERE Place_Name <> ''
ORDER BY Place_Name";
$counter = 10;
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
if ($row < $counter) {
echo "<option>" . $row["Place_Name"] . "</option>";
}
else {
break;
}
}
}
?>
,并没有工作。我真的不知道如何使用JQuery,所以最好不要使用它,也许有一个我不知道的命令,或者一些窍门?
答
试试这个 -
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$i=0;
while ($row = $result->fetch_assoc()) {
$i++;
if ($i<=10) {
echo "<option>" . $row["Place_Name"] . "</option>";
} else {
break;
}
}
}
+0
试过。也许问题是别的?现在在我的“输入”中,它不显示任何内容,就像我的第二个示例一样。 – Zabusy
答
您可以使用CSS解决这个问题。尝试下面的代码。这事有关小提琴检查:click here
.wrapper option:nth-child(n+11){
background-color: gold;
display:none;
}
<div class="wrapper">
<option>Container #1</option>
<option>Container #2</option>
<option>Container #3</option>
<option>Container #4</option>
<option>Container #5</option>
<option>Container #6</option>
<option>Container #7</option>
<option>Container #8</option>
<option>Container #9</option>
<option>Container #10</option>
<option>Container #11</option>
<option>Container #12</option>
</div>
你可能要考虑下一个/上一个系统的,因为如果你有很多的地方,你会得到一个缓慢的页面上,只有10个项目(访问者不关心隐藏的项目) – Martijn
显而易见的答案是使用CSS,但似乎没有一种方式来设计它。建议放弃datalist并使用自动完成插件。 https://stackoverflow.com/questions/13693482/is-there-a-way-to-apply-a-css-style-on-html5-datalist-options –