将ID中的正确值传递给另一页时出现问题

时间:2010-09-09 06:54:15

标签: php

我正在使用表单编辑评论并使用隐藏的输入字段来传递值

表格是这样的。

<input type="text" name="name" value="<?php echo $name; ?>" class="input" />
<input type="hidden" name="com_name" value="<?php echo $name;?>"/>
<input type="text" name="email" value="<?php echo $email; ?>" class="input" />
<input type="hidden" name="com_email" value="<?php echo $email;?>"/>
<input type="text" name="phone" value="<?php echo $phone; ?>" class="input" />
<input type="hidden" name="com_phone" value="<?php echo $phone;?>"/>
<input type="text" name="location" value="<?php echo $location; ?>" class="input" />
<input type="hidden" name="com_location" value="<?php echo $location;?>"/>
<input type="hidden" name="com_id" value="<?php echo $id; ?>"/>
<textarea name="comment" cols="" rows="" class="comment-msg"><?php echo $comment; ?>
</textarea>
<input type="hidden" name="com_comment" value="<?php echo $comment;?>"/>
<input name="com_update_1" type="submit" class="btn-70" value="" />      

我正在使用while循环来迭代表单字段中的值。我的while循环代码是

$query = "SELECT comments.*,
                news.title 
                FROM comments JOIN news ON comments.news_id = news.id
                ORDER BY id DESC LIMIT $from, " . COMM_POST_NUMBER;
      $result = mysql_query($query);
while($row = mysql_fetch_array($result)) {
      $id = $row['id'];
      $date = date("d-F-Y", $row['timestamp']);
      $name = stripslashes($row['name']);
      $email = stripslashes($row['email']);
      $phone = stripslashes($row['phone']);
      $location = stripslashes($row['location']);
      $comment = stripslashes($row['comment']);
      $news_id = $row['news_id'];
      $title = stripslashes($row['title']);
      $approve = $row['approve'];

迭代效果很好,它可以完美地打印数据库中的值,带有值ID的隐藏输入字段在此页面中保存正确的值,即(comments.php)。但是当我想将值传递给不同的页面<form action="action.php" method="post">时,我的麻烦就开始了,当我点击提交时它只需要第一个id。即id值为1,它拒绝接受来自id的任何其他值。

以下是浏览器视图源代码中的代码

<div class="comments-toggle">
 <input type="text" name="name" value="My Name is 16" class="input" />
 <input type="hidden" name="com_name" value="My Name is 16"/>
 <input type="text" name="email" value="check@email.com" class="input" />
 <input type="hidden" name="com_email" value="check@email.com"/>
 <input type="text" name="phone" value="919999999999" class="input" />
 <input type="hidden" name="com_phone" value="919999999999"/>
 <input type="text" name="location" value="Somewhere" class="input" />
 <input type="hidden" name="com_location" value="Somewhere"/>
 <input type="hidden" name="com_id" value="16"/>
 <textarea name="comment" cols="" rows=""class="comment-msg">                              
</textarea>
 <input type="hidden" name="com_comment" value=""/>
  <input name="com_update" type="submit" class="btn-70" value="" />                        
   </div>

这是来自action.php的代码

 if( isset($_POST['com_update'])) {
        echo $id = $_POST['com_id'];
    if( isset($_POST['name'])) {
        echo $name = htmlspecialchars(strip_tags(mysql_real_escape_string($_POST['name']))); 
        $query = "UPDATE comments SET name = '$name' WHERE id = '$id'";
        $result = mysql_query($query) or die('Error');
        }

如何让它将正确的id值传递给action.php?

1 个答案:

答案 0 :(得分:1)

实现此目的的方法是将表单字段定义为准备好转换为PHP数组:

<input type="hidden" name="com_id[]" value="16"/>

现在,$_POST['com_id']应该是一个值数组。