php + ajax เช็คชื่อซ้ำ ช่วยดูให้หน่อยค่ะ ใช้ Ajax เช็คชื่อผู้ใช้ว่าซ้ำหรือไม่ เช็คแล้วบันทึกไม่ได้ค่ะ ช่วยดูหน่อยนะค่ะ
ใช้ Ajax เช็คชื่อผู้ใช้ว่าซ้ำหรือไม่
เช็คแล้วบันทึกไม่ได้ค่ะ
ช่วยดูหน่อยนะค่ะ
Code (PHP)
<?php
mysql_connect('localhost','root','1234') or die(mysql_error());
mysql_select_db('mis') or die(mysql_error());
if (isset($_GET['user'])){
$username = mysql_real_escape_string($_POST['username']);
$r = mysql_query("SELECT 1 FROM tb_user WHERE user_name='$username'");
echo mysql_num_rows($r)?'yes':'no';
exit(0);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620" />
<title></title>
<title></title>
<script type="text/javascript" src="jquery-latest.js"></script>
</head>
<body>
<script >
function check(){
var txt= "";
if(document.form.username.value==""){
alert("กรุณากรอกชื่อผู้ดูแลระบบ");
document.form.username.focus();
return false;
}else if (document.form.username.value.length < 4) {
alert("ชื่อในการเข้าใช้ระบบต้องความยาวไม่ต่ำกว่า 4-16 ตัวอักษร");
document.form.username.focus();
return false;
}
if(document.form.pass1.value==""){
alert("กรุณากรอกรหัสผ่าน");
document.form.pass1.focus();
return false;
}else if (document.form.pass1.value.length < 4) {
alert("รหัสผ่านต้องความยาวไม่ต่ำกว่า 4-16 ตัวอักษร");
document.form.pass1.value = txt;
document.form.pass2.value = txt;
document.form.pass1.focus();
return false;
}
if(document.form.pass2.value=="") {
alert("กรุณายืนยันรหัสผ่าน");
document.form.pass2.focus();
return false;
}
if(document.form.pass1.value != document.form.pass2.value) {
alert("รหัสผ่านไม่ตรงกัน") ;
document.form.pass1.value = txt;
document.form.pass2.value = txt;
document.form.pass1.focus();
return false ;
}
return true;
}
$(function(){
$('#submit').click(function(e){
var user = $.trim($('#form input[name=username]').val());
$.ajax({
url: '?user',
type: 'POST',
dataType: 'html',
data: $('#form').serialize(),
success: function(data){
if (data.indexOf('yes') != -1){
alert("ไม่สามารถใช้ชื่อ '" + user + "' ได้\nกรุณากรอกชื่อผู้ดูแลระบบใหม่");
document.form.username.focus();
return false ;
}else{
check();
}
}
});
e.preventDefault();
});
});
</script>
if (!$submit) {
?>
<form name="form" id="form" action="<?php echo $PHP_SELF ; ?>" method="post" onsubmit="return check();" >
<table align="center" width="90%" border="0" cellpadding="2" cellspacing="2" bordercolor="#FF0033">
<tr>
<td align="right" width="20%"><font size="2"> ชื่อผู้ดูแลระบบ :</font></td>
<td > <input type="text" name="username" id="username" size="30" maxlength="16"
onKeyDown="if(event.keyCode==13) event.keyCode=9;"
onKeyPress="if ((event.keyCode < 65 || event.keyCode > 90)&&(event.keyCode < 97 || event.keyCode > 122)&&(event.keyCode < 48 || event.keyCode > 57)) event.returnValue = false;" style="color:#FF0000" autocomplete="off" /><font size="2" color="#FF0000"> *</font></td>
</tr>
<tr>
<td></td>
<td><font size="2" color="#FF0000"> (เฉพาะตัวอักษร A - Z, a - z, 0-9 ความยาวไม่ต่ำกว่า 4-16 ตัวอักษร)</font></td></tr>
<tr>
<td align="right" width="20%"><font size="2"> รหัสผ่าน :</font></td>
<td > <input type="password" name="pass1" id="pass1" size="30" maxlength="16"
onKeyDown="if(event.keyCode==13) event.keyCode=9;"
onKeyPress="if ((event.keyCode < 65 || event.keyCode > 90)&&(event.keyCode < 97 || event.keyCode > 122)&&(event.keyCode < 48 || event.keyCode > 57)) event.returnValue = false;" /><font size="2" color="#FF0000"> *</font></td>
</tr>
<tr>
<td></td>
<td><font size="2" color="#FF0000"> (เฉพาะตัวอักษร A - Z, a - z, 0-9 ความยาวไม่ต่ำกว่า 4-16 ตัวอักษร)</font></td>
</tr>
<tr>
<td align="right" width="20%"><font size="2"> ยืนยันรหัสผ่าน :</font></td>
<td > <input type="password" name="pass2" id="pass2" size="30" maxlength="16"
onKeyDown="if(event.keyCode==13) event.keyCode=9;"
onKeyPress="if ((event.keyCode < 65 || event.keyCode > 90)&&(event.keyCode < 97 || event.keyCode > 122)&&(event.keyCode < 48 || event.keyCode > 57)) event.returnValue = false;" /><font size="2" color="#FF0000"> *</font></td>
</tr>
<tr>
<td></td>
<td> <input type="submit" name="submit" id="submit" value=" บันทึก " /> <input type="reset" value=" ยกเลิก " /></td>
</tr>
</table>
</form>
<?php
}else{
include ("config-db.php");
$username = $_POST['username'];
$pass1 = $_POST['pass1'];
$pass2 = $_POST['pass2'];
$sql = "select max(user_id) from tb_user";
$result = mysql_query($sql);
$r = mysql_fetch_array($result);
$id_max=$r[0]+1;
$auto_id = str_pad($id_max, 5, "0", STR_PAD_LEFT);
$sql_user = "INSERT INTO `tb_user` (`user_id`, `user_name`, `password`, `user_type`) VALUES ('$auto_id', '$username', '$pass1', '1') " ;
$result = mysql_query($sql_user) ;
if(!$result){
echo"<script> alert('ไม่สามารถเพิ่มข้อมูลได้');</script>";
?>
<SCRIPT LANGUAGE="JavaScript">
setTimeout("history.back();", 0.0);
</SCRIPT>
<?php exit(); }
echo"<script> alert('เพิ่มข้อมูลเรียบร้อยแล้ว');</script>";
?>
<SCRIPT LANGUAGE="JavaScript">
setTimeout("history.back();", 0.0);
</SCRIPT>
<?php exit(); }
?>
</body>
</html>
Tag : - - - -
Date :
2010-03-14 10:07:20
By :
mamozaa
View :
3755
Reply :
10
ไม่มีใครตอบเลยหรอค่ะ TOT
ผู้รู้ช่วยตอบหน่อยค่ะ
งานด่วนจริง ๆ
Date :
2010-03-14 11:44:06
By :
mamozaa
ให้สร้างไฟล์เช็คใหม่ ไว้ต่างหากครับ
check_user.php
Code (PHP)
<?php
mysql_connect('localhost','root','1234') or die(mysql_error());
mysql_select_db('mis') or die(mysql_error());
if (isset($_POST['user'])){
$username = mysql_real_escape_string($_POST['username']);
$r = mysql_query("SELECT 1 FROM tb_user WHERE user_name='$username'");
echo mysql_num_rows($r)?'yes':'no';
exit(0);
}
?>
เปลี่ยน url ใน jquery
url: '?user', เปลี่ยนเป็น url:'check_user.php',
Date :
2010-03-14 12:06:29
By :
xbeginner01
ทำตามที่ คุณ xbeginner01 บอกแล้วค่ะ
แต่ก็ยังไม่ได้
คราวนี้ไม่เข้าไปเช็คค่า username ซ้ำเลยค่ะ
Date :
2010-03-14 12:23:22
By :
mamozaa
ลอง echo ข้อมูลที่ส่งมาว่ามาถึง page นี้หรือป่าว ไม่งั้นก็ลอง print_r($_POST); ดูครับ
แล้วก็ลองเซ็คทีละอย่าง ครับ
Date :
2010-03-14 18:17:29
By :
w33nz3z@r
<?php
mysql_connect('localhost','root','1234') or die(mysql_error());
mysql_select_db('mis') or die(mysql_error());
if (isset($_GET['user'])){
$username = mysql_real_escape_string($_POST['username']);
$r = mysql_query("SELECT 1 FROM tb_user WHERE user_name='$username'");
echo mysql_num_rows($r)?'yes':'no';
exit(0);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620" />
<title></title>
<script type="text/javascript" src="jquery-latest.js"></script>
</head>
<body>
<script >
function check(){
var txt= "";
if(document.form.username.value==""){
alert("กรุณากรอกชื่อผู้ดูแลระบบ");
document.form.username.focus();
return false;
}else if (document.form.username.value.length < 4) {
alert("ชื่อในการเข้าใช้ระบบต้องความยาวไม่ต่ำกว่า 4-16 ตัวอักษร");
document.form.username.focus();
return false;
}
if(document.form.pass1.value==""){
alert("กรุณากรอกรหัสผ่าน");
document.form.pass1.focus();
return false;
}else if (document.form.pass1.value.length < 4) {
alert("รหัสผ่านต้องความยาวไม่ต่ำกว่า 4-16 ตัวอักษร");
document.form.pass1.value = txt;
document.form.pass2.value = txt;
document.form.pass1.focus();
return false;
}
if(document.form.pass2.value=="") {
alert("กรุณายืนยันรหัสผ่าน");
document.form.pass2.focus();
return false;
}
if(document.form.pass1.value != document.form.pass2.value) {
alert("รหัสผ่านไม่ตรงกัน") ;
document.form.pass1.value = txt;
document.form.pass2.value = txt;
document.form.pass1.focus();
return false ;
}
return true;
}
$(function(){
$('#form').submit(function(e){
var user = $.trim($('#form input[name=username]').val());
var user_exists = $.ajax({
url: '?user',
type: 'POST',
dataType: 'html',
data: $('#form').serialize(),
async: false
}).responseText;
if (user_exists.indexOf('yes') != -1){
alert("ไม่สามารถใช้ชื่อ '" + user + "' ได้\nกรุณากรอกชื่อผู้ดูแลระบบใหม่");
document.form.username.focus();
return false ;
}else{
return check() ;
}
});
});
</script>
if (!$submit) {
?>
<form name="form" id="form" action="<?php echo $PHP_SELF ; ?>" method="post">
<table align="center" width="90%" border="0" cellpadding="2" cellspacing="2" bordercolor="#FF0033">
<tr>
<td align="right" width="20%"><font size="2"> ชื่อผู้ดูแลระบบ :</font></td>
<td > <input type="text" name="username" id="username" size="30" maxlength="16"
onKeyDown="if(event.keyCode==13) event.keyCode=9;"
onKeyPress="if ((event.keyCode < 65 || event.keyCode > 90)&&(event.keyCode < 97 || event.keyCode > 122)&&(event.keyCode < 48 || event.keyCode > 57)) event.returnValue = false;" style="color:#FF0000" autocomplete="off" /><font size="2" color="#FF0000"> *</font></td>
</tr>
<tr>
<td></td>
<td><font size="2" color="#FF0000"> (เฉพาะตัวอักษร A - Z, a - z, 0-9 ความยาวไม่ต่ำกว่า 4-16 ตัวอักษร)</font></td></tr>
<tr>
<td align="right" width="20%"><font size="2"> รหัสผ่าน :</font></td>
<td > <input type="password" name="pass1" id="pass1" size="30" maxlength="16"
onKeyDown="if(event.keyCode==13) event.keyCode=9;"
onKeyPress="if ((event.keyCode < 65 || event.keyCode > 90)&&(event.keyCode < 97 || event.keyCode > 122)&&(event.keyCode < 48 || event.keyCode > 57)) event.returnValue = false;" /><font size="2" color="#FF0000"> *</font></td>
</tr>
<tr>
<td></td>
<td><font size="2" color="#FF0000"> (เฉพาะตัวอักษร A - Z, a - z, 0-9 ความยาวไม่ต่ำกว่า 4-16 ตัวอักษร)</font></td>
</tr>
<tr>
<td align="right" width="20%"><font size="2"> ยืนยันรหัสผ่าน :</font></td>
<td > <input type="password" name="pass2" id="pass2" size="30" maxlength="16"
onKeyDown="if(event.keyCode==13) event.keyCode=9;"
onKeyPress="if ((event.keyCode < 65 || event.keyCode > 90)&&(event.keyCode < 97 || event.keyCode > 122)&&(event.keyCode < 48 || event.keyCode > 57)) event.returnValue = false;" /><font size="2" color="#FF0000"> *</font></td>
</tr>
<tr>
<td></td>
<td> <input type="submit" name="submit" id="submit" value=" บันทึก " /> <input type="reset" value=" ยกเลิก " /></td>
</tr>
</table>
</form>
<?php
}else{
include ("config-db.php");
$username = $_POST['username'];
$pass1 = $_POST['pass1'];
$pass2 = $_POST['pass2'];
//ไม่ควรค้นหาค่า max(user_id) เพื่อกำหนด id เองเพราะอาจเกิดเหตุการ user_id ชนกัน
//ควรตั้ง user_id เป็น pk แล้ว set auto_increment
$sql = "select max(user_id) from tb_user";
$result = mysql_query($sql);
$r = mysql_fetch_array($result);
$id_max=$r[0]+1;
$auto_id = str_pad($id_max, 5, "0", STR_PAD_LEFT);
$sql_user = "INSERT INTO `tb_user` (`user_id`, `user_name`, `password`, `user_type`) VALUES ('$auto_id', '$username', '$pass1', '1') " ;
$result = mysql_query($sql_user) ;
if(!$result){
echo"<script type="text/javascript"> alert('ไม่สามารถเพิ่มข้อมูลได้');</script>";
?>
<script type="text/javascript">
setTimeout("history.back();", 0.0);
</script>
<?php
exit();
}
echo"<script type="text/javascript"> alert('เพิ่มข้อมูลเรียบร้อยแล้ว');</script>";
?>
<script type="text/javascript">
setTimeout("history.back();", 0.0);
</script>
<?php
exit();
}
?>
</body>
</html>
แก้ให้แล้วครับแต่อาจจะไม่ได้เพราะไม่ได้ทดสอบ ถ้ายังไม่ได้แจ้งมาอีกครับว่างๆ จะแก้ให้
Date :
2010-03-14 20:33:30
By :
test
ขอบคุณนะค่ะ สำหรับทุกคำแนะนำ
โดยเฉพาะ No.5
ทำได้แล้วคร่าาาาา
Date :
2010-03-14 23:15:07
By :
mamozaa
ขอถามต่อจากคราวที่แล้วหน่อยนะค่ะ
ตอนนี้ทำฟอร์มแก้ไขข้อมูลอยู่ค่ะ
แล้วเวลาแก้ไขรหัสผ่านต้องกรอกรหัสผ่านเดิมด้วย
ถ้าจะเช็คว่ารหัสผ่านเดิมถูกต้องตรงตามฐานข้อมูลหรือไม่
ต้องเขียนโค้ดยังไงค่ะ เช่น ถ้าถูกต้องให้แสดงเครื่องหมายถูก
อยากได้โค้ดเหมือนตอนที่เช็ค ชื่อผู้ใช้ น่ะค่ะ
เช็คโดยการ keyup
คล้าย ๆ แบบนี้อ่ะค่ะ
Code (PHP)
<?php
mysql_connect('localhost','root','1234') or die(mysql_error());
mysql_select_db('mis') or die(mysql_error());
if (isset($_GET['userExists'])){
$username = mysql_real_escape_string($_POST['username']);
$r = mysql_query("SELECT 1 FROM tb_user WHERE user_name='$username'");
echo mysql_num_rows($r)?'yes':'no';
exit(0);
}
?>
<body>
<script >
$(function(){
$('#username').keyup(function(e){
var user = $.trim($(this).val());
if (user.length > 0){
$.ajax({
url: '?userExists',
type: 'POST',
dataType: 'html',
data: $(this).serialize(),
success: function(data){
if (data.indexOf('yes') != -1){
$('#username-status').html('not ok');
} else {
$('#username-status').html('ok');
}
}
});
}
e.preventDefault();
});
});
</script >
<table align="center" width="90%" border="0" cellpadding="2" cellspacing="2" bordercolor="#FF0033">
<tr><td align="right" width="20%"><font size="2"> ชื่อผู้ดูแลระบบ :</font></td>
<td > <input type="text" name="username" id="username" size="30" maxlength="16" onKeyDown="if(event.keyCode==13) event.keyCode=9;" onKeyPress="if ((event.keyCode < 65 || event.keyCode > 90)&&(event.keyCode < 97 || event.keyCode > 122)&&(event.keyCode < 48 || event.keyCode > 57)) event.returnValue = false;" style="color:#FF0000" autocomplete="off" /><font size="2" color="#FF0000"> *</font> <span id="username-status"></span></td>
</tr>
</table>
</body>
Date :
2010-03-26 14:25:24
By :
mamozaa
ใครพอรู้ ช่วยตอบหน่อยเถอะค่ะ
Date :
2010-03-26 15:44:27
By :
mamozaa
ผมก็อยากช่วยนะ แต่ว่าแบบนี้ไม่เคยทำน่ะ.....อิอิ
Date :
2010-03-26 15:59:33
By :
arta_u
อธิบาย code หน่อยได้ไหมอ่าครับ อยากเขียนบ้าง
มี function มาอีก งง เป็นไก่ตาแตกเลย T^T
Date :
2010-03-28 08:51:41
By :
icman
Load balance : Server 03