将下拉菜单值传递给CSV

时间:2016-10-25 15:34:14

标签: php html csv if-statement

我有一个有三个下拉菜单的表单。在html中,选项被命名为0,1和2用于验证目的,实际的内联文本是不同的选项。

当我将值推送到.csv时,我写了一些if statements来重命名已保存的变量,而不是仅仅按下数字。我已经有了它的工作,但是我不想让一堆if statements徘徊,我想我会把它们放到一个函数中然后调用函数。但是,当我这样做时,用户选择的任何选项的值将恢复为在.csv文件中存储为0,1或2。

我的问题是我的功能缺失是什么导致它只选择编号值?

HTML:

<select id="semesterSelector" name="semesterSelector" onchange="checkPage5()">
<option value="0">Select</option>
<option value="1">Fall</option>
<option value="2">Spring</option>
</select> 

PHP:

$semesterSelector = $_POST["semesterSelector"];

function semesterNameChange(){
if($semesterSelector == 1)
    {
        $semesterSelector = "Fall";
    }
    elseif($semesterSelector == 2)
        {
            $semesterSelector = "Spring";
        }
}
semesterNameChange();

将值推送到Csv:

$csvData = [...] $semesterSelector [...]

2 个答案:

答案 0 :(得分:1)

在PHP中,函数有自己的范围。这基本上意味着,如果你试图从函数外部访问变量,你需要传入它们(在括号之间),或者你需要使用global来允许外部变量在您的函数范围内使用。在这种情况下,您只需在函数顶部添加global $semesterSelector即可。

function semesterNameChange(){
    global $semesterSelector;
    if($semesterSelector == 1)
    {
        $semesterSelector = "Fall";
    }
    elseif($semesterSelector == 2)
    {
        $semesterSelector = "Spring";
    }
}
semesterNameChange();

另一种方法是将值直接传递给函数:

function semesterNameChange($selectValue) {
    if( $selectValue == 1 )
    {
        return "Fall";
    }
    elseif ( $selectValue == 2 )
    {
        return "Spring";
    }
}

$semesterSelector = semesterNameChange($_POST["semesterSelector"]);

答案 1 :(得分:0)

你能确定你的<form>标签有method =“POST”吗?另外用松散类型的语言说== 1会让你陷入困境。我们确定我们有一个整数并严格评估它:

$semesterSelector = (integer) $_POST["semesterSelector"];

function semesterNameChange(){
    global $semesterSelector;
    if ($semesterSelector === 1)