2013-07-07 2 views
2

У меня этот простой скрипт php. Что он делает:PHP Функция не выполняет простую логическую задачу

  1. пользователь внесет свою зарплату.
  2. пользователь выберет из раскрывающегося списка его тип членства.
  3. PHP скрипт сделает простую логику, если пользователь выбирает членство типа как трудоустроенные, он будет выполнять и вернуть соответствующий ответ (пожалуйста, обратитесь к моей функции для лучшего понимания)
  4. , если пользователь выбирает «Атман Занятый, Добровольный член или OFW», он снова выполнит его назначенной функцию

Что моя проблема:

проги RAM работает без ошибок. Проблема в том, что она ничего не отображает. Как будто ничего не происходит. В чем проблема?

Кстати, я только что научился PHP 8 часов назад, и я все еще нахожусь в начальной стадии, пытаясь поэкспериментировать с этими вещами. Пожалуйста, помогите мне. Застрял пару часов на этом. Пожалуйста, будьте нежны :)

<form method="POST"> 
Salary: <input id="salarytext" type="text" name="salary" onkeypress="return isNumberKey(event)"><br> 
Membership Type: 
<select name="membershiptype"> 
     <option value="employed">Employed</option> 
     <option value="SE">Self Employed</option> 
     <option value="VM">Voluntary Member</option> 
     <option value="OFW">OFW</option> 
</select> 

<br/> 

<input type="submit" /> 

</form> 

<?php 

$a = (isset($_POST['salary'])) ? $_POST['salary'] : ''; 
$b = (isset($_POST['membershiptype'])) ? $_POST['membershiptype'] : ''; 

function employed() { 

     if (empty ($a)) {echo "";} 
     elseif ($a<1000) {echo "Your Salary for the Period is $a. <br> You didn't reach the minimum compensation for the period. No SSS Contribution Deduction.";} 
     elseif ($a <1249.99) {echo "Your ER is 80.7 and Your EE is 33.3 sevmofw"; } 
     elseif ($a <1749.99) {echo "Your ER is 116 and Your EE is 50";} 
     elseif ($a <2249.99) {echo "Your ER is 151.3 and Your EE is 66.7";} 
     elseif ($a <2749.99) {echo "Your ER is 186.7 and Your EE is 83.3";} 
     elseif ($a <3249.99) {echo "Your ER is 222 and Your EE is 100";} 
     elseif ($a <3749.99) {echo "Your ER is 257.3 and Your EE is 116.7";} 
     elseif ($a <4249.99) {echo "Your ER is 292.7 and Your EE is 133.3";} 
     elseif ($a <4749.99) {echo "Your ER is 328 and Your EE is 150";} 
     elseif ($a <5249.99) {echo "Your ER is 363.3 and Your EE is 166.7";} 
     elseif ($a <5749.99) {echo "Your ER is 398.7 and Your EE is 183.3";} 
     elseif ($a <6249.99) {echo "Your ER is 434 and Your EE is 200";} 
     elseif ($a <6749.99) {echo "Your ER is 469.3 and Your EE is 216.7";} 
     elseif ($a <7249.99) {echo "Your ER is 504.7 and Your EE is 233.3";} 
     elseif ($a <7749.99) {echo "Your ER is 540 and Your EE is 250";} 
     elseif ($a <8249.99) {echo "Your ER is 575.3 and Your EE is 266.7";} 
     elseif ($a <8749.99) {echo "Your ER is 610.7 and Your EE is 283.3";} 
     elseif ($a <9249.99) {echo "Your ER is 646 and Your EE is 300";} 
     elseif ($a <9749.99) {echo "Your ER is 681.3 and Your EE is 316.7";} 
     elseif ($a <10249.99) {echo "Your ER is 716.7 and Your EE is 333.3";} 
     elseif ($a <10749.99) {echo "Your ER is 752 and Your EE is 350";} 
     elseif ($a <11249.99) {echo "Your ER is 787.3 and Your EE is 366.7";} 
     elseif ($a <11749.99) {echo "Your ER is 822.7 and Your EE is 383.3";} 
     elseif ($a <12249.99) {echo "Your ER is 858 and Your EE is 400";} 
     elseif ($a <12749.99) {echo "Your ER is 893.3 and Your EE is 416.7";} 
     elseif ($a <13249.99) {echo "Your ER is 928.7 and Your EE is 433.3";} 
     elseif ($a <13749.99) {echo "Your ER is 964 and Your EE is 450";} 
     elseif ($a <14249.99) {echo "Your ER is 999.3 and Your EE is 466.7";} 
     elseif ($a <14749.99) {echo "Your ER is 1034.7 and Your EE is 483.3";} 
     elseif ($a <=30000) {echo "Your ER is 1090 and Your EE is 500";} 
     elseif ($a > 30000) {echo "You reached the maximum. Your ER is 1090 and Your EE is 500";} 
} 

