Fri 23 Jun 2006 08:26:59
รบกวนช่วยดูcodeให้ผมทีครับ
คือ โค้ดนี้ผมได้มาจากท่านAdministrator คือเป็นโค้ด ป้องกันคำหยาบ ผมจะเอามา
เพิ่มโค้ด เพื่อแก้ไข
test.php -------------------------------------
<script language="javascript">
function checkRude(obj){
var rudeWord = new Array(<? $list = file("rude_word.txt"); for($i=0; $i<count($list); $i++){ echo (($i==(count($list)-1))?"'".trim($list[$i])."'":"'".trim($list[$i])."',"); } ?>);
for(i=0; i<rudeWord.length; i++){
if(obj.value.indexOf(rudeWord[i]) != -1){
alert("มีคำไม่เหมาะสม \n"+rudeWord[i]);
obj.text1.value=''; ----------เพิ่ม 2 บรรทัดนี้นะครับ
obj.text2.focus();
break;
}
}
}
</script>
---------------------------------------
rude_word.txt -----------------------------------
คำหยาบ
คำผิด2
---------------------------------------------------
ปัญหาคือโค้ดที่เพิ่มเข้าไป ต้องการให้พอเจอ คำผิดแล้วให้text boxที่เจอเป็นค่าว่างแล้วเซ็ตโฟกัน เพื่อพิมใหม่นะครับ
รบกวนช่วยดูให้ผมทีครับ
ขอบคุณมากครับ
function checkRude(obj){
var rudeWord = new Array(<? $list = file("rude_word.txt"); for($i=0; $i<count($list); $i++){ echo (($i==(count($list)-1))?"'".trim($list[$i])."'":"'".trim($list[$i])."',"); } ?>
for(i=0; i<rudeWord.length; i++){
if(obj.value.indexOf(rudeWord[i]) != -1){
alert("มีคำไม่เหมาะสม \n"+rudeWord[i]);
obj.value=''; ----------เพิ่ม 2 บรรทัดนี้นะครับ
obj.focus();
break;
}
}
}
</script>
<form>
<input type="text" name="text1" onkeyup="checkRude(this)" />
<input type="text" name="text2" onkeyup="checkRude(this)" />
</form>
โค๊ดนี้ตัวแปร obj ที่่ส่งเข้าไปจะเป็น object ของ textbox ครับ
Mon 26 Jun 2006 07:56:39
รบกวนขอสอบถามเพิ่มครับ คือผมได้ทำform add ข้อมูลลงrude_word.txt ทีนี้มันติดปัญหาตรงที่ มันมะยอมadd เพิ่มลงไปแต่มันดันไป เปลี่ยนข้อมูลที่มีอยู่เดิม รบกวนดูให้ทีครับ
ต้องการให้มันadd ข้อมูล เพิ่มลงไป และให้มัน <br>ข้อมูลแต่ละครั้งที่addนะครับ
test.php------------------------------------------------------------------------
<?
$fp = fopen("rude_word.txt","w");
$write = fwrite($fp,"$text1<br>\n");
if (!$write) { echo "ไม่สามารถสร้างไฟล์ได้"; }
else { echo "สร้างไฟล์เรียบร้อย"; }
fclose($fp);
?>
------------------------------------------------------------------------------
โค้ดด้านล่างนี้ จะส่งค่าให้ กับtest.php ทีนี้มันติดตรงที่ ถ้าเป็นค่าว่าง จะให้มัน alert ข้อความ บอกว่าเป็นค่าว่าง และให้มันเซ็ตโฟกัสเพื่อให้พิมข้อความก่อนส่ง มันติดปัญหาตรงที่ มันalert บอกว่าค่าว่างแต่พอกดปุ่มมันส่งค่าว่างไปtest.phpเลยนะครับ รบกวนช่วยดูให้ทีครับ
testWrite.php-------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<title>Untitled Document</title>
</head>
<script language="javascript">
function ChackBox(text){
if (text.text1.value==''){
alert("ข้อความว่าง");
text.text1.focus();
return;
}
text.submit();
}
</script>
<body>
<form name="root" method="post" action="test.php">
<label>text1
<input name="text1" type="text" id="text1">
</label>
<br>
<br>
<label></label>
<br>
<label>
<input type="submit" name="Submit" value="Submit" onClick="ChackBox(root);">
</label>
</form>
</body>
</html>
ขอบคุณมากครับ
<?
$fp = fopen("rude_word.txt","w");
$write = fwrite($fp,"$text1<br>\n");
if (!$write) { echo "ไม่สามารถสร้างไฟล์ได้"; }
else { echo "สร้างไฟล์เรียบร้อย"; }
fclose($fp);
?>
คุณเปิดใน mode w ซึ่งเป็นการเขียนที่จุดเริ่มต้นของไฟล์ครับ อาจจะใส่เป็น w+, a+ ก็ได้ครับ
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<title>Untitled Document</title>
</head>
<script language="javascript">
function ChackBox(text){
if (text.text1.value==''){
alert("ข้อความว่าง");
text.text1.focus();
return false;
}
text.submit();
}
</script>
<body>
<form name="root" method="post" action="test.php">
<label>text1
<input name="text1" type="text" id="text1">
</label>
<br>
<br>
<label></label>
<br>
<label>
<input type="submit" name="Submit" value="Submit" onClick="ChackBox(this.form);">
</label>
</form>
</body>
</html>
ใน javascript คุณทำการตรวจสอบโดยการอ้าง text.text1.value หมายถึง text เป็น object ที่มี object ชื่อ text1 อยู่ภายใน ซึ่งหมายถึง object form ดังนั้นคุณต้องทำการส่ง object form ให้กับ ฟังก์ชั่นครับ ในการส่งค่าถ้าคุณส่งจาก object submit button ก็ต้องส่้ง object form โดยอ้างจาก form properties ซึ่งเป็นคุณสมบัติภายใน object input ทุกตัวครับโดยอ้างจาก this.form
ส่วนที่ทำไมเมื่อ alert แล้ว form ยังมีการ submit อีกเนื่องจากคุณ return เป็น void ซึ่งจะทำให้เกิดการ submit อยู่ดีครับ object ที่ต้องการไม่ให้เกิด fire action นั้นต้อง return เป็น false ครับ อีกอย่างที่ text.text1.focus(); ไม่สามารถทำการ focus() ได้เนื่องจากไม่สามารถหา object ดังกล่าวได้ครับ จากเหตุด้านบนWed 28 Jun 2006 08:43:09
รบกวนอีกนิดครับ คือผมได้ไปลองทำแล้วadd ได้เรียบร้อยแล้วครับขอบคุณมากครับ ทีนี้คือ ผมอยากจะเช็คค่าที่ทำการadd ลงไปนะครับ
ว่าถ้าเกิดมีข้อมูลที่ซ้ำกันให้alertแจ้งแตือนว่ามีข้อมูลอยู่แล้วนะ รบกวนช่วยแก้เพิ่มให้ทีครับ จะขอไปดูเพื่อศึกษาใช้กับงานอื่นๆต่อไปนะครับ
test.php--------------------------------------------------------------------------
<?
$fp = fopen("mydata.txt","a");
#$text=("สวัสดีครับเจ้านาย8 \n");
if (!$_POST['text1'] == '') {
$write = fwrite($fp, $_POST['text1'] . "\r\n");
}
if (!$write) { echo "ไม่สามารถสร้างไฟล์ได้"; }
else { echo "สร้างไฟล์เรียบร้อย"; }
fclose($fp);
?>
-------------------------------------------------------------------------------------------------------
testWrite.php----------------------------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<title>Untitled Document</title>
</head>
<script language="javascript">
function ChackBox(text){
if (text.text1.value==''){
alert("ข้อความว่าง");
text.text1.focus();
return;
}
text.submit();
}
</script>
<body>
<form name="root" method="post" action="test.php">
<label>text1
<input name="text1" type="text" id="text1">
</label>
<br>
<br>
<label></label>
<br>
<label>
<input type="button" name="Submit" value="Submit" onClick="ChackBox(root);">
</label>
</form>
</body>
</html>
ขอบคุณมากครับ
$isExist = false;
$lines = file("mydata.txt");
while(list($str) = each($lines)){
if($str == $_POST['text1']){
$isExist = true;
break;
}
}
if(!$isExist){
$fp = fopen("mydata.txt","a");
#$text=("สวัสดีครับเจ้านาย8 \n");
if ($_POST['text1'] != '') {
$write = fwrite($fp, $_POST['text1'] . "\r\n");
}
if (!$write) { echo "ไม่สามารถสร้างไฟล์ได้"; }
else { echo "สร้างไฟล์เรียบร้อย"; } fclose($fp);
}else{
echo "<script language=\"javascript\" type=\"text/javascript\">alert(\"มีข้อความ ".$_POST['text1']." อยู่ในฐานข้อมูลแล้ว\");</script>";
}
ประมาณนี้ครับ
Wed 28 Jun 2006 17:37:38
โทษนะครับผมได้ลองเอาโค้ดด้านบนไปลองใส่ดูแล้ว มันเช็คคำที่ผมพิมลงtextBoxนะครับ มันไม่ได้ไปเช็คในmydata.txtนะครับ รบกวนช่วยดูให้ผมทีครับ คือ ผมอยากให้ใส่codeเช็คที่ testWrite.php ก่อนส่งค่าไปtest.phpนะครับ ให้มันขึ้นalert บอก ถ้ามีคำซ้ำและให้ลบคำที่ซ้ำออกจากtextBox และให้เซ็ตโฟกัส และถ้าคำไม่ซ้ำให้มันส่งต่อไปที่ test.php เพื่อบันทึก
รบกวนด้วยนะครับ
ขอบคุณมากครับ
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<title>Untitled Document</title>
</head>
<script language="javascript">
function checkRude(obj){
var rudeWord = new Array(<? $list = file("rude_word.txt"); for($i=0; $i<count($list); $i++){ echo (($i==(count($list)-1))?"'".trim($list[$i])."'":"'".trim($list[$i])."',"); } ?>
for(i=0; i<rudeWord.length; i++){
if(obj.value == rudeWord[i]){
alert("มีคำนี้อยู่ในฐานข้อมูลอยู่แล้ว");
obj.text1.value='';
obj.text2.focus();
break;
}
}
}
</script>
<body>
<form name="root" method="post" action="test.php">
<label>text1
<input name="text1" type="text" id="text1">
</label>
<br>
<br>
<label></label>
<br>
<label>
<input type="button" name="Submit" value="Submit" onClick="heckRude(this.form.text1);">
</label>
</form>
</body>
</html>
Fri 30 Jun 2006 08:23:12
รบกวนสอบถามครับ ผมได้ลองเอาcodeด้านบนไปลองทำดูแล้ว พอกดรันแล้วเริ่มaddข้อมูล codeไม่ทำงานนะครับ
รบกวนแก้ให้ผมทีครับ คือที่ฟอร์มtestWrite.php ให้เป็นฟอร์มเช็คค่าว่างกับเช็คข้อความที่จะคีซ้ำลงฐานข้อมูล โดยที่ถ้าไม่คีอะไรเลยให้ขึ้นalertบอกว่า
ข้อความว่าง และให้เซ็ตโฟกัสให้คีใหม่ แต่ถ้าคี ข้อมูลที่ซ้ำกับฐานข้อมูล ก็ให้alert บอกว่ามีข้อมูลซ้ำในฐานข้อมูล และให้เซ็ตโฟกัสเพื่อคีใหม่
แต่ถ้ามะมีข้อมูลซ้ำก็ให้ส่งค่าไปที่ test.php เพื่อบันทึกข้อมูล ลงใน rude_word.txt
ผมได้แนบlink ตัวอย่างโปรแกรมมาให้ รบกวนช่วยดูให้ผมทีครับ http://www.root999.th.gs/web-r/oot999/testForm.rar
ขอบคุณมากครับ
<?
if(isset($_POST["text1"]) && strlen(trim($_POST["text1"]))){
$fp = fopen("rude_word.txt","a+");
$write = fwrite($fp,$_POST["text1"]."\r\n");
if (!$write) { echo "ไม่สามารถเพิ่มคำลงฐานข้อมูลได้"; }
else { echo "เพิ่มคำเรียบร้อย"; }
fclose($fp);
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<title>Untitled Document</title>
</head>
<script language="javascript">
function checkRude(obj){
<? $list = @file("rude_word.txt"); ?>
var rudeWord = new Array(<? for($i=0; $i<count($list); $i++){ echo (($i==(count($list)-1))?"'".trim($list[$i])."'":"'".trim($list[$i])."',"); } ?>
for(i=0; i<rudeWord.length; i++){
if(obj.value==rudeWord[i]){
alert("มีคำไม่เหมาะสม \""+rudeWord[i] + "\" อยู่ในฐานข้อมูลอยู่แล้ว");
obj.value='';
obj.focus();
return false;
}
}
return true;
}
</script>
<body>
<form name="root" method="post" action="test.php">
<label>text1
<input name="text1" type="text" id="text1">
</label>
<label>
<input type="submit" value="Submit" onClick="return checkRude(this.form.text1);">
</label>
</form>
</body>
</html>
ที่ทำไมถึงเพิ่มไม่ได้นั้นเนื่องจากคุณใช้ปุ่มเป็นชนิด button ทำให้เมื่อกดแล้วไม่เกิดเหตุการณ์ submit() ครับ และผมได้ทดสอบแล้วใช้งานได้ปกติครับ
Fri 30 Jun 2006 11:00:07
ขอบคุณมากครับ

















