从动态生成的列表中在PHP网页之间传递数据

时间:2012-07-24 06:56:24

标签: php javascript jquery

我有一个PHP代码,它在如下表单中生成动态列表,请注意该列表是从数据库动态构建的:

echo '<form name="List" action="checkList.php" method="post">';
while($rows=mysqli_fetch_array($sql))
{
echo "<input type='password' name='code' id='code'>";
echo "<input type='hidden' name='SessionID' id='SessionID' value='$rows[0]' />";
echo "<input type='submit' value='Take Survey'>";
}

当我点击该行的按钮到另一个页面时,我需要POST对应于用户选择的数据。 如果我们使用带有查询字符串的超链接,那么就没有问题,因为我将使用GET请求从其他页面接收数据,并且超链接在向用户显示时将是静态的。 此外,我需要从文本框中获取用户输入,这只能通过POST请求。

只需从其他页面(checkList.php)我需要这些数据进行进一步处理:

$SessionID=$_POST['SessionID'];
$Code=$_POST['code'];

由于我有一个生成字段的while循环,我总是收到数据库的最后一个条目,而不是与用户从LIST中选择的行(行)对应的条目。

5 个答案:

答案 0 :(得分:2)

我不确定这是否正确

echo '<form name="List" method="post">';
while($rows=mysqli_fetch_array($result))
{
echo "<input type='password' name='code' id='code'>";
echo "<input type='button' value='Take Survey' onclick=show($rows[0])>";
echo "<br>";
}

和javascript

<script>
function show(id)
{
alert(id);
window.location="checkList.php?id="+id;
}
</script>

在checkList.php上

$id=$_GET['id'];
echo $id;

答案 1 :(得分:2)

我建议您清理变量的名称,以便代码可以 至少告诉我们它应该做什么。有人看你的代码应该很少见 并且在试图看到你想要实现的目标时遇到了很多麻烦:P,特别是当你需要帮助的时候;]。我将尝试一些事情并希望它能让你更容易理解你想做的事情,也许会得到你的答案。

最好不要在脚本中不必要地回显大量的HTML,所以首先我要删除 回声从不需要的地方开始。

其次,我将使用一个返回更容易处理结果的mysql函数。 $user = mysqli_fetch_assoc($sql)

第三,我不知道具有名称的表单是否实际上为php的后端或前端做了什么,所以我是 只是要删除你浮动的一些额外的外壳,这是无效的HTML 或者只是没有为你向我们提供的内容添加任何价值。

是的,我们“注意”你正在从数据库构建一些东西,因为代码看起来像是=。

我也很难过看到其他答案没有关于编码风格的建议或关于回复html的任何建议:(。

<?php while($user = mysqli_fetch_assoc($sql)): ?>
<form action="checkList.php" method="post">
    <input type='password' name='code' value='<?php echo $user['code'] ?>' />
    <input type='hidden' name='SessionID'  value='<?php echo $user['id'] //Whatever you named the field that goes here ?>' />
    <input type='submit' value='Take Survey' />
</form>
<?php endwhile; ?>

答案 2 :(得分:1)

你可以检查checkList.php是否存在$ _POST ['code'],如果存在则检索将从数据库生成的$ _POST ['SessionID']。但有一件事,如果你有一个表格中的所有隐藏字段,它们都将被发送,所以你需要考虑如何纠正 - 可能是每个隐藏字段的单独表单,提交按钮和其他POST字段。 然后,您将能够以您需要的方式获取数据 - $ SessionID = $ _ POST ['SessionID']; 我想这是解决问题的最简单方法。

答案 3 :(得分:1)

您可以尝试这样的事情:

while($rows=mysqli_fetch_array($sql))
{
$index = 1;
echo "<input type='password' name='code' id='code'>";
//Attach $index with SessionID
echo "<input type='hidden' name='SessionID_$index' id='SessionID' value='$rows[0]' />";
echo "<input type='submit' value='Take Survey'>";
}

在checkList.php上

 <?php 
  $num = explode('_', $_POST['SessionID']);
  $num = $num[1];
  //in $num you will get the number of row where you can perform action

 ?>

答案 4 :(得分:0)

$form = 1;
while($rows=mysqli_fetch_array($sql))
{

echo '<form name="List_$form" action="checkList.php" method="post">';
echo "<input type='password' name='code' id='code_$form'>";
echo "<input type='hidden' name='SessionID' id='SessionID_$form' value='$rows[0]' />";
echo "<input type='submit' value='Take Survey'>";
echo '</form>';
$form++;
}