【问题标题】:Using the values of a var inside a foreach loop在 foreach 循环中使用 var 的值
【发布时间】:2021-12-25 09:25:30
【问题描述】:

我正在使用 lms 系统,我遇到了这个问题

foreach($datas as $data){ ?>
   <div style="background-color: #3B4FDF; border-radius: 3%; width: 30%; height: 220px; margin-right: 5%; cursor: pointer;" onclick="location.href='classAdmin_list.php'">
     <p style="font-size: 1.5vw; color: white; position: relative; left: 7%; top: 0%;"> <?= $data['class_name'] ?> </p>
     <p style="font-size: 1vw; color: white; position: relative; left: 75%; top:  -25%;"> <?= $data['class_code'] ?> </p>
     <p style="font-size: 1vw; color: white; position: relative; left: 7%; top: 17%;"> <?= $data['school'] ?> </p>
<?php $_SESSION['className'] = $data['class_name']; ?>
     <img src="foto/balll.png" alt="ball" style="opacity: 0.5; width: 22%; height: 100px; position: relative; left: 75%; top: -30%;">
  </div>
<?php } ?>  

这是一个创建 div 的代码,如下所示:

那些罗马数字是名字。我目前将它们保存在 foreach 循环内的 $_Session 中。而这正是问题所在。

当我单击 div 时,它会将我重定向到如下所示的页面:

你看到了(I-2)。

我需要 I-2 是基于它被点击的 div 的类名(罗马数字)。

但是该值被保存在 $_Session 中,并且 $_Session 得到更新并覆盖以前的值。所以如果我点击 1 div (XII-3) 它不会说:“Class XII-3”而是“Class I-2”。

这是我用来制作“X 类”的代码

<p>
      Class <span><?= $_SESSION['className'] ?></span>
</p>

我看到了一些问题,但它们用于每个循环,所以我问,因为我找不到答案

【问题讨论】:

  • 请贴出完整代码。
  • 您应该在 URL 查询参数中传递类,而不是会话变量。
  • 你为什么把它存储在一个会话变量(被覆盖)中?在 onclick 中使用 URL 参数并在 classAdmin_list.php 中获取该参数
  • 请分享更多细节。为什么这个问题用 MySQL 或 Javascript 标记,但不包含任何此类代码?您在哪里从会话变量中读取数据?请记住,您只能在该变量中存储 单个 值,在该循环的每次迭代中,您都会覆盖以前的值
  • 我想我得到了答案,但是 js 和 mysql 标签是有效的,数据库是 mysql 并且我放了 js 因为我认为答案将包含 js 。而且我没有分享所有代码,因为:1.有很多和2.隐私原因。谢谢

标签: javascript php html mysql


【解决方案1】:

这不是会话的好用例。只需将 URL 中的名称作为查询参数传递:

onclick="location.href='classAdmin_list.php?name=<?= urlencode($data['class_name']) ?>'">

在向 URL 添加值时始终使用 urlencode() 以确保它们不会破坏 URL

然后在classAdmin_list.php-page 上使用它:

Class <span><?= htmlentities($_GET['name']) ?></span>

在输出数据时始终使用htmlentities()htmlspecialchars() 以防止XSS

【讨论】:

    【解决方案2】:

    例如,您需要将img 包装在某种锚中

    <a href="/selected.php?className=<?=urlencode($data['class_name'])?>">
        <img src="foto/balll.png" alt="ball" style="opacity: 0.5; width: 22%; height: 100px; position: relative; left: 75%; top: -30%;">
    </a>
    

    【讨论】:

    • 错字:&lt;?php echo&lt;?=,不是&lt;?php=
    猜你喜欢
    • 2017-07-04
    • 2015-07-04
    • 1970-01-01
    • 2012-02-04
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    相关资源
    最近更新 更多