function sevmofw() { 

     if (empty ($a)) {echo "";} 
     elseif ($a<1000) {echo "NOT EMPLOYED. Your Salary for the Period is $a. <br> You didn't reach the minimum compensation for the period. No SSS Contribution Deduction.";} 
     elseif ($a <1249.99) {echo "NOT EMPLOYED. Your ER is 80.7 and Your EE is 33.3 sevmofw"; } 
     elseif ($a <1749.99) {echo "NOT EMPLOYED. Your ER is 116 and Your EE is 50";} 
     elseif ($a <2249.99) {echo "NOT EMPLOYED. Your ER is 151.3 and Your EE is 66.7";} 
     elseif ($a <2749.99) {echo "NOT EMPLOYED. Your ER is 186.7 and Your EE is 83.3";} 
     elseif ($a <3249.99) {echo "NOT EMPLOYED. Your ER is 222 and Your EE is 100";} 
     elseif ($a <3749.99) {echo "NOT EMPLOYED. Your ER is 257.3 and Your EE is 116.7";} 
     elseif ($a <4249.99) {echo "NOT EMPLOYED. Your ER is 292.7 and Your EE is 133.3";} 
     elseif ($a <4749.99) {echo "NOT EMPLOYED. Your ER is 328 and Your EE is 150";} 
     elseif ($a <5249.99) {echo "NOT EMPLOYED. Your ER is 363.3 and Your EE is 166.7";} 
     elseif ($a <5749.99) {echo "NOT EMPLOYED. Your ER is 398.7 and Your EE is 183.3";} 
     elseif ($a <6249.99) {echo "NOT EMPLOYED. Your ER is 434 and Your EE is 200";} 
     elseif ($a <6749.99) {echo "NOT EMPLOYED. Your ER is 469.3 and Your EE is 216.7";} 
     elseif ($a <7249.99) {echo "NOT EMPLOYED. Your ER is 504.7 and Your EE is 233.3";} 
     elseif ($a <7749.99) {echo "NOT EMPLOYED. Your ER is 540 and Your EE is 250";} 
     elseif ($a <8249.99) {echo "NOT EMPLOYED. Your ER is 575.3 and Your EE is 266.7";} 
     elseif ($a <8749.99) {echo "NOT EMPLOYED. Your ER is 610.7 and Your EE is 283.3";} 
     elseif ($a <9249.99) {echo "NOT EMPLOYED. Your ER is 646 and Your EE is 300";} 
     elseif ($a <9749.99) {echo "NOT EMPLOYED. Your ER is 681.3 and Your EE is 316.7";} 
     elseif ($a <10249.99) {echo "NOT EMPLOYED. Your ER is 716.7 and Your EE is 333.3";} 
     elseif ($a <10749.99) {echo "NOT EMPLOYED. Your ER is 752 and Your EE is 350";} 
     elseif ($a <11249.99) {echo "NOT EMPLOYED. Your ER is 787.3 and Your EE is 366.7";} 
     elseif ($a <11749.99) {echo "NOT EMPLOYED. Your ER is 822.7 and Your EE is 383.3";} 
     elseif ($a <12249.99) {echo "NOT EMPLOYED. Your ER is 858 and Your EE is 400";} 
     elseif ($a <12749.99) {echo "NOT EMPLOYED. Your ER is 893.3 and Your EE is 416.7";} 
     elseif ($a <13249.99) {echo "NOT EMPLOYED. Your ER is 928.7 and Your EE is 433.3";} 
     elseif ($a <13749.99) {echo "NOT EMPLOYED. Your ER is 964 and Your EE is 450";} 
     elseif ($a <14249.99) {echo "NOT EMPLOYED. Your ER is 999.3 and Your EE is 466.7";} 
     elseif ($a <14749.99) {echo "NOT EMPLOYED. Your ER is 1034.7 and Your EE is 483.3";} 
     elseif ($a <30000) {echo "NOT EMPLOYED. Your ER is 1090 and Your EE is 500";} 
     elseif ($a > 30000) {echo "You reached the maximum. Your ER is 1090 and Your EE is 500";} 
} 




