1

我有一个 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'>";
}

我需要的是当他单击该行的按钮到另一个页面时发布与用户选择相对应的数据。如果我们将超链接与查询字符串一起使用,则不会有问题,因为我将使用 GET 请求从其他页面接收数据,并且超链接在显示给用户时将是静态的。我还需要从文本框中获取用户输入,这只能通过 POST 请求来实现。

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

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

因为我有一个生成字段的 while 循环,所以我总是从数据库中接收最后一个条目,而不是与用户从 LIST 中选择的行(行)相对应的那个。

4

5 回答 5

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;
于 2012-07-24T07:28:36.543 回答
2

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

尽量不要在脚本中不必要地回显大量 HTML 是很好的,所以首先我要从不需要的地方删除回显。

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

第三,我不知道有名字的表单是否真的对 php 的后端或前端有任何作用,所以我只是要删除一些你漂浮在周围的额外外壳,它们要么是无效的 HTML,要么只是没有当您向我们展示时,不要为您尝试做的事情增加任何价值。

是的,我们“注意到”您正在从数据库构建一些东西,因为代码看起来确实如此 =P。

我也很遗憾看到其他答案没有关于编码风格或任何关于回显这样的 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; ?>
于 2012-07-24T08:19:38.130 回答
1

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

于 2012-07-24T07:15:15.267 回答
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

 ?>
于 2012-07-24T07:20:27.053 回答
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++;
}
于 2012-07-24T07:57:31.887 回答