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



我正在使用具有选择下拉列表的表单。我想将从所选选项获得的值作为表单操作字段中的$_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_data是一个包含字段名称r_idfy等的表数据的表数据的array

我有两种方法。

第一种方法

在表单元素内创建一个隐藏字段以存储 id 的值。将表单操作 null

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

与其从表单操作更改页面,不如选择值并在传递给 header:location 的 url 中设置它们。

试试这个。

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

您要做的是去$_GET['id]中的某个地方。这在服务器端是不可能的,因为您必须首先发出请求,然后执行代码。如果您没有尝试将表单数据带到此 URL,请尝试此建议。但是忘记我对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']
?>

要更改下拉列表选择的值,您需要在更改选择框时使用 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'] 在操作页面"客户端详细信息动态.php"上使用 $['dynamicfy'] 获得选定的下拉列表

最新更新