if ($_POST['membershiptype'] == 'employed'){employed(); 
} elseif ($_POST['membershiptype'] == 'SE'){sevmofw(); 
} elseif ($_POST['membershiptype'] == 'VM'){sevmofw(); 
} elseif ($_POST['membershiptype'] == 'OFW'){sevmofw(); 
} 


?> 
+0

И вы ничего не видите? Что происходит, когда вы * View Source *? –

+6

'$ a' не входит в область действия функции. Подайте его функции как параметр. – Wrikken

+1

нужно узнать об области видимости переменной - http://php.net/manual/en/language.variables.scope.php Посмотрите на второй блок/пример, поскольку он конкретно решает вашу проблему. – Sean

ответ

3

Ваши $a и $b не входят в сферу применения. Вам необходимо указать в качестве аргументов функции.

/* SNIP */ 
function employed($a, $b) { //Note that the function now accepts two parameters. These will be available in the function. 

/* SNIP */ 
function sevmofw($a, $b) { //Same idea. 

/* SNIP */ 
if ($_POST['membershiptype'] == 'employed') { 
    employed($a, $b); //Pass the variables into the function from the outside. 
} 
elseif ($_POST['membershiptype'] == 'SE') { 
    sevmofw($a, $b); 
} 
elseif ($_POST['membershiptype'] == 'VM') { 
    sevmofw($a, $b); 
} 
elseif ($_POST['membershiptype'] == 'OFW') { 
    sevmofw($a, $b); 
} 
+0

У меня получилась эта ошибка: SCREAM: Ошибка подавления игнорируется для Неопределенный индекс: membertype в C: \ wamp \ www \ php_sandbox \ switch.php на линии 120, 123, 126 и 129 –

+0

фактически, он уже работает. Проблема в том, что когда я открываю php, он отображает ошибки. но когда я начинаю вводить некоторые цифры, он возвращает правильный результат. –

+0

@KareenLagasca Я думаю, что вы хотите заменить все '$ _POST ['membertype']' в блоках if/elseif с '$ b', поскольку вы устанавливаете его ранее как' $ b = (isset ($ _ POST [ 'membertype']))? $ _POST ['membertype']: ''; '. Затем при загрузке страницы он не даст вам предупреждение «Неопределенный индекс», как вы его проверили раньше с помощью 'isset()'. – Sean

1

На самом деле, есть еще проблемы с вашим кодом, в том числе, смешивая бизнес и логику представления и обязанности, а также ...

Но, конкретно к вопросу,

Прежде всего, switch следует использовать вместо кучки if/elseif

Во-вторых,

у наша функция employed() не имеет понятия о том, что $a есть. Вы бы поставили его в качестве аргумента.

function employed($a){ 

    switch(true){ 

     case $a < 100: 

     echo "Your Salary for the Period is $a. <br> You didn't reach the minimum compensation for the period. No SSS Contribution Deduction." 

     break; 

     case $a < 1249.99: 
     echo "Your ER is 80.7 and Your EE is 33.3 sevmofw"; 
     break; 

     ...... 
    } 
} 

Это будет работать должным образом.

Смежные вопросы