【问题标题】:Getting Data from Previous Page to Transfer to Second Page PHP/MySQL从上一页获取数据以传输到第二页 PHP/MySQL
【发布时间】:2014-08-05 19:36:20
【问题描述】:

所以我从我的 MySQL 数据库中查询一些数据以动态填写一个下拉框,其中包含一个日期,然后是该日期的唯一 ID(唯一 ID 是主键,并且在相同的情况下递增日期在数据库中)。

我无法访问第二页上的唯一 ID,该 ID 将根据所选日期查询我的其余数据的数据。这有点令人困惑,所以我会尝试分解它。

表:

================================================ ====

|唯一ID|用户ID|武器|日期|位置|射程|分数|

这是一个跟踪用户得分的射击网页。

我的下拉框根据用户 ID 访问数据,然后它填充了一个下拉框

日期 - 唯一 ID。

在下一页,我可以很好地获取日期,但我不确定如何获取唯一 ID,因此我可以根据这两个数据条目选择其余数据。

这是我这部分的代码:

  <!--- Form. Selecting match and all the data under it. !--->
<form action = "retrieved.php"  method = "post" style="margin-bottom:0px">

<select name="date"><option value="">-- Select A Date --</option>
<?php
    // While there is a row of data, print out the date to the drop down box.
    while($row = mysqli_fetch_array($result))
      {
          echo("</option><option value=". $row['date'] . ">". $row['date'] . " 
| Unique ID: " . $row['uniqueID'] . "
                </option>");
      }
 ?>
</select>
<input type="submit" name="submit" value="Retrieve Data" />
</form>

E.G. 
DropdownBox Options:
2014-08-16 | Unique ID: 5
2014-09-17 | Unique ID: 8
2014-09-17 | Unique ID: 10
2014-09-17 | Unique ID: 25

我想过有两个下拉框,用户在其中选择一个日期,然后第二个下拉框具有唯一 ID,该 ID 将使用 AJAX 或 jquery 或其他东西动态更新,但我不熟悉这些,仍然需要知道如何访问下一页的数据....

我的第二页需要这样的东西:

$query = "SELECT * FROM matches WHERE id = '".$id."' AND date = '".$date."' AND uniqueID = '".$uniqueID'"; but I can't get the uniqueID variable to work. I tried using $_SESSION and $_POST but nothing is saving to the next page.

提前致谢!

编辑:最后,我希望能够访问与所选日期和唯一 ID 对应的所有数据(武器、射程、分数等)。

【问题讨论】:

  • 在第二页上,您将获得 $_POST 数组中的值。例如:$_POST['date'] 表示第一页上的日期字段。
  • @SaurabhSinha 是的,但 OP 也想要 uniqueID
  • @RobSchmuecker:什么是 OP?
  • 您可以做以下两件事之一,以使其保持基于 HTML/PHP 并且不使用 javascript,您可以使选择的 value 保持由唯一的 delimiter 分隔的两个值例如可以是@,然后在 PHP 中将其拆分出来。或者,您可以通过 jQuery 添加 data 属性并通过 AJAX 提交表单。 api.jquery.com/data
  • @SaurabhSinha 意思是“原始海报”

标签: javascript php jquery mysql sql


【解决方案1】:

您需要在选项的 value 字段中设置唯一 id:

while($row = mysqli_fetch_array($result))
{
    echo(
 "</option><option value='". $row['date'] . ",".$row['uniqueId']."'>".                           </option>"
);
}

然后在下一页上检索值时使用:

$valueArray = explode(',', $value);

这将产生一个像这样的数组:

['date', 'uniqueID']

您的查询将如下所示:

$query = "SELECT * FROM matches WHERE uniqueId = ".$valueArray[0] ." AND date     =".$valueArray[1]."

注意

您在此处的查询很容易受到SqlInjection 的影响

您应该使用PDO 或其他一些orm

管理您的查询并降低恶意 sql 被注入的风险。

【讨论】:

  • 在创建选项值时使用逗号和 > 有什么区别?当我使用你的方式时,会创建适量的下拉值,但它们都是空白的。
  • @Shinku443 我认为使用 > 或逗号作为分隔符应该没有太大区别。但是,使用 > 等运算符进行分隔通常是一种不好的做法。因为,它可能会引起混淆,尤其是在连接 html 字符串时。
  • hmm...好吧,我尝试使用您的方式,但它根本不起作用,就像下拉框没有填满任何东西一样。它只是白色的。唯一的区别是逗号而不是 '>'
  • @Shinku443 很抱歉造成混乱。您注意到在我的示例中,我用逗号分隔值。在您的示例中,您实际上根本没有划定值。所以你的结果将是
  • 啊啊啊我明白了!这是因为你拥有它的方式只给出了价值,但要让它显示它需要: 我让它根据你的代码工作,非常感谢! :)
猜你喜欢
  • 1970-01-01
  • 2020-01-19
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
  • 2020-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多