2016-10-25 9 views
1

私は3つのドロップダウンメニューを持つフォームがあります。 htmlでは、検証のためにオプションの名前は0,1,2となっています。実際のインラインテキストは異なるオプションです。ドロップダウンメニューの値をCSVに

数値を.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に価値を押す:PHPで

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

答えて

1

、機能がトンを持っています相続人の範囲。これは基本的には、関数の外部から変数にアクセスしようとすると、それらを(括弧の間に)渡す必要があるか、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"]); 
+0

今日は私のヒーローです:) –

0

あなたの<form>タグが方法=「POST」を持っていることを確認することができますか?ゆるくタイプされた言語で== 1と言っても、あなたを困らせることがあります。

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

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

私は頭を上げてくれてありがとうと思います! –

関連する問題