导航列表内容检索是如何工作的


How does navigation list content retrieval work?

在一个网页中,我有一个侧边栏,其项目的内容性质相同,但彼此不同;例如:

<ul> 
  <li>Science books</li>
  <li>Fiction books</li>
  <li>History books</li>
</ul>

如果用户点击其中任何一个,就会向他显示一堆相关的书籍。

我的问题是:开发人员是否必须为这些项目中的每一个创建单独的页面来显示它们的内容,或者是否有一种方法可以创建一个公共页面,以便一旦单击某个项目,其内容就会显示在该公共页面中?(我在这里不是说使用JavaScript)。

是的,使用PHP是可能的,我建议您将书籍存储在MYSql数据库中,该数据库具有类似于的良好结构

Type   -   Name           -   Genre
Book   -   My Adventure   -   Science
Book   -   The End        -   History

你可以为图像等添加更多的列。

使用PHP,您可以使一个页面显示books.php,然后使其链接为books.php?type=science

然后在这个php页面上,你可以连接到你的数据库并进行查询以选择所有类型为science的书籍,你可以使用$_GET["type"] 从url中获取变量

类似这样的东西:

<?php
$con=mysqli_connect("ip","user","pw","my_db");
$type=$_GET["type"];
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
$result = mysqli_query($con,"SELECT * FROM products WHERE genre = $type");
while($row = mysqli_fetch_array($result))
  {
  echo $row['type'] . " " . $row['name']. " " . $row['genre'];
  echo "<br>";
  }
mysqli_close($con);
?>

在上面的示例中,products是您的表的名称。获取书籍的查询在$result变量上,我们从表格产品中选择所有结果,其中类型是您的url参数

没有必要为每个页面创建一个新页面,只需在URL中传递一个GET var并相应地加载结果,例如

<a href="page.php?content=books">See Books</a>

关于page.php

只需根据$_GET值显示内容,例如

if(!empty($_GET['content'])) { //Just to make sure content is set and its not empty
   $show_content = $_GET['content']; //books
}
if($show_content == 'books') {
   //Show Books
} elseif($show_content == 'gadgets') {
   //Gadgets Go Here
}

注意:只需确保验证并消毒$_GET['content']值,因为任何用户都可以轻松修改它。

你可以用另一种方式:

<ul> 
 <li>Science books
    <ul>
      <li>
         <div class="hidden"> YOUR BOOK CONTENT </div>
      </li>
    </ul>
 </li>
 <li>Fiction books</li>
 <li>History books</li>
</ul>