我想要完成的是将ID和评论内容发送到可以更新的页面。内容显示正确。 但是只有最后一个值总是被发布,所以由于某种原因,变量被覆盖,正如我在下一页测试输出时所看到的那样(updatereview.php)。如何为每个评论内容发送ID?我的代码到目前为止:
<?php
while($row2 = mysql_fetch_array($result2))
{
echo"<tr>";
?><td> <? echo "Comment left for ".$row2['game_name'].", ".$row2['game_platf'] ?> <br />
<form method="post" action="updatereview.php?id=<? echo $row2['review_id'] ?>">
<textarea name= "content" class= "rev" ><? echo $row2['content'] ?></textarea></td>
<td><input name="Submit1" type="submit" value="Update" />||</td>
<? echo"</tr>";
}
echo "</table>";
答案 0 :(得分:0)
您调用表单操作的方式基本上使您的表单方法“获取”。将id变量放入隐藏元素中以便它可以发布,如果你将它放在动作的url中,你将只获得一个id。
这在foreach中可能会更好
<?php
//use alternate syntax in html pages it's much easier to keep track off
foreach(mysql_fetch_array($result2) as $row2): ?>
<tr>
<td>
<?php echo "Comment left for ".$row2['game_name'].", ".$row2['game_platf'] ?></td><br />
<form method="post" action="updatereview.php">
//add hidden input element and give it the value of the id so it will be part of the $_POST array
<td> <input type="hidden" name="id" value="<?php echo $row2['review_id'] ?>" /></td>
<td><textarea name= "content" class="rev" ><?php echo $row2['content'] ?></textarea></td>
<td><input name="Submit1" type="submit" value="Update" />||</td>
</form>
</tr>
<?php endforeach ?>
</table>
现在当你发布表单时,id将在$ _POST数组中可用。
这种结构的方式你会得到每个记录的提交按钮,如果你只想要一个提交按钮,那么将提交移动到循环之外。
答案 1 :(得分:0)
这就是我想出来的,把代码放在有人知道更有效的方式之前。我已经使用了Rocky的方法,但是将值存储在名称字段中的数组中,解决了覆盖问题。我仍然认为使用get会工作而不是制作一个隐藏的字段,但这很有效,所以我会坚持下去。 : (对不起凌乱的压痕,尽我所能;))
$n = 1;
echo "<table>";
while($row2 = mysql_fetch_array($result2))
{
echo"<tr>";
?>
<td>
<?
echo "Comment left for ".$row2['game_name'].", ".$row2['game_platf']
?>
<br />
<form method="post" action="updatereview.php">
<textarea name= "content[<?php echo $n ?>]" class= "rev" >
<? echo $row2['content'] ?>
</textarea>
<input type="hidden" name="review_id[<?php echo $n ?>]" value=<?php echo $row2['review_id'] ?> /></td>
<td><input name="Submit1" type="submit" value="Update" />||</td>
</form>
<td><a href = "deletereview.php?id=<? echo $row2['review_id'] ?>" >Delete</a></td>
<? echo"</tr>";
$n++;
}
echo "</table>";
然后在updatereview.php中:
foreach($_POST['content'] as $content) {
echo "$content"; // to test values
foreach($_POST['review_id'] as $review_id) {
echo "$review_id";
}
答案 2 :(得分:0)
您需要构造名称属性值,使它们被视为数组
<input type="hidden" name="review_id[][<?php echo $n ?>]" value=<?php echo $row2['review_id'] ?> />
我在我的一个项目中所做的是使用具有特定模式的统一名称,以便相应地对元素进行分组
name="review[1][review_id]"
name="review[1][content]"
然后对于下一条记录,您可能正在使用不同的索引
name="review[2][review_id]"
name="review[2][content]"
我通常使用数据库中行的id作为索引。