PHP ассоциативный массив и переключатель - PullRequest
0 голосов
/ 02 декабря 2009

Мой ассоциативный массив.

$money = array("Nickels" => $_POST["nickels"], "Dimes" => $_POST["dimes"], "Quarters" =>$_POST["quarters"]);

Моя HTML-форма настроена для обработки кварталов, Даймы и никели не показаны в этом случае для краткости.

<label><b>Quarters:</b></label>
<select name="quarters" >
<option value=".25">25c</option>
<option value=".50">50c</option>
<option value=".75">75c</option>
<option value="1">$1.00</option>
</select>

Пользователь может выбрать только четверти, только десять центов или только никели. Если пользователь выбирает Quarters со значением параметра .25, это значение будет отправлено на скрипт php.

Так что мне просто интересно, какие расчеты основаны на том факте, что пользователь может выбрать Кварталы только с одним значением, Dimes только с одним значением и Nickels только с одним стоимость, а не комбинация конфессий,

как можно настроить различные тестовые случаи, например, если пользователь выбирает $money["Quarters"]; // С различными значениями из формы html, такими как .25, .50, .75 или 1, и только одно из выбранных значений попадет в скрипт php в зависимости от того, что выбрал пользователь. *

Могу ли я сделать это:

switch($selection)
{
        case “Quarters”:
            echo “ You chose  $money[‘Quarters’];   .<br />”;
            break;
        case “Nickels”:
            echo “You chose $money[‘Nickels’]; .<br />”;
                break;
        case “Dimes”:
            echo “You chose  $money[‘Dimes’]; . <br />”;
                    break;
default: print  “Please select a Denomination”;
}

Спасибо за то, что вы не воспламенили новичка, я все еще учусь, и извините за сочетание и совпадение в терминах " и .

Ответы [ 2 ]

2 голосов
/ 02 декабря 2009

Выбранные значения в форме представляются как $_POST['quarters'].

Я понимаю, что вы хотите проверить, выбрал ли пользователь более одного из ваших <select> s (правильно?)

Итак, я бы создал чек следующим образом:

$selected = 0;

if ($_POST['quarters'] != "DEFAULT_VALUE_OF_YOU_SELECT_QUARTERS")
{
 $selected++;
}

if ($_POST['nickels'] != "DEFAULT_VALUE_OF_YOU_SELECT_NICKELS")
{
 $selected++;
}

if ($_POST['dimes'] != "DEFAULT_VALUE_OF_YOU_SELECT_DIMES")
{
 $selected++;
}

if ($selected > 1)
{
 // The user has selected more than one
}
0 голосов
/ 02 декабря 2009

Здесь есть несколько вещей, на которые стоит обратить внимание.

Итак, во-первых, ваш массив $money фиксирует каждое значение, которое отправляет пользователь.

Далее, как вы настроили свой оператор HTML <select>, значения по умолчанию нет. Первый параметр в $_POST["quarters"] будет .25, даже если пользователь никогда не коснется этого раскрывающегося списка. Чтобы избежать этого, вы бы хотели добавить в кварталы <select>:

<option value="0">-- Select Quarters --</option> 

Но, тем не менее, это не позволяет вам использовать оператор switch / case. Вы по-прежнему будете отправлять значение для каждого тега HTML <select>. Решение Флориана Пешки лучше, так как оно проверяет все выпадающие списки, проверяя, использовали ли они только один, и, возможно, отображает сообщение, если этого не делают.

Наконец-то ... я не знаю, на что ссылается $selection в вашем примере. Вы заполняете массив $money, поэтому переменная $selection не существует.

Я могу помочь, если вы уточните свой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...