【问题标题】:url is not identifying the id passed in form actionurl 未识别表单操作中传递的 id
【发布时间】:2015-06-08 05:40:59
【问题描述】:

我有一个搜索表单,其操作属性包含要在 URL 中传递的 id,并且表单是从 get 方法提交的,以便用户获取要共享或添加书签的搜索结果。

现在我面临的问题是,我在操作中传递的 id 没有显示在 URL 中,但所有其他输入字段的值看起来都很好。

这是我的表格:

<form action="trails.php?pname=<?php echo $getName;?>" id="filter" method="GET" name="filter">
    <select class="multiselect form-control" multiple="multiple" name='activity[]' id="activity">
       <?php
          $toaSql = mysql_query("select * from type_of_activity where cat_id='1'");
          while ($toaRow = mysql_fetch_array($toaSql)) {
          echo "<option  value='" . $toaRow['typeOfActivity'] . "'><img style='width: 21px; margin-left: 5px;' src='home/images/" . $toaRow['catImg'] . "'> " . $toaRow['typeOfActivity'] . "</option>";
        }
      ?>
  </select>

  <select class="multiselect form-control" multiple="multiple" name='activity[]' id="activity">
      <?php
         $toaSql = mysql_query("select * from type_of_activity where cat_id='2'");
                                        while ($toaRow = mysql_fetch_array($toaSql)) {
                                            echo "<option  value='" . $toaRow['typeOfActivity'] . "'><img style='width: 21px; margin-left: 5px;' src='home/images/" . $toaRow['catImg'] . "'> " . $toaRow['typeOfActivity'] . "</option>";
                                        }
                                        ?>
                                    </select>
       <select class="multiselect form-control" multiple="multiple" name='activity[]' id="activity">
                                        <?php
                                        $toaSql = mysql_query("select * from type_of_activity where cat_id='3'");
                                        while ($toaRow = mysql_fetch_array($toaSql)) {
                                            echo "<option  value='" . $toaRow['typeOfActivity'] . "'><img style='width: 21px; margin-left: 5px;' src='home/images/" . $toaRow['catImg'] . "'> " . $toaRow['typeOfActivity'] . "</option>";
                                        }
                                        ?>
                                    </select>
</form>

trail.php 页面:

if(isset($_GET['pname'])){

 $getName = $_GET['pname'];
 // print_R($getName);
if($getName=='video'){
    $queryVideo = "SELECT * FROM `contributevideo` WHERE status='active' " ;
    //echo $queryVideo;
}elseif($getName=='album'){
    $queryAlbum = "SELECT * FROM `contributeimage` WHERE status='active' AND category='album'" ;
}

}

Trails.php 页面根据从 url 获取的页面名称运行 sql 查询,但在 url 中找不到任何 pname 变量,因此查询没有执行。

我在哪里做错了,请指导。 谢谢

【问题讨论】:

  • 为什么不在表单中使用隐藏字段? &lt;input type='hidden' name='pname' value='&lt;?= $pname ?&gt;' /&gt; 并在您的 Trails.php 中使用 if(isset($_POST['pname']))
  • 您是如何提交此表单的?
  • 我是用get方法发布表单的,​​那为什么要访问$_POST['pname']的路径中的变量呢?
  • @Geetika 抱歉,您应该使用 $_GET.. 但只能使用隐藏字段。不要在表单操作中传递 get 变量.. :)
  • @Geetika 你的提交按钮在哪里??表单是如何提交的?

标签: php forms


【解决方案1】:

您为什么将参数描述为 URL 编码?

<form action="trails.php?pname=<?php echo $getName;?>" id="filter" method="GET" name="filter">
   // Existing form

由于表单的方法是“GET”,因此您可以只描述一个隐藏的输入。

<form action="trails.php">
   <input type="hidden" name="pname" value="<?php echo $getName; ?>"/>
   // Existing form

它应该可以工作。

【讨论】:

  • @Geetike 然后调试代码。尝试将“print_r($_GET)”放在 trails.php 的开头,以便在执行时获取 GET 数组的内容。
  • 它显示了我输入的表单字段的值,隐藏字段除外
【解决方案2】:

您的代码的问题是您将表单设置为使用GET 方法提交值。这意味着表单字段中的值将在 URL 中传递,覆盖(删除)您的 pname 值。

要修复它只需将表单的method 更改为POST 和PHP 代码以通过$_POST['activities'] 访问activities,它应该可以工作。

【讨论】:

  • 我想在 url 中显示所有字段的值,这就是我使用 GET 方法的原因..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 1970-01-01
  • 2021-09-05
  • 2022-07-16
  • 1970-01-01
相关资源
最近更新 更多