Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过循环使用表单发送多个值_Php_Html_Forms_Loops - Fatal编程技术网

Php 通过循环使用表单发送多个值

Php 通过循环使用表单发送多个值,php,html,forms,loops,Php,Html,Forms,Loops,我试图完成的是将id和评论内容发送到一个可以更新的页面。内容显示正确。 但是,只有最后一个值始终被发布,因此出于某种原因,变量被覆盖,正如我在下一页(updatereview.php)测试输出时所看到的那样。如何发送每个评论内容的Id?我的代码如下: <?php while($row2 = mysql_fetch_array($result2)) { echo"<tr>"; ?><td> <? echo "Comment left

我试图完成的是将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>";

||
您调用表单操作的方式基本上使表单方法“get”。将id变量放入一个隐藏元素中,以便它可以发布,如果将其放入操作的url中,则只能获得一个id

这在一个论坛上可能会更好

<?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>

这就是我想到的,把代码放在某人知道更有效的方法的情况下。我使用了Rocky的方法,但将值存储在名称字段的数组中,解决了覆盖问题。然而,我仍然认为使用get将有效,而不是创建隐藏字段,但这很有效,因此我将坚持使用它
(对不起,缩进有点乱,我已经尽力了;))


您需要以这样一种方式来构造name属性值,即它们将被视为数组

<input type="hidden" name="review_id[][<?php echo $n ?>]" value=<?php echo $row2['review_id'] ?> />
那么对于下一条记录,您可能使用了不同的索引

name="review[2][review_id]"
name="review[2][content]"

我通常使用数据库中的行id作为索引。

是否要在每次提交时更新一个审阅或所有审阅?此代码输出所有审阅,每个审阅都有一个更新/删除选项。因此,每次提交都应该进行审查。它的目的是通过url发送每个评论的id和文章内容。正如您所说,我确实更改了它,将id作为隐藏值以POST的形式发送到表单中,但仍然只有最后一次审阅。首先,检查您的数据数组,确保它包含您期望的数据。第二,检查循环,确保它做了你想要的。保持它的简单性,并添加回项目,直到你打破它。如果你想更新和删除按钮,这很容易。删除所有表单内容,并为每个表单添加一个带有更新/删除操作链接的表格单元格。如果你喜欢,你可以设计成按钮。此外,对于链接,您需要在url中传递id。这看起来是一个简单的问题,但它有各种各样的可能性。
<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]"