将全局$ _GET数组值调用为指定为数组的字段名称的value属性

时间:2014-02-23 00:56:27

标签: php arrays get

我正在编写一个过滤函数,它将“Delivery_Date”字段作为GET数组传递给PHP,以从数据库中请求数据。

在查询字符串中转换后,我很难确定如何访问GET数组变量“Delivery_Date [> =]”。我希望在提交表单后使用字段名称将其作为默认值重新调用。

提交后,GET变量作为数组$ _GET ['Delivery_Date'] ['> =']进行访问,但我的字段名称是字符串,“Delivery_Date [> =]”,当发送到getDefault函数时因此,不要拉$ _GET ['Delivery_Date'] ['> =']。

如何使用字段名称将全局$ _GET数组值调用到指定为数组的字段名称的value属性中?

<?php
function getDefault($default, $name) {
if (isset($_GET[$name]) && is_array($_GET[$name])) {
    foreach ($_GET[$name] AS $varkey=>$var) {
        $default = ($var!="") ? $var : $default;
    }
} else {
    $default = isset($_GET[$name]) ? $_GET[$name] : $default;
}
    return $default;
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get" id="filter" >
  <label for="contact">Contact Name</label>
  <input id="contact" name="Contact_Name" type="text" value= "<?php echo getDefault("Search by name","Contact_Name"); ?>">

  <label for="from_date">Date From</label>
  <input id="from_date" name="Delivery_Date[>=]" type="text" value= "<?php echo getDefault(date("Y-m-d"),"Delivery_Date[>=]"); ?>">

  <label for="to_date">Date To</label>
  <input id="to_date" name="Delivery_Date[<=]" type="text" value= "<?php echo getDefault(date("Y-m-d"),"Delivery_Date[<=]"); ?>">
  <input type="submit">
</form>

1 个答案:

答案 0 :(得分:0)

使用以下功能试用getDefault(date("Y-m-d"),"Delivery_Date", ">=")

<?php
function getDefault($default, $name, $subname=null) {
    if (isset($subname)) {
        $default = isset($_GET[$name]) && isset($_GET[$name][$subname]) ? $_GET[$name][$subname] : $default;
    } else {
        $default = isset($_GET[$name]) ? $_GET[$name] : $default;
    }
    return $default;
}
?>

另外,不要忘记使用htmlspecialchars清理输出以防止XSS。