2012-01-02 5 views
2

私のコードで助けが必要です。ドロップダウンリストの結果をエコーする

私がする必要があるのは、値が のドロップダウンリストを持っていて、値を選択すると別のdelcared値からマイナスの値 を取り除き、最後に新しい値をエコーアウトします。 これは私がこれまでに試したことですが、解決できないエラーがあります。

<html> 
<form action="" method="post"> 
<select name="list" id="list"> 
<option value="1">1</option> 
<option value="2">2</option> 
</select> 
<input type="submit" name="submit" id="submit" value="Submit" /> 
</form> 
</html> 
<?php 
$options = array(
    '1' => 1, 
    '2' => 2, 
); 

$value = $_POST['list']; 
$cmeter = 100; 

$newcmeter = $cmeter - $options[$value] ; 
echo $newcmeter; 
?> 

エラーは以下のとおりです。

[03-Jan-2012 02:02:03] PHP Notice: Undefined index: list in C:\www\abc\hello.php on line 16 

[03-Jan-2012 02:02:03] PHP Notice: Undefined index: in C:\www\abc\hello.php on line 19 

答えて

2

あなたのコードは、フォームが送信されたかどうか、無条件に実行されます。フォームが提出されていない場合、$ _POST ['list']値は存在せず、したがってエラーが発生します。あなたがPOStを使用しているので、修正は簡単です。

... form stuff here... 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    ... your php processing stuff here ... 
} 

これは、POSTが実際に実行されたときにのみコードを実行させます。しかし、安全性を最大限にするためには、提出されたデータも検証する必要があります。

if (isset($_POST['list'])) { 
    $value = (int)$_POST['list']; 
} else { 
    $value = 0; // default value; 
} 
+0

しかし、私は変数cmeterを実際にデータベースから取得しています。テスト用に固定数100を付けました。 newcmeterの値をデータベースに挿入することは可能ですか? – Nicholas

関連する問題