【问题标题】:Show or hide HTML code based on URL根据 URL 显示或隐藏 HTML 代码
【发布时间】:2016-10-27 12:53:59
【问题描述】:

我正在处理一个表单,但我偶然发现了一个问题。我有不同的用户,我希望他们看到我的 SELECT 标记之一的不同值;到目前为止,我正在使用 PHP 来获取 URL,如果 $field == 'donor' 那么它会取消一些选项。代码如下:

function defineUser($field){
    if(isset($_GET['user']) && urldecode($_GET['user'])){
        $field = urldecode($_GET['user']);
        if($field == "donor"){
            return "<p>
                    <label for=designation>Designation</label>
                    <select name='merchant_defined_field_4' id='merchant_defined_field_4' required=''>
                        <option value=''>Select...</option>
                        <option value=''>Option 1</option>
                        <option value=''>Option 2</option>
                        <option value=''>Option 3</option>
                        <option value='Other'>Option 4</option>
                    </select>
                    </p>";
        } else if ($field != "donor") {
            return "<p>
                    <label for=designation>Designation</label>
                    <select name='merchant_defined_field_4' id='merchant_defined_field_4' required=''>
                        <option value=''>...</option>
                    </select>
                    </p>";
        } else {
            return "<p>
                    <label for=designation>Designation</label>
                    <select name='merchant_defined_field_4' id='merchant_defined_field_4' required=''>
                        <option value=''>...</option>
                    </select>
                    </p>";
        }
    }
}

这是我的功能,现在我只是在页面源本身上,

<?php echo defineUser($_GET['user']); ?>

我的问题很简单,就是如何让每个用户看到一个标准选项集 - 在我的选择标签内 - 基于用户发送过来的 URL?

【问题讨论】:

  • 我不清楚您在最后一个问题中要问什么。你能详细说明一下吗?
  • 你的函数没有多大意义。你给它传递了一个参数($field),但你要做的第一件事......你在第三行覆盖它。为什么?
  • 我认为“标准选项”是指最后一个else,其中 $field 与其他值不匹配。
  • 大卫,我把问题改写了一些。对不起我的英语。
  • 第三行的 Twinfriends 我试图从 URL 参数中获取值

标签: php html forms function url


【解决方案1】:

您的代码可以简化:

function defineUser() {
    $user = isset($_GET['user']) ? urldecode($_GET['user']) : null;

    switch ($user) {
        case 'donor':
            return "<p>
                    <label for=designation>Designation</label>
                    <select name='merchant_defined_field_4' id='merchant_defined_field_4' required=''>
                        <option value=''>Select...</option>
                        <option value=''>Option 1</option>
                        <option value=''>Option 2</option>
                        <option value=''>Option 3</option>
                        <option value='Other'>Option 4</option>
                    </select>
                    </p>";
            break;

        default:
            return "<p>
                    <label for=designation>Designation</label>
                    <select name='merchant_defined_field_4' id='merchant_defined_field_4' required=''>
                        <option value=''>...</option>
                    </select>
                    </p>";
    }
}

你不需要传递它$_GET['user'],因为它是全局可访问的,除非你担心依赖。其次,您实际上在 if else 子句中重复了两次相同的 HTML 块,在这里使用 switch 更有意义。

【讨论】:

  • 你是什么意思 $_GET['user'] 我可以用什么代替?
  • 我的意思是你不必将它作为参数传递。而不是defineUser($field),您可以简单地调用defineUser()
猜你喜欢
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 2019-07-15
  • 1970-01-01
相关资源
最近更新 更多