【问题标题】:How can I dynamically assign a separate id to each div in HTML/PHP?如何在 HTML/PHP 中为每个 div 动态分配一个单独的 id?
【发布时间】:2022-08-15 21:50:02
【问题描述】:

我是 webdesign 新手,我在 web 服务器上创建了一个 mySQL 数据库,该数据库包含一个包含许多 ToDo 的表。然后,我使用 PHP 从 mySQL 数据库加载该表,并为网页上的每个 ToDo 创建一个 div。我正在为下一步而苦苦挣扎,即根据 ToDo 的紧迫性为每个 div 赋予不同的颜色,在 mySQL 表中它被编码为整数。我想我需要根据紧急程度指定不同的 ID,因此在显示 div 时,HTML 会通过使用与 id 关联的正确样式为其提供正确的颜色。

<html>
    <head>

    <style>

        #fenster{
            width : 200px;
            background-color: yellow;
        }
        #zeile{
            height: 40px;
            width: 300px;
            border: thin solid gray;
            border-top: thick solid red;
            margin: 5px;
            text-overflow: hidden;
            overflow: hidden;
            float: left;
            font-size: 1.0rem;
        }

@media only screen and (max-width: 1000px) {
    #zeile{
        height: 115px;
        width: 270px;
        font-size: 1.5rem;
        margin: 1rem;
        overflow:hidden;
    }
}

        .kaestchen {
        color: red;
        }


</style>
</head>

<body>
<?php 
$con = mysqli_connect(\"localhost\",\"xxxxxx\",\"xxx\",\"xxxx\");
$sqlCom = \'SELECT name FROM zeilen\';
$requ = mysqli_query($con, $sqlCom);
$personen = mysqli_fetch_all($requ, MYSQLI_ASSOC);
mysqli_close($con);
?>

<div>
<div>
    <?php foreach($personen as $person){ ?>

        <div>
            <div>
                <div>
                    <div id=zeile left=100px onclick=window.location.href=\'edit.php?itemID=20\'><?php echo htmlspecialchars($person[\'name\']); ?></div>
                </div>
            </div>
        </div>
    <?php } ?>

</div>
</div>

</body>

</html>

我认为我需要做的是找到一种方法为每个 div 动态分配一个单独的 id,这将允许我控制 div 的颜色,例如id=urg0, id=urg1 等。另外我想将 ToDo 的 id 传递给一个“编辑”页面,所以我想我必须创建另一个 PHP 页面来加载这个特定 ToDo 的数据用于编辑和获取作为参数传递的 id 的数据库。在我的示例中,这是一个固定数字,因为我想不出办法让这个数字成为计数器变量。

我是否需要对此类“复杂”操作使用 Javascript?

--- 我尝试实施该建议,因此我将代码更改为:

<html>
    <head>
    <style>

            .urgency-0{
            width: 300px;
            float: left;
            border-top: thick solid black;
            }.urgency-1{
            width: 300px;
            float: left;
            border-top: thick solid blue;
            }
            .urgency-2{
            width: 300px;
            float: left;
            border-top: thick solid green;
            }
            .urgency-3{
            width: 300px;
            float: left;
            border-top: thick solid yellow;
            }

</style>
</head>

<body>
<?php 
$con = mysqli_connect(\"localhost\",\"u942496093_GTD_user\",\"abcDEF123!\",\"u942496093_GTD\");
$sqlCom = \'SELECT * FROM zeilen\';
$requ = mysqli_query($con, $sqlCom);
$personen = mysqli_fetch_all($requ, MYSQLI_ASSOC);
mysqli_close($con);
?>

<div>
<div>
<?php> $counter = 0; ?>
     <?php foreach($personen as $person){ ?>
        <div>
            <div>
                <div>
                    <div class=\"urgency-\"+<?php echo htmlspecialchars($person[\'urgency\']); ?> left=100px onclick=window.location.href=\'edit.php?itemID=$counter\'><?php echo htmlspecialchars($person[\'name\']); ?></div>
                    <?php $counter++; ?>
                </div>
            </div>
        </div>
    <?php } ?>

</div>
</div>

</body>

</html>

看来我还是做错了什么。

  • 多个待办事项可以有相同级别的urgency吗?
  • 是的,我计划将紧急级别设置为 0 到 5,因此所有项目都将分为六个紧急组之一。

标签: javascript php html css mysql


【解决方案1】:

不需要Javascript。

一种方法是为每个紧急情况定义一个 CSS 规则。

将 div 上的类用作 &lt;div class="urgency-x"&gt;,其中 x 是紧急号码

<head>
<style>
.urgency-1 {
  background-color: #CCCCCC;
}
.urgency-2 {
  background-color: #BBBBBB;
}
.urgency-n {
  background-color: #111111;
}
</style>
</head>

上面显示了在头部定义的规则。显然,您可以将它们放在 .css 文件中,但那是另一回事了。

您仍然可以编写您的 css 规则以匹配 id,但这些 id 通常用于将元素分开,因此具有相同 id 的多个元素是不常见的。类是以某种方式对元素进行分类,因此对于您提供的用例而言,使用类更为典型。

另一种方法是在您的 div 上设置 style,例如 &lt;div style="background-color: #CCCCCC;"&gt;

就将待办事项 ID 传递到另一个页面而言,您可能会有某种排序或 ui 元素,用户“单击”以导航到编辑页面。一个非常基本的例子是锚

&lt;a href="edit.php?id=5"&gt;Edit me&lt;/a&gt;

这是一个在 php 方面解决的问题How to pass a PHP variable using the URL

【讨论】:

  • 我将样式直接包含在代码中,因为出于某种原因,我观察到在更改外部 .css 文件时,网站似乎使用旧版本的 .css 文件,即使我更改并上传了新版本到服务器。我不知道如何让我的浏览器使用新的 .css 文件,而不是它似乎以某种方式记住的那个。
  • 亲爱的 M. Gallant,我尝试实施您的建议并更改了我的代码。我在上面的问题中将此显示为编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-19
  • 2021-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多