如何创建仅显示数据库中某些条目的页面?[关闭]

How to create pages that displays only certain entries from a database? [closed]

提问人:Kiwi 提问时间:11/16/2023 更新时间:11/16/2023 访问量:34

问:


想改进这个问题吗?更新问题,使其仅通过编辑这篇文章来关注一个问题。

4天前关闭。

基本上,我有一个网站来显示我拥有的所有项目,但我希望它们自动分类到它们自己的类别页面中,而不是将它们全部显示在一个页面中。 我在编码方面不是很了解,但我相信我需要一个包含所有单个条目的数据库文件,以及一个调用具有指定类别的条目以显示在页面中的代码。我甚至不知道如何开始编写所有这些代码,而且我正在使用 neocities 的免费版本,所以我可以使用的文件类型和代码有点有限。 如果您能给我任何想法或指导,我将不胜感激!

我一直在跟踪谷歌表格中的项目,并在额外的嵌入式谷歌表格中显示所述项目,但这需要我为每个类别手动添加/排序我拥有的不同电子表格中的条目,这将是无法管理的,现在我想要更多的类别。更不用说我什至无法对类别电子表格中的项目进行排序,因为我必须垂直而不是水平显示每个条目上的数据! 每个条目都需要以下类型的信息:项目图像、我何时获得它、我来自谁、我是如何获得它的、主要类别、子类别和个人笔记

javascript php 数据库 类别 jquery-ui-sortable

评论

0赞 Don't Panic 11/16/2023
欢迎来到 SO。“我甚至不知道如何开始编码所有这些” - 搜索一些教程,找到一个似乎符合您的需求和/或您的托管要求的教程,然后开始构建(例如“创建 php 库存”或“构建 javascript 目录”等术语会让你继续前进)。SO 针对的是你已经编写的代码的具体问题 - 如果你遇到困难,那么是时候在 SO 上发布一个问题,显示问题代码了。祝你好运!

答:

-1赞 Anish Abraham 11/16/2023 #1

创建一个 JSON 文件来存储您的项目数据。它可能看起来像这样:

[
  {
    "itemName": "Item 1",
    "image": "item1.jpg",
    "acquisitionDate": "2023-01-01",
    "acquiredFrom": "John Doe",
    "acquisitionMethod": "Gift",
    "mainCategory": "Category A",
    "subCategory": "Subcategory A1",
    "notes": "Lorem ipsum dolor sit amet."
  },
  // Add more items as needed
]

创建一个 HTML 文件来构建您的网页。您可以使用如下所示的简单模板:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Your Item Collection</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <div id="categories"></div>
  <div id="items"></div>
  <script src="script.js"></script>
</body>
</html>

编写 JavaScript 代码以加载 JSON 数据,并为每个类别和项目动态创建 HTML 元素。

 document.addEventListener('DOMContentLoaded', function () {
  // Load JSON data
  fetch('data.json')
    .then(response => response.json())
    .then(data => organizeItems(data));
});

function organizeItems(items) {
  // Organize items by category
  const categories = {};
  items.forEach(item => {
    const category = item.mainCategory;
    categories[category] = categories[category] || [];
    categories[category].push(item);
  });

  // Display categories
  const categoriesContainer = document.getElementById('categories');
  Object.keys(categories).forEach(category => {
    const categoryButton = document.createElement('button');
    categoryButton.textContent = category;
    categoryButton.addEventListener('click', () => displayItems(categories[category]));
    categoriesContainer.appendChild(categoryButton);
  });
}

function displayItems(items) {
  // Display items for the selected category
  const itemsContainer = document.getElementById('items');
  itemsContainer.innerHTML = ''; // Clear previous items

  items.forEach(item => {
    const itemElement = document.createElement('div');
    itemElement.innerHTML = `
      <h3>${item.itemName}</h3>
      <img src="${item.image}" alt="${item.itemName}">
      <p>Date: ${item.acquisitionDate}</p>
      <p>Acquired from: ${item.acquiredFrom}</p>
      <p>Method: ${item.acquisitionMethod}</p>
      <p>Notes: ${item.notes}</p>
    `;
    itemsContainer.appendChild(itemElement);
  });
}

将您的 HTML、CSS、JavaScript 和 JSON 文件上传到您的 neocities 帐户。

访问您的 neocities 网站以查看分类项目。

这是一个基本示例,您可能需要根据特定要求调整代码。此外,请注意,此解决方案不会在会话之间保留数据,因为 neocities 不支持服务器端脚本或数据库。如果需要更高级的功能或数据持久性,则可能需要考虑支持服务器端脚本和数据库的其他托管解决方案。