javascript - 如何在网页上显示数据库中的内容,以及如何允许用户选择更多信息

标签 javascript php html mysql arrays

首先,如果有人提出类似要求,请快速道歉。我已经竭尽全力找到以前发布的解决方案,但是由于我对Web开发的知识有些基础,所以我可能难以正确解释问题。

由于我觉得有必要在下面做很多解释以尝试清楚地知道我要做什么,因此可能更有用的是实际查看该站点以尝试并了解其功能以及我正在解释的内容为了充分理解我正在尝试做的事情。目前它在000freewebhost上可用,因此请点击以下链接:

https://legal-bytes.000webhostapp.com/topics.php

TL; DR我正在从数据库表中选择记录,将它们存储在数组中,然后将每个记录显示为指向另一页的单独超链接,该页将包含更多信息,具体取决于已选择的链接。
在我可以再次查询数据库以选择要显示的其他信息的范围内,如何确定选择了哪个链接?

现在,解决问题。 (请注意,我将在解释下方发布我的代码。)

对于一个大学项目,我正在设计一个网站,其中包含有关英国法律的信息。该网站的一部分包含法律主题列表。用户可以单击任何主题,然后带到新页面,他们可以在其中选择所需的材料类型。之后,他们将被带到另一个页面,他们可以在其中选择所需的特定资源。

一个简单的例子应该澄清这一点:用户导航到“主题”页面,然后从可用主题中选择“公司法”。然后,他们可以从“文章”,“书籍”,“案件”或“立法”(均与公司法有关)中进行选择(这4个选项我统称为“资源类型”)。因此,他们选择“案例”。他们将看到的下一页是该网站上适用于《公司法》的所有案件的列表(这些都是“资源”本身)。最后一步是选择他们想要更多信息的情况,并将其显示在新页面上。

到目前为止,我设计该网站的方式是使用数据库存储有关这些资源的信息。例如,关于一个案例,我将存储该案例的名称和该案例的事实。为了显示资源,我正在查询数据库并从相关表中选择所有具有相同主题类型(公司法,土地法等)和相同资源类型(案例,文章等)的记录。此记录存储在数组中,最后使用“ FOR”循环将这些记录填充到页面中。记录显示在页面上,然后显示为使用上述循环动态创建的链接。

以上所有功能均按预期工作-以下是我的问题所在:

这个想法是,当用户选择这些链接(这些资源)时,它们将被带到一个新页面,该页面将显示信息(在上述示例中为案例的事实)。但是,我无法弄清楚如何检查用户单击了哪个链接(资源)以能够在下一页上显示正确的信息。

以下是相关页面中的代码:
这里是提到的“ FOR”循环:

    <?php for ($x=0; $x < count($resource_info); $x++): ?>
    <a href="info-page.php?<?php echo $pageref ?>&<?php echo $pagetype ?>&<?php echo $resource_info[$x] ?>">
        <div class="topic-group">
            <div class="cases">  
                <p><?php echo $resource_info[$x] ?></p>
            </div>
        </div>
    </a>  
<?php endfor ?>


简要说明一下:
$ resource_info变量是我的数组,用于存储从数据库中选择的记录。
$ pageref是我用来确定选择哪个主题的变量(例如,“ company”将是引用“ Company Law”的$ pageref)
$ pagetype是另一个变量,它指示要显示的资源类型(例如,“ cases”将是指“ Cases”的$ pagetype)

如上所述,我正在查询数据库以选择相关记录。可以在下面看到此代码。您会注意到topic_id设置为4,type_id设置为1-这样做的原因与当前问题无关,但是足以说sql设置为搜索与公司法有关的任何案例(type_id)( topic_id)。

包括('topic-info.php');
$ resource_info = array();

if ($searchdb == true) {

    $conn = new mysqli($servername, $username, $password, $dbname);
    $sql = "SELECT * FROM resource_info WHERE topic_id= '4' AND type_id= '1'";
    $result = $conn->query($sql);
    $x = 0;
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            array_push($resource_info, ($row['title']));
        }
    } 
    $conn->close();


以上内容的进一步说明:
topic-info.php是另一个文件,用于定义我在上面解释的变量的值。
您会注意到它检查$ searchdb布尔值是否设置为true。这是在topic-info.php文件中建立的(请参见下文)。
此代码还显示了$ resource_info数组的填充方式,在这种情况下,我们看到它将数据存储在找到的记录的“ title”字段中-这只是在这种情况下找到的任何情况的名称。

最后,这是topic-info.php文件中与解释上述各种变量的定义有关的代码:

if (isset($_GET['cases'])) {
    $pagetype = "cases";
}


/ * ------忽略无关代码--------- * /

if (isset($_GET['company'])) {
    $pagetitle = "Company Law";
    $pageref = "company";
    if (isset($_GET['cases'])) {
        $typeref = "case";
        $searchdb = true;
    }
}


以上说明:
这是根据用户到目前为止选择的链接定义$ pagetype和$ pageref变量的方式。当满足条件时,还将$ searchdb布尔值设置为true -当用户单击“公司法”和“案例”时,将满足此条件。

我为这次漫步感到抱歉,但是对于这个规模的项目,我还是很陌生,觉得我可能做不到尝试。因此,我不确定需要多少来解释这个问题。另一方面,我想知道它是否像使用onclick事件来设置变量一样简单-还是需要一些更复杂的内容(例如Javascript或AJAX)?

请务必理解,其中绝大多数都在起作用,但这只是我无法弄清的最后部分-如何确定需要从表中选择的记录?

非常感谢。

最佳答案

我更喜欢使用foreach循环,该循环将递归给您所需的结果。

<?php
foreach (array(1, 2, 3, 4) as &$value) {
    $value = $value * 2;
}
?>

http://php.net/manual/en/control-structures.foreach.php

关于javascript - 如何在网页上显示数据库中的内容,以及如何允许用户选择更多信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53837419/

相关文章:

javascript - 如何将参数传递给基于时间的 Google App Script 触发器?

javascript - 评估不在焦点中的元素

php - 带有 PHP 7.1 的 Symfony 3 给定 ICU 版本的国际扩展

javascript - 将文件从浏览器窗口拖到软件中

html - 调整联系表中文本字段的宽度 7

javascript - Angular - 更新 $scope 后无法正确加载 div

php - 下载 xml 时 curl 超时

php - 自动提交与单一事务(小项目与大项目)

html - 删除段落之间的空格

javascript - 有没有办法在禁用客户端推送的情况下在 Node.js 上使用 Parse 发送推送?