2012-03-29 10 views
0

HTMLで入力されたドロップダウンリストを作成しました。 2つのドロップダウンが選択されると、フォームは 'calculate.php'にポストされ、PHPスクリプトはドロップダウンから選択した値をエコーアウトします。ドロップダウンリストのPHPの問題

<form action="calculate.php" method='POST'> 
<select name="Phones"> 
<option value="Lumia800">Nokia Lumia 800</option> 
<option value="iPhone">Apple iPhone 4s</option> 
<option value="GalaxyS2">Samsung Galaxy S2</option> 
<option value="Bold9900">Blackberry Bold 9900</option> 
<option value="SensationXE">HTC Sensation XE</option> 
<option value="XperiaS">Sony Ericsson Xperia S</option> 
</select> 

<select name="Network"> 
<option value="Orange">Orange</option> 
<option value="Vodafone">Vodafone</option> 
<option value="O2">O2</option> 
<option value="Three">Three</option> 
</select> 

<input type="submit" /> 
</form> 

この例では、 'calculate.php'は選択されたドロップダウン値をエコーし​​ます。

<?php 
$pref=$_POST['Phones']; 
$pref1=$_POST['Network']; 

$Orange="5"; 

if ($pref1 == "Orange") 
{ 
    $total1 = $Orange; 
} 

$Lumia800="10"; 

if ($pref == "Lumia800") 
{ 
    $total = $Lumia800 + $Orange; 
} 

echo $total; 

    ?> 

この出力例は、「15」

ある

この例の目的は、最終的には電話、ネットワークコストの価格を追加するこのコードのセットで、シンプルな携帯電話のパッケージシステムを作成することで、ユーザーがそれを送信したときにどれくらいの費用がかかるかという最終的な合計のために、他の変数を一緒に使用します。

問題は、対応するドロップダウンボックス(「Phones」と「Network」など)の変数をお互いに追加したいという問題です。このような単純なスクリプトでは、私の例は複雑すぎるでしょうか?私が望む結果を得るためのより洗練された方法はありますか?

ありがとう、

JB。

+0

可能な組み合わせごとにifステートメントを使用して、トラックを管理しやすいとは思わない。おそらく、より良い方法は配列やデータベースに値を格納し、値を取得してその場で追加を実行することかもしれません。 – F21

答えて

0

を検証それは動作しますが、複雑になるかもしれません。代わりにswitch文に変更することをお勧めします。

$total = 0 
switch ($pref) { 
    case "Orange": 
    $total += 5; 
    break; 
    case "O2": 
    $total += 8; 
    break; 
} 

同じスイッチ構造は、$ pref1またはnetwork変数用です。

0
<form action="calculate.php" method='POST'> 
    <select name="Phones"> 
    <option value="123">Nokia Lumia 800</option> 
    <option value="234">Apple iPhone 4s</option> 
    <option value="12">Samsung Galaxy S2</option> 
    <option value="32">Blackberry Bold 9900</option> 
    <option value="432">HTC Sensation XE</option> 
    <option value="12">Sony Ericsson Xperia S</option> 
    </select> 

    <select name="Network"> 
    <option value="42">Orange</option> 
    <option value="34">Vodafone</option> 
    <option value="23">O2</option> 
    <option value="34">Three</option> 
    </select> 

    <input type="submit" /> 
</form> 

<?php 
echo $_POST['Network'] + $_POST['Phones']; 
?> 

は、その場合のずっと簡単かもしれないが、もちろん、それはあなたがこれを必要とする正確な状況に依存します。

+0

このアプローチの欠点は、値を加算していくつかの支払い処理システムに送る場合です。この場合、ユーザーはPOST変数を簡単に編集して問題を引き起こすことがあります。 :Pしかし、それがユーザーに価格を表示するためだけに使用される場合、私はあまりにも多くの問題があるはずはないと思う: – F21

+0

そう、私はそれを直接的には厳密な状況に依存すると付け加えたそれが決済処理システムの場合は、カスタムタイトルではなくデータベースからIDを出力し、これらのIDとの一致はいずれの方法でもサーバー側で発生する必要があります。 –

1

すべての価格を含む選択ごとに配列を定義する必要があります。

$phone_prices = array("Lumia800" => 10, "iPhone" => 42); 
$network_prices = array("Orange" => 5, ...); 

そして、あなたは、単に

$price = $phone_prices[$pref] + $network_prices[$pref1]; 

ような何かをcoudしかし、これは本当に安全ではありません、必ず$県と$ PREF1は、それぞれの配列のインデックスを既存している作ります。

0

G'day mate。

あなたは1のため、 Phones => Priceからマッピングの配列を作成することができ

Network => Price

例:その後、

<?php 
$phones = array(
    'Lumia800' => 10, 
    'iPhone' => 15, 
    'GalaxyS2' => 30, 
    // rest of the phones with price 
); 

$networks = array(
    'Orange' => 10, 
    'Vodafone' => 15, 
    'Three' => 3, 
    'O2' => 8 
); 

は、ユーザーの入力

if(!empty($phones[$pref])) && !empty($networks[$pref1])) { 
    echo $phones[$pref] + $networks[$pref1]; 
} 
0

あなたのコードが 私は今、何を参照してくださいその後、より複雑になるだろうされていない場合、私はちょうど変更します

... 
<option value="5">Apple iPhone 4s</option> 
... 
<option value="10">Orange</option> 
... 

... 
<option value="iPhone">Apple iPhone 4s</option> 
... 
<option value="Orange">Orange</option> 
... 

をそして最後にループのすべての値を

$total = 0; 

foreach ($_POST as $key => $val) { 
    $total += $val; 
} 

echo $total; 

この方法では、ドロップダウン数を変更することができます

関連する問題