PDA

View Full Version : مشکل با AJAX Validation



mhd.ghavam
شنبه 14 مرداد 1391, 19:28 عصر
سلام دوستان عزیزم خسته نباشید

شرمنده که باز مزاحمتون شدم راستش من در این باره خیلی تحقیق کردم اما چیزی دستگیرم نشد گفتم که سوال بپرسم

من یک فرم ثبت نام دارم که می خوام AJAX Validation براش بذارم مثلا مثل ثبت نام همین سایت که موقعی که داری نام کاربری رو تایپ می کنی همون موقع تو دیتا بیس می گرده اگر امکانش باشه تایید می کنه من هم همچین چیزی می خوام و برای چند تا چیز می خوام ولیدیشن کنم

1- تکراری نبودن کد ملی با استفاده از دیتابیس
2- عدد بودن و 10 رقم بودن کد ملی
3- درست بودن ایمیل
4- تایپ شدن بعضی از موارد یعنی حتما این موراد وارد بشن

می دونم که خیلی مزاحمتون شدم اما باور کنید خیلی حیاتی هستش این موضوع برام و خیلی هم عجله دارم آبروم در خطره قول میدم بعد این پروژه خوب یاد بگیرم می دونم که باید یاد بگیرم اما الان اصلا وقت نیس خواهش می کنم که کمکم کنید

imanitc
یک شنبه 15 مرداد 1391, 11:34 صبح
بستگي داره از چه نوع AJAX Validation استفاده ميکني لااقل يه کدي چيزي بذار

mhd.ghavam
یک شنبه 15 مرداد 1391, 14:47 عصر
بستگي داره از چه نوع AJAX Validation استفاده ميکني لااقل يه کدي چيزي بذار







سلام دوست عزیز خسته نباشی خیلی ممنون که کمکم کردی


می خوام که بازم کمکم کنید
راستش من الان می تونم به طور آژاکس تکراری بودن کد ملی رو چک کنم و پیغام بدم و همچنین معتبر بودن ایمیل رو و همچنین با کدی که دادید میتونم این امکان رو ایجاد کنم که برای بعضی فیلدها فقط عدد تایپ بشه

فقط دوتا سوال دارم اینکه
1- پر یا خالی بودن فیلد ها رو چطوری چک کنم؟
2- من میخوام که باتن ثبت نام وقتی زده شد فرم ارسال نشه یعنی صفحه رفرش نشه طوری این امکان ایجاد بشه که اگر زد و اگر تو فرم اشکالی وجود داشت کنار فیلد هاتوضیح بده یعنی مثلا اگر فیلدی خالی بود بگه که پرش کنید
و اگر همه ایرادات رفع شد فرم رو ارسال کنه برای ثبت در دیتا بیس اگر کمکم کنی خیلی ممنونت میشم




این هم از کد جاوا اسکریپت




function showUser(str)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","include/ajax.php?q="+str,true);
xmlhttp.send();
}


function checkemail(str)
{
if (str=="")
{
document.getElementById("txtHintemail").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHintemail").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","include/ajax.php?email="+str,true);
xmlhttp.send();
}


function numbersonly(myfield, e, dec)
{
var key;
var keychar;

if (window.event)
key = window.event.keyCode;
else if (e)
key = e.which;
else
return true;
keychar = String.fromCharCode(key);

// control keys
if ((key==null) || (key==0) || (key==8) ||
(key==9) || (key==13) || (key==27) )
return true;

// numbers
else if ((("0123456789").indexOf(keychar) > -1))
return true;

// decimal point jump
else if (dec && (keychar == "."))
{
myfield.form.elements[dec].focus();
return false;
}
else
return false;
}





این هم از کد ajax.php


<?php

function checkEmail($email) {
if(preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/" , $email)){
list($username,$domain)=split('@',$email);
if(!checkdnsrr($domain,'MX')) {
return false;
}
else
{
return true;
}
}

}




if ($_GET['q'])
{
$national_code = $_GET["q"];

// checking name
/*if (empty($name))
{
print 'Please enter your name.';
exit;
}*/

// checking for national code existing
include("config.php");
$result = mysql_query("SELECT * FROM reg1 WHERE melicode='".$national_code."'");
if (mysql_num_rows($result) >= 1)
{
print '<font color="red" size="3pt" face="tahoma">'.'اين كد ملي قبلا وارد شده است.'."</font>";
// exit;
}
else
{
print '<font color="green" size="3pt" face="tahoma">'.'اين كد قابل ثبت است.'."</font>";
}

mysql_close();
// inserting into database
//mysql_query("INSERT INTO users VALUE ...");
}

elseif ($_GET['email'])

{


$email_address = $_GET['email'];
if (filter_var($email_address, FILTER_VALIDATE_EMAIL)) {
// The email address is valid
print '<font color="green" size="3pt" face="tahoma">'.'ايميل معتبر است.'."</font>";
} else {
// The email address is not valid
print '<font color="red" size="3pt" face="tahoma">'.'ايميل نامعتبر است.'."</font>";
}


}
?>



و این هم از کد مربوط به فرم



<input type="text" name="tfregtel" id="tfregtel" style="border:#000 1px solid" onkeypress="return numbersonly(this, event)" />

<input type="text" name="tfregmelicode" id="tfregmelicode" style="border:#000 1px solid" value="" onChange="showUser(this.value)" onkeypress="return numbersonly(this, event)" />
<div id="txtHint" ></div>

<input type="text" name="tfregemail" id="tfregemail" style="border:#000 1px solid" onChange="checkemail(this.value)" />
<div id="txtHintemail" ></div>

imanitc
دوشنبه 16 مرداد 1391, 09:08 صبح
سلام
وقتي صحبت از آژاکس ميشه يه بخشي رو طرف سرور اجرا ميشه شما نمايش ميدي همونطور که اعتبار سنجي مثل ايميل رو داري با php انجام ميدي چک کردن خالي بودن کاري نداره يه نمونه برات ميزارم