Для контекста: я занят, используя javascript для проверки полей в форме.Проблема заключается в том, чтобы обойти невозможность получения данных из базы данных.Все проверки, за исключением проверки того, что уникальное имя пользователя (не используется в БД) выполнены.Я довольно долго смотрел в Интернете, но единственный ответ, который был близок, был такой: «пока вы не начнете нуждаться в рассматриваемой php-странице для возврата какого-либо значения. В этом случае просто используйте диспетчер соединений YUI или что-то в этом роде».такой природы ".Поскольку php на стороне сервера, при нажатии кнопки можно вызывать php, поскольку нет смысла обрабатывать php до тех пор, пока в поле имени пользователя нет текста.
Вот что я сделал.При нажатии кнопки отправки вызывается функция js.Проверка работает.
<script type="text/javascript" src="regform_checks.js"></script>
<h1>Welcome to Registration</h1>
<form name="register" action="add_user.php" onsubmit="return validateForm()" method="post">
<table>
<tr>
<td>Choose a username*</td>
<td><input type = "text" name="profile_id"/></td>
</tr>
Это выше в моем registration.php Ниже мой файл .js:
function validateForm()
{
var username=document.forms["register"]["profile_id"].value;
var pw1=document.forms["register"]["profile_password"].value;
var pw2=document.forms["register"]["profile_password2"].value;
var invalid = " "; // Invalid character is a space
var minLength2 = 3; // Minimum username length
var minLength = 6; // Minimum password length
var x=document.forms["register"]["profile_email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
//check for a value in username field
if (username==null || username=="")
{
alert("Please enter a username");
return false;
}
// check for username minimum length
if (document.register.profile_id.value.length < minLength2)
{
alert('Your username must be at least ' + minLength2 + ' characters long.');
return false;
}
// check for a value in both fields.
if (pw1 == "" || pw2 == "")
{
alert("Please enter your password in the Password and Re-enter password areas.");
return false;
}
// check for password minimum length
if (document.register.profile_password.value.length < minLength)
{
alert('Your password must be at least ' + minLength + ' characters long. Try again.');
return false;
}
// check for password consistency
if (pw1 != pw2)
{
alert ("The passwords you have entered are not the same. Please re-enter your password.");
return false;
}
//check for valid email address
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
{
alert("Not a valid e-mail address");
return false;
}
// check for spaces
if (document.register.profile_id.value.indexOf(invalid) > -1)
{
alert("Sorry, spaces are not allowed in your username.");
return false;
}
else if (document.register.profile_password.value.indexOf(invalid) > -1)
{
alert("Sorry, spaces are not allowed in your password.");
return false;
}
else if (document.register.profile_email.value.indexOf(invalid) > -1)
{
alert("Sorry, spaces are not allowed in your email.");
return false;
}
else
{
return true;
}
}
Что мне не удалось сделать: установить переменную js следующим образом: varusername_check = profile_id_check.php;Этот файл выглядит следующим образом:
$query = "select profile_id from profile";
$result = mssql_query($query);
$names = array();
for ($count=0; $row=@mssql_fetch_array($result); $count++)
$names[$count]=$row;
$idtest= True;
foreach ($names as $name)
{
if($name[profile_id]==$profile_id)
return false;
print "$name[profile_id]";
}
?>
Код php все еще находится в процессе создания, в зависимости от того, что ему нужно, я понимаю, что мне не нужен $ idtest, так как оператор if возвращает логическое значение.Последний оператор print просто печатает все имена профилей (поэтому я могу быть уверен, что код работает, и он работает).И это имя профиля, введенное в форму, которое необходимо сравнить со всеми именами профиля в базе данных, чтобы убедиться, что оно уникально.Конечный результат, как я это вижу: если имя пользователя уникально, не выдает ошибку или предупреждение, если это не так, тогда js должен ... который я знаю, как кодировать.Я открыт для предложений, которые отворачиваются от этого метода, хотя мои знания ограничены php, некоторые js.(и, очевидно, HTML) Заранее спасибо.