我正在使用具有选择下拉列表的表单。我想在表单操作字段中将从所选选项中获取的值作为$_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
是array
,其中包含字段名称为r_id
,fy
等的表格数据
答案 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']
?>