Новичок здесь — и я почти ничего не знаю о сценариях, поэтому, пожалуйста, потерпите меня.
Путем слепых проб и ошибок, а также двухчасового прочтения, я нашел и изменил рабочий скрипт, который сравнивает запись веб-формы, известную как «EID», с таблицей, которую я создал в базе данных MySQL.
Теперь я хотел бы повысить ставку и добавить больше функциональности в скрипт. Веб-форма также содержит поле с именем «Имя», которое я хотел бы проверить одновременно для записи в таблице с именем «Имя», в то время как поле «EID» проверяется. Я мог бы легко проверить запись «Имя» по сравнению с еще одной таблицей базы данных, однако это не совсем то, что мне нужно, потому что каждое имя имеет свой собственный EID, и я должен быть в состоянии убедиться, что пользователь ввел оба правильное имя, а также его или ее собственный номер EID. Я читаю, что мне нужно объединить две базы данных в реляционном сценарии один-к-одному, чтобы выполнить серверную часть этой функции, но я не знаю, как запросить такую настройку базы данных и вернуть ответ.
Как я могу изменить этот существующий скрипт, чтобы проверить как Имя, так и EID по этим новым таблицам?
Вот мой сценарий — я уверен, что это не красиво, но, как я сказал ранее, он работает.
<?PHP
class MyCustomValidation extends FM_ExtensionModule
{
function DoValidate(&$formvars, &$error_hash)
{
//connect to DB
$db = mysql_connect("mydatabase","myaccount ","mypassword");
if(!$db)
{
return false;
}
if(!mysql_select_db("mydatabase",$db))
{
return false;
}
//Check the Employee ID Number
if(!isset($formvars["EID"]))
{
$error_hash["EID"]="Please enter a valid Employee ID Number";
return false;
}
$EID = $formvars["EID"];$result = mysql_query("select * from EID where EID='$EID'");
if(!$result || mysql_num_rows($result) <= 0)
{
$error_hash["EID"]="We're sorry, but the Employee ID number you entered, '$EID', was not found in our databases. ";
return false;
}return true;
}
}
?>
Как-то так (я пропустил проверку, что name
поле заполнено).
$name = $formvars["name"];
$result = mysql_query("SELECT * FROM EID
JOIN users ON EID.EID = users.EID
WHERE EID.EID = '$EID' AND users.name = '$name'");
Точные детали объединения зависят от имен и столбцов в ваших таблицах, но это показывает общую идею.
Запрос вернет строку, только если EID существует и его имя совпадает с введенным.
Других решений пока нет …