【问题标题】:Hidden form field value not correct when passing data传递数据时隐藏的表单字段值不正确
【发布时间】:2015-07-03 16:19:23
【问题描述】:

我有一个使用 MySQL 的 PHP 表单并将数据传递到另一个页面,在第一页中,mysql 查询选择了一些记录,然后将其打印在页面上,其中一条记录显然是 ID,它也被打印了在隐藏字段的值中,以便在下一页中使用它

<input type="hidden" name="cat_id" value="<?php echo $row['id']; ?>" />

结果是正确的,我在检查页面输出代码时有10个不同的id

<input type="hidden" name="cat_id" value="1" />
<input type="hidden" name="cat_id" value="2" />
<input type="hidden" name="cat_id" value="3" />
...

当我提交表单时出现问题(我有 1 个表单用于每个数据库结果,所以如果我有 10 个条目,我还有 10 个隐藏字段和 10 个不同的值),即使我提交 2nd10th 形式,在下一页中,$_POST['cat_id'] 的值始终为 1,根据 $_POST 的一般打印

Array
(

[cat_id] => 1

)

有人明白为什么吗?

编辑:添加完整的表单输出脚本以进行澄清

 <div class="container">
  <div class="row">

  <?php
    if($c == 0){
  ?>
      <h3>Il catalogo è momentaneamente vuoto.</h3>
  <?php
    } else {

      while($row = $result->fetch_assoc()) {
        ?>

  <div class="col-md-3 col-sm-4 col-xs-12">
      <div class="thumbnail">
          <div class="caption-img" style="background: url('imgs/thumb.jpg');"></div>
          <a href="#" data-toggle="modal" data-target="#myModal">
          <div class="caption-link">
            <h3><?php echo $row['titolo']; ?></h3>
            <span class="glyphicon glyphicon-book"></span>
          </div>
          </a>
      </div>
    </div>

    <!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Password</h4>
      </div>
      <div class="modal-body">
        <p>Perfavore inserisci la password necessaria per visualizzare questo elemento</p>
        <form action="show.php" method="post">
          <input type="password" class="form-control" name="psw" />
          <input type="hidden" name="cat_id" value="<?php echo $row['id']; ?>" />
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Chiudi</button>
        <button type="submit" class="btn btn-primary" name="view">Prosegui</button>
        </form>
      </div>
    </div>
  </div>
</div>    

        <?php
      }

    }
  ?>

  </div>
</div>

【问题讨论】:

  • 如果页面上有多个表单,则应该有多个 &lt;form&gt;input fields here, submit here&lt;/form&gt; .. 如果您只有 1 个 &lt;form&gt;,那么您的所有输入字段都将被提交
  • 在他的问题中,他说他每个条目都有 1 个表格,所以 10 个表格
  • @Ciccio - 我知道他这样做了,但是如果他正确打开和关闭表单,他可能不会遇到这个问题。我想另一个问题可能是嵌套表单
  • 您提交的表单是否带有一些 JS 验证?您的 JS 验证是否有可能提交第一个表单而不是预期的表单?
  • 是的,如果我们在这里看到完整的代码,我想我们可以更轻松地提供帮助。

标签: php mysql forms mysqli


【解决方案1】:

您的表单已损坏,无法在表单关闭之前关闭其父元素:

<div class="modal-body">
        <p>Perfavore inserisci la password necessaria per visualizzare questo elemento</p>
        <form action="show.php" method="post">
          <input type="password" class="form-control" name="psw" />
          <input type="hidden" name="cat_id" value="<?php echo $row['id']; ?>" />
      </div> <!-- HERE IS YOUR ISSUE -->
      <div class="modal-footer"> <!-- HERE IS YOUR ISSUE -->
        <button type="button" class="btn btn-default" data-dismiss="modal">Chiudi</button>
        <button type="submit" class="btn btn-primary" name="view">Prosegui</button>
        </form>
      </div>

它应该看起来更像这样:

<form action="show.php" method="post">
    <div class="modal-body">
        <p>Perfavore inserisci la password necessaria per visualizzare questo elemento</p>
        <input type="password" class="form-control" name="psw" />
        <input type="hidden" name="cat_id" value="<?php echo $row['id']; ?>" />
    </div>
    <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Chiudi</button>
        <button type="submit" class="btn btn-primary" name="view">Prosegui</button>
    </div>
</form>

【讨论】:

  • @K3nzie 您是否也更改了表单打开的位置?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多