PHP ve ilişkilendirilebilir dizilerle Yardım

3 Cevap php


I have to do a simple calculator in php based on user's input and choice from select field, something like this:

<?php
$a = $_GET['a'];
$b = $_GET['b'];

$array = array( "option1" => 0.1,
                    "option2" => 0.15,
                    "option3" => 0.3,
                    "option4" => 3,
                    "option5" => 3,
                    "option6" => 16,
                    "option7" => 16,
                    "option8" => 16
                    );

echo "<form action='calc.php' method='get'>";
echo "<input type='text' name='a' value='".$a."'> of ";
echo "<select name='b'>";
foreach ($array as $k => $v) {
    echo "<option value='".$v."'>".$k."</option>";
}
echo "</select> ";
echo "<input type='submit' value='='> ";

$total_volume = $a * $b;

echo $total_volume;

echo "</form>";
?>

Eh, şimdi her şey gayet iyi çalışıyor, ama fikir kullanıcıya sonra form, giriş alanına gönderilen miktarda sayfa reloads ve aslında seçilen kullanıcı seçili seçeneği sunar ki ...

Ilk şey kolay: Ben sadece value="a" Benim giriş alanına koymak, ama <select> alanında seçilen bir seçenek yapmak için nasıl emin değilim??

Ben bu başladı:

foreach ($array as $k => $v) {
        echo "<option value='".$v."'";
        if ($b == $v) {
            echo " selected ";
        }
        echo ">".$k."</option>";
    }

... Beklendiği gibi ama bu besbelli değil çalışma ... bu kolay bir ile bana yardımcı olun :)

Teşekkürler!

3 Cevap

Sen 'selected="selected"' gibi bir şey yankı gerekir. Kodun geri kalanı bana güzel görünüyor.

Birden fazla seçenek imkansız formu gönderdikten sonra doğru olanı seçmek için yapım, aynı değeri döndürmek gibi On second thought yapısal yanlış bir şey var.

Eğer döngü içinde select değer olarak $k göndermek gerekir ve hesaplamalar için sadece yerine $b in $array[$b] kullanın.

<?php
$a = $_GET['a'];
$b = $_GET['b'];

$array = array( "option1" => 0.1,
                    "option2" => 0.15,
                    "option3" => 0.3,
                    "option4" => 3,
                    "option5" => 3,
                    "option6" => 16,
                    "option7" => 16,
                    "option8" => 16
                    );

echo "<form action='calc.php' method='get'>";
echo "<input type='text' name='a' value='".$a."'> of ";
echo "<select name='b'>";
foreach ($array as $k => $v) {
        echo "<option value='".$k."'";
        if ($b == $k) {
            echo ' selected="selected"';
        }
        echo ">".$k."</option>";     // or $v if you want to show the number
}
echo "</select> ";
echo "<input type='submit' value='='> ";

$total_volume = $a * $array[$b];

echo $total_volume;

echo "</form>";
?>

Bu deneyin:

foreach ($array as $k => $v) {
   $selected= ($b == $v) ? 'selected="selected"' : '';
   echo "<option value='$v' $selected>$k</option>\n";
}

You have to catch the data in $_GET. Try

foreach ($_GET as $k => $v) {
        echo "<option value='".$v."'";
        if ($b == $v) {
            echo " selected ";
        }
        echo ">".$k."</option>";
    }

EDIT:

Benim Bilgisayar On burada çalıştı GET dökümü

        <form action='' method='get'>
    <input type='text' name='a' value='121'> of <select name='b'>
<option value='0.1'>option1</option>
<option value='0.15'>option2</option>
<option value='0.3'>option3</option>
<option value='3'>option4</option>
<option value='3'>option5</option><option value='16'>option6</option><option value='16'>option7</option><option value='16'>option8</option></select> <input type='submit' value='='> 363
    </form> 

Url

http://localhost/test.php?a=121&b=3

Ve parametreler

a 121 b 3