2015-01-22 2 views
-1

Я пишу простую веб-программу с PHP/MYSQL (из-за ограничений должны использоваться mysql-запросы, а не mysqli или PDO). Таблица HTML должна отображать разные значения из моей таблицы MYSQL на основе ввода пользовательской формы.PHP/MYSQL - определить переменные с IF, ELSE?

Каков наилучший способ определения нескольких переменных на основе пользовательского ввода?

Я попытался

<?php 
$taxcode = $_POST['taxcode']; 

$db_host = 'localhost'; 
$db_user = 'root'; 
$db_pwd = 'root'; 

$database = 'database'; 
$table = 'sampletable'; 

if (!mysql_connect($db_host, $db_user, $db_pwd)) 
    die("Can't connect to database"); 

if (!mysql_select_db($database)) 
    die("Can't select database"); 

    if ($taxcode = '401(k)') { 
    $planquery = ("SELECT * FROM sampletable WHERE PT_401k = '401(k)'"); 
    $orgmatchquery = ("SELECT * FROM sampletable WHERE Organization_match_participants_contribution = 'Employer Matching contribution (i.e., 50% of first 6% of pay)' AND PT_401k = '401(k)'"); 
    } elseif ($taxcode = '403(b)') { 
    $planquery = ("SELECT * FROM sampletable WHERE PT_403b = '403(b)'"); 
    $orgmatchquery = ("SELECT * FROM sampletable WHERE Organization_match_participants_contribution = 'Employer Matching contribution (i.e., 50% of first 6% of pay)' AND PT_403b = '403(b)'"); 
    } elseif ($taxcode = '457') { 
    $planquery = ("SELECT * FROM sampletable WHERE PT_457 = '457'"); 
    $orgmatchquery = ("SELECT * FROM sampletable WHERE Organization_match_participants_contribution = 'Employer Matching contribution (i.e., 50% of first 6% of pay)' AND PT_457 = '457'"); 
    } 

?> 

но не изменяя значение, основанное на входе. Что я делаю не так?

EDIT, за ответ @ Демодава - это, кажется, движется в правильном направлении, но не совсем работает.

<?php 

$taxcode = '401(k)'; 

    if ($taxcode == '401(k)' || $taxcode == '403(b)' || $taxcode == '457') { 

    if($taxcode == '401(k)') { 
     $where = "PT_401k"; 
    } else if($taxcode == '403(b)') { 
     $where = "PT_403b"; 
    } else if($taxcode == '457') { 
     $where = "PT_457"; 
    } 

    echo $planquery = ("SELECT * FROM sampletable WHERE " . $where . " = '" . $taxcode . "'"); 
    echo "<br />" . $orgmatchquery = ("SELECT * FROM sampletable WHERE Organization_match_participants_contribution = 'Employer Matching contribution (i.e., 50% of first 6% of pay)' AND " . $where . " = '" . $taxcode . "'"); 

    } 

?> 

Получение ошибок, в которых $ где не определено. «Легально» использовать переменную для имени строки?

ответ

1

У вас есть некоторые повторяющиеся элементы, которые пытаются это сделать.

<?php 

$taxcode = '401(k)'; // This is only an example for the POST variable. 

if ($taxcode == '401(k)' || $taxcode == '403(b)' || $taxcode == '457') { 

if($taxcode == '401(k)') { 
    $where = "PT_401k"; 
} else if($taxcode == '403(b)') { 
    $where = "PT_403b"; 
} else if($taxcode == '457') { 
    $where = "PT_457"; 
} 

echo $planquery = ("SELECT * FROM sampletable WHERE " . $where . " = '" . $taxcode . "'"); 
echo "<br />" . $orgmatchquery = ("SELECT * FROM sampletable WHERE Organization_match_participants_contribution = 'Employer Matching contribution (i.e., 50% of first 6% of pay)' AND " . $where . " = '" . $taxcode . "'"); 

} 

?> 

Выход:

SELECT * FROM sampletable WHERE PT_401k = '401 (к)'

SELECT * FROM sampletable WHERE Organization_match_participants_contribution = «работодателя Совпадение вклад (т.е. 50% от первой 6% от платы) 'И PT_401k =' 401 (k) '

+0

это выглядит многообещающим, но я получаю ошибки: Примечание: неопределенная переменная: где in/Applications/MAMP/htdoc s/benchmark/step2.php в строке 86 (похоже, как переменная «где») Предупреждение: mysql_num_rows() ожидает, что параметр 1 будет ресурсом, boolean задан в /Applications/MAMP/htdocs/benchmark/step2.php on line 93 – grownupteeth

+0

Я определяю $ where with = '', вопрос в том, включил ли вы if ($ taxcode == '401 (k)' || $ taxcode == '403 (b)' || $ taxcode == '457') {line, потому что иначе, если налоговый код не является одним из тех чисел $, где никогда не будет определено. – Demodave

+0

Да; но это должно быть неуместно, потому что этот пользовательский ввод - это выпадающее меню с тремя параметрами. Мы уверены, что $ where (или любая переменная) может быть использована в этом случае? Добавлено редактирование выше. – grownupteeth

0

Прежде всего, выполнив:

if ($taxcode = '401(k)') { 

вы присваиваете значения переменной. Вам необходимо написать:

if ($taxcode == '401(k)') { 

Кроме этого, возможно, вы захотите построить этот запрос динамически. Это помогает?