将foreach循环外的选择下拉值作为表单操作字段中的$ _GET请求传递

时间:2017-01-06 05:52:59

标签: php html forms

我正在使用具有选择下拉列表的表单。我想在表单操作字段中将从所选选项中获取的值作为$_GET请求传递,但是在foreach循环之外的任何方式都可以访问它。这是我写的代码示例

<form id="dynamicForm" action="client-detail-dynamic.php?id=<?php echo $_GET['id']; ?>&r_id=<?php **PASS THE DROPDOWN VALUE ID HERE**  ?>" method="post">
    <select class="form-control" id="dynamicfy" name="dynamicfy">
        <?php     
        $j = 0;
        foreach($payment_data as $pd):
        ?>
            <option value="<?php echo $payment_data[$j]->r_id; ?>"><?php echo $payment_data[$j]->fy; ?></option>
       <?php $j++; endforeach; ?>
   </select>
</td>
<td class="col-md-4">
    <input type="submit" name="submit" id="submit" class="btn btn-sm btn-success">
</td>
</form>

注意:$payment_dataarray,其中包含字段名称为r_idfy等的表格数据

4 个答案:

答案 0 :(得分:1)

我有两种方法。

第一种方法

在表单元素内创建一个隐藏字段,以存储id.Put表单操作的值

<form id="dynamicForm" action="" method="post">
<input type="hidden" name="id" value="<?php echo $_GET['id']; ?>"> 

在提交时,您将获得两个值

if(isset($_POST['submit'])){
  $id=$_POST['id'];
  $r_id=$_POST['dynamicfy'];
  header("location: client-detail-dynamic.php?id=" . $id . "&r_id=" . $r_id . "");
  exit();  
}

第二种方法使用javascript

<select class="form-control" id="dynamicfy" name="dynamicfy" onchange="rdrt(this.value)">

<script>
    function rdrt(str){
        id=<?php echo $_GET['id']; ?>;
         if(str!=""){ 
        location.href="client-detail-dynamic.php?id=" + id + "&r_id=" + str; 
        }
    }
</script>

答案 1 :(得分:0)

要更改选择下拉列表的值,您需要在更改选择框时使用jQuery。 请参考以下代码。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
    jQuery(Document).ready(function() {
        jQuery('#dynamicfy').change();
    });

    jQuery('#dynamicfy').change(function() {
        jQuery('#dynamicForm').attr('action', 'client-detail-dynamic.php?id=' +<?php echo $_GET['id']; ?> + '&r_id=' + jQuery(this).val());
    });

</script>

如果您只想在操作页面上选择下拉列表,那么您还可以在操作页面上使用$ _POST ['dynamicfy']在操作页面上获取选定的下拉列表“client-detail-dynamic.php”

答案 2 :(得分:0)

您可以选择值并将其设置在传递给header:location的url中,而不是从FORM ACTION更改页面。

试试这个。

    ``<?php


       if(isset($_POST['submit'])
       {
           $option = $_POST['dynamicfy'];
           $id = $_POST['id']
           header('location: http://client-detail-dynamic.php?id=$id,r_id=$option');
       }

       ?>

   <form id="dynamicForm" action="" method="post">
   <select class="form-control" id="dynamicfy" name="dynamicfy">
   <?php 

        $j = 0;
        foreach($payment_data as $pd):

     ?>
     <option value="<?php echo $payment_data[$j]->r_id; ?>"><?php echo                  $payment_data[$j]->fy; ?></option>
    <?php $j++; endforeach; ?>
    </select>
    </td>
    <td class="col-md-4">
    <input type="hidden" name="id" value="<?php echo $_GET['id']; ?>
    <input type="submit" name="submit" id="submit" class="btn btn-sm btn-success">
    " />

     </td>
     </form>

答案 3 :(得分:0)

你要做的是去$_GET['id]的某处。这不是可能的服务器端,因为您必须首先发出请求,然后执行代码。如果您没有尝试将表单数据随身携带到此网址,请尝试使用此建议。但是忘了我的not possible。你可以这样做:

<?php

if(isset($_POST['submit-button'])) {
  header("location: file.php?something=" . $_GET['id']);
}

// set the form action to nothing and add this to the same page the form is on
// and you can redirect based on the $_GET['id']
